| /* ----------------------------------------------------------------------- *//** |
| * |
| * @file distribution.sql_in |
| * |
| * @brief SQL functions for collecting distributions |
| * |
| *//* ----------------------------------------------------------------------- */ |
| |
| m4_include(`SQLCommon.m4') |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.vectorized_distribution_transition( |
| distribution double precision[][], |
| indices integer[], |
| levels integer[] |
| ) RETURNS double precision[][] AS |
| 'MODULE_PATHNAME' |
| LANGUAGE c IMMUTABLE |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__',`NO SQL', `'); |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.vectorized_distribution_final( |
| state double precision[][] |
| ) RETURNS double precision[][] AS |
| 'MODULE_PATHNAME' |
| LANGUAGE c IMMUTABLE STRICT |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__',`NO SQL', `'); |
| |
| DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.vectorized_distribution_agg( |
| integer[], integer[]) CASCADE; |
| CREATE AGGREGATE MADLIB_SCHEMA.vectorized_distribution_agg( |
| /* indices */ integer[], |
| /* levels */ integer[] |
| ) ( |
| STYPE = double precision[][], |
| SFUNC = MADLIB_SCHEMA.vectorized_distribution_transition, |
| m4_ifdef(`__POSTGRESQL__', `', `PREFUNC = MADLIB_SCHEMA.array_add,') |
| FINALFUNC = MADLIB_SCHEMA.vectorized_distribution_final |
| -- default: INITCOND = NULL |
| ); |
| --------------------------------------------------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.discrete_distribution_transition( |
| distribution double precision[], |
| ind integer, |
| weight double precision, |
| level integer |
| ) RETURNS double precision[] AS |
| 'MODULE_PATHNAME' |
| LANGUAGE c IMMUTABLE |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__',`NO SQL', `'); |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.discrete_distribution_final( |
| state double precision[] |
| ) RETURNS double precision[] AS |
| 'MODULE_PATHNAME' |
| LANGUAGE c IMMUTABLE STRICT |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__',`NO SQL', `'); |
| |
| DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.discrete_distribution_agg( |
| integer, double precision, integer) CASCADE; |
| CREATE AGGREGATE MADLIB_SCHEMA.discrete_distribution_agg( |
| /* ind */ integer, |
| /* weight */ double precision, |
| /* level */ integer |
| ) ( |
| STYPE = double precision[], |
| SFUNC = MADLIB_SCHEMA.discrete_distribution_transition, |
| m4_ifdef(`__POSTGRESQL__', `', `PREFUNC = MADLIB_SCHEMA.array_add,') |
| FINALFUNC = MADLIB_SCHEMA.discrete_distribution_final |
| -- default: INITCOND = NULL |
| ); |
| --------------------------------------------------------------------------- |