@ScalarFunction(value = "noisy_empty_approx_set_sfm", deterministic = false)
    @Description("an SfmSketch object representing an empty set")
    @SqlType(SfmSketchType.NAME)
    public static Slice emptyApproxSet(@SqlType(StandardTypes.DOUBLE) double epsilon,
            @SqlType(StandardTypes.BIGINT) long numberOfBuckets,
            @SqlType(StandardTypes.BIGINT) long precision)
    {
        SfmSketchAggregationUtils.validateSketchParameters(epsilon, (int) numberOfBuckets, (int) precision);
        SfmSketch sketch = SfmSketch.create((int) numberOfBuckets, (int) precision);
        sketch.enablePrivacy(epsilon);
        return sketch.serialize();
    }
@Test
    public void testEmptyApproxSet()
    {
        // with no privacy (epsilon = infinity), an empty approx set should return 0 cardinality
        assertFunction("cardinality(noisy_empty_approx_set_sfm(infinity()))", BIGINT, 0L);
        assertFunction("cardinality(noisy_empty_approx_set_sfm(infinity(), 4096))", BIGINT, 0L);
        assertFunction("cardinality(noisy_empty_approx_set_sfm(infinity(), 4096, 24))", BIGINT, 0L);
    }