12 m4_include(`SQLCommon.m4
')
260 -- FM Sketch Functions
261 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.big_or(bitmap1 bytea, bitmap2 bytea) CASCADE;
262 CREATE FUNCTION MADLIB_SCHEMA.big_or(bitmap1 bytea, bitmap2 bytea)
267 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__fmsketch_trans(bitmaps bytea, input anyelement) CASCADE;
268 CREATE FUNCTION MADLIB_SCHEMA.__fmsketch_trans(bitmaps bytea, input anyelement)
273 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__fmsketch_count_distinct(bitmaps bytea) CASCADE;
274 CREATE FUNCTION MADLIB_SCHEMA.__fmsketch_count_distinct(bitmaps bytea)
279 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__fmsketch_merge(bitmaps1 bytea, bitmaps2 bytea) CASCADE;
280 CREATE FUNCTION MADLIB_SCHEMA.__fmsketch_merge(bitmaps1 bytea, bitmaps2 bytea)
285 DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.fmsketch_dcount(anyelement);
291 CREATE AGGREGATE MADLIB_SCHEMA.fmsketch_dcount(/*+ column */ anyelement)
293 sfunc = MADLIB_SCHEMA.__fmsketch_trans,
295 finalfunc = MADLIB_SCHEMA.__fmsketch_count_distinct,
296 m4_ifdef(`__GREENPLUM__',`prefunc = MADLIB_SCHEMA.__fmsketch_merge,
')
301 -- CM Sketch Functions
303 -- We register __cmsketch_int8_trans for varying numbers of arguments to support
304 -- a variety of agg function signatures. The first 2 args are used to
305 -- aggregate; the remaining args are carried along unchanged inside the
306 -- return structure for the use of the UDA finalizer.
307 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__cmsketch_int8_trans(bytea, int8) CASCADE;
308 CREATE FUNCTION MADLIB_SCHEMA.__cmsketch_int8_trans(bitmaps bytea, input int8)
313 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__cmsketch_int8_trans(bytea, int8, int8) CASCADE;
314 CREATE FUNCTION MADLIB_SCHEMA.__cmsketch_int8_trans(bitmaps bytea, input int8, arg1 int8)
319 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__cmsketch_int8_trans(bytea, int8, int8, int8) CASCADE;
320 CREATE FUNCTION MADLIB_SCHEMA.__cmsketch_int8_trans(bitmaps bytea, input int8, arg1 int8, arg2 int8)
325 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__cmsketch_int8_trans(bytea, int8, int8, int8, int8) CASCADE;
326 CREATE FUNCTION MADLIB_SCHEMA.__cmsketch_int8_trans(bitmaps bytea, input int8, arg1 int8, arg2 int8, arg3 int8)
331 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__cmsketch_final(bytea) CASCADE;
332 CREATE FUNCTION MADLIB_SCHEMA.__cmsketch_final(counters bytea)
337 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__cmsketch_base64_final(bytea) CASCADE;
338 CREATE FUNCTION MADLIB_SCHEMA.__cmsketch_base64_final(sketch bytea)
341 select encode(MADLIB_SCHEMA.__cmsketch_final($1), 'base64
');
344 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__cmsketch_merge(bytea, bytea) CASCADE;
345 CREATE FUNCTION MADLIB_SCHEMA.__cmsketch_merge(bytea, bytea)
350 DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.cmsketch(int8);
357 CREATE AGGREGATE MADLIB_SCHEMA.cmsketch(/*+ column */ INT8)
359 sfunc = MADLIB_SCHEMA.__cmsketch_int8_trans,
361 finalfunc = MADLIB_SCHEMA.__cmsketch_base64_final,
362 m4_ifdef(`__GREENPLUM__', `prefunc = MADLIB_SCHEMA.__cmsketch_merge,
')
372 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.cmsketch_count(text, int8) CASCADE;
373 CREATE FUNCTION MADLIB_SCHEMA.cmsketch_count(sketches64 text, val int8)
376 PythonFunctionBodyOnly(`sketch', `countmin
')
377 # schema_madlib comes from PythonFunctionBodyOnly
378 return countmin.count(sketches64, val)
379 $$ LANGUAGE plpythonu;
389 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.cmsketch_rangecount(text, int8, int8) CASCADE;
390 CREATE FUNCTION MADLIB_SCHEMA.cmsketch_rangecount(sketches64 text, bot int8, top int8)
393 PythonFunctionBodyOnly(`sketch', `countmin
')
394 # schema_madlib comes from PythonFunctionBodyOnly
395 return countmin.rangecount(sketches64, bot, top)
396 $$ LANGUAGE plpythonu;
406 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.cmsketch_centile(text, int8, int8) CASCADE;
407 CREATE FUNCTION MADLIB_SCHEMA.cmsketch_centile(sketches64 text, centile int8, cnt int8)
410 PythonFunctionBodyOnly(`sketch', `countmin
')
411 # schema_madlib comes from PythonFunctionBodyOnly
412 return countmin.centile(sketches64, centile, cnt)
413 $$ LANGUAGE plpythonu;
422 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.cmsketch_median(text, int8) CASCADE;
423 CREATE FUNCTION MADLIB_SCHEMA.cmsketch_median(sketches64 text, cnt int8)
426 PythonFunctionBodyOnly(`sketch', `countmin
')
427 # schema_madlib comes from PythonFunctionBodyOnly
428 return countmin.centile(sketches64, 50, cnt)
429 $$ LANGUAGE plpythonu;
434 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.cmsketch_width_histogram(text, /*+ min */int8, /*+ max */int8, /*+ nbuckets */ int4) CASCADE;
435 CREATE FUNCTION MADLIB_SCHEMA.cmsketch_width_histogram(sketches64 text, themin int8, themax int8, nbuckets int4)
438 PythonFunctionBodyOnly(`sketch', `countmin
')
439 # schema_madlib comes from PythonFunctionBodyOnly
440 return countmin.width_histogram( sketches64, themin, themax, nbuckets)
441 $$ LANGUAGE plpythonu;
445 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.cmsketch_depth_histogram(text, /*+ nbuckets */ int4) CASCADE;
446 CREATE FUNCTION MADLIB_SCHEMA.cmsketch_depth_histogram(sketches64 text, nbuckets int4)
449 PythonFunctionBodyOnly(`sketch', `countmin
')
450 # schema_madlib comes from PythonFunctionBodyOnly
451 return countmin.depth_histogram(sketches64, nbuckets)
452 $$ LANGUAGE plpythonu;
454 -- MFV Sketch functions
456 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__mfvsketch_trans(bytea, anyelement, int4) CASCADE;
457 CREATE FUNCTION MADLIB_SCHEMA.__mfvsketch_trans(bytea, anyelement, int4)
462 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__mfvsketch_final(bytea) CASCADE;
463 CREATE FUNCTION MADLIB_SCHEMA.__mfvsketch_final(bytea)
468 DROP FUNCTION IF EXISTS MADLIB_SCHEMA.__mfvsketch_merge(bytea, bytea) CASCADE;
469 CREATE FUNCTION MADLIB_SCHEMA.__mfvsketch_merge(bytea, bytea)
474 CREATE FUNCTION MADLIB_SCHEMA.__sketch_rightmost_one(bytea, integer, integer)
475 RETURNS integer AS 'MODULE_PATHNAME
', 'sketch_rightmost_one
' LANGUAGE C STRICT;
477 CREATE FUNCTION MADLIB_SCHEMA.__sketch_leftmost_zero(bytea, integer, integer)
478 RETURNS integer AS 'MODULE_PATHNAME
', 'sketch_leftmost_zero
' LANGUAGE C STRICT;
480 CREATE FUNCTION MADLIB_SCHEMA.__sketch_array_set_bit_in_place(bytea, integer, integer, integer, integer)
481 RETURNS bytea AS 'MODULE_PATHNAME
', 'sketch_array_set_bit_in_place
' LANGUAGE C STRICT;
483 DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.mfvsketch_top_histogram( anyelement, int4);
490 CREATE AGGREGATE MADLIB_SCHEMA.mfvsketch_top_histogram(/*+ column */ anyelement, /*+ number_of_buckets */ int4)
492 sfunc = MADLIB_SCHEMA.__mfvsketch_trans,
494 finalfunc = MADLIB_SCHEMA.__mfvsketch_final,
498 DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.mfvsketch_quick_histogram(anyelement, int4);
503 CREATE AGGREGATE MADLIB_SCHEMA.mfvsketch_quick_histogram(/*+ column */ anyelement, /*+ number_of_buckets */ int4)
505 sfunc = MADLIB_SCHEMA.__mfvsketch_trans,
507 finalfunc = MADLIB_SCHEMA.__mfvsketch_final,
508 m4_ifdef(`__GREENPLUM__', `prefunc = MADLIB_SCHEMA.__mfvsketch_merge,
')