12 m4_include(`SQLCommon.m4
')
41 CREATE FUNCTION MADLIB_SCHEMA.norm1(
43 ) RETURNS DOUBLE PRECISION
55 CREATE FUNCTION MADLIB_SCHEMA.norm2(
57 ) RETURNS DOUBLE PRECISION
70 CREATE FUNCTION MADLIB_SCHEMA.dist_norm1(
73 ) RETURNS DOUBLE PRECISION
86 CREATE FUNCTION MADLIB_SCHEMA.dist_norm2(
89 ) RETURNS DOUBLE PRECISION
102 CREATE FUNCTION MADLIB_SCHEMA.squared_dist_norm2(
103 x DOUBLE PRECISION[],
105 ) RETURNS DOUBLE PRECISION
119 CREATE FUNCTION MADLIB_SCHEMA.dist_angle(
120 x DOUBLE PRECISION[],
122 ) RETURNS DOUBLE PRECISION
137 CREATE FUNCTION MADLIB_SCHEMA.dist_tanimoto(
138 x DOUBLE PRECISION[],
140 ) RETURNS DOUBLE PRECISION
147 * @brief closest_column return type
149 CREATE TYPE MADLIB_SCHEMA.closest_column_result AS (
151 distance DOUBLE PRECISION
174 CREATE FUNCTION MADLIB_SCHEMA.closest_column(
175 M DOUBLE PRECISION[][],
176 x DOUBLE PRECISION[],
178 ) RETURNS MADLIB_SCHEMA.closest_column_result
182 AS 'MODULE_PATHNAME
';
184 CREATE FUNCTION MADLIB_SCHEMA.closest_column(
185 M DOUBLE PRECISION[][],
187 ) RETURNS MADLIB_SCHEMA.closest_column_result
192 SELECT MADLIB_SCHEMA.closest_column($1, $2,
193 'MADLIB_SCHEMA.squared_dist_norm2
')
197 * @brief closest_columns return type
199 CREATE TYPE MADLIB_SCHEMA.closest_columns_result AS (
200 column_ids INTEGER[],
201 distances DOUBLE PRECISION[]
220 CREATE FUNCTION MADLIB_SCHEMA.closest_columns(
221 M DOUBLE PRECISION[][],
222 x DOUBLE PRECISION[],
225 ) RETURNS MADLIB_SCHEMA.closest_columns_result
229 AS 'MODULE_PATHNAME
';
231 CREATE FUNCTION MADLIB_SCHEMA.closest_columns(
232 M DOUBLE PRECISION[][],
233 x DOUBLE PRECISION[],
235 ) RETURNS MADLIB_SCHEMA.closest_columns_result
240 SELECT MADLIB_SCHEMA.closest_columns($1, $2, $3,
241 'MADLIB_SCHEMA.squared_dist_norm2
')
244 CREATE FUNCTION MADLIB_SCHEMA.avg_vector_transition(
245 state DOUBLE PRECISION[],
247 ) RETURNS DOUBLE PRECISION[]
251 AS 'MODULE_PATHNAME
';
253 CREATE FUNCTION MADLIB_SCHEMA.avg_vector_merge(
254 state_left DOUBLE PRECISION[],
255 state_right DOUBLE PRECISION[]
256 ) RETURNS DOUBLE PRECISION[]
260 AS 'MODULE_PATHNAME
';
262 CREATE FUNCTION MADLIB_SCHEMA.avg_vector_final(
263 state DOUBLE PRECISION[]
264 ) RETURNS DOUBLE PRECISION[]
268 AS 'MODULE_PATHNAME
';
279 CREATE AGGREGATE MADLIB_SCHEMA.avg(
280 /*+ x */ DOUBLE PRECISION[]
282 STYPE=DOUBLE PRECISION[],
283 SFUNC=MADLIB_SCHEMA.avg_vector_transition,
284 m4_ifdef(`__GREENPLUM__', `PREFUNC=MADLIB_SCHEMA.avg_vector_merge,
')
285 FINALFUNC=MADLIB_SCHEMA.avg_vector_final,
289 CREATE FUNCTION MADLIB_SCHEMA.normalized_avg_vector_transition(
290 state DOUBLE PRECISION[],
292 ) RETURNS DOUBLE PRECISION[]
296 AS 'MODULE_PATHNAME
';
298 CREATE FUNCTION MADLIB_SCHEMA.normalized_avg_vector_final(
299 state DOUBLE PRECISION[]
300 ) RETURNS DOUBLE PRECISION[]
304 AS 'MODULE_PATHNAME
';
317 CREATE AGGREGATE MADLIB_SCHEMA.normalized_avg(
318 /*+ x */ DOUBLE PRECISION[]
320 STYPE=DOUBLE PRECISION[],
321 SFUNC=MADLIB_SCHEMA.normalized_avg_vector_transition,
322 m4_ifdef(`__GREENPLUM__', `PREFUNC=MADLIB_SCHEMA.avg_vector_merge,
')
323 FINALFUNC=MADLIB_SCHEMA.normalized_avg_vector_final,
327 CREATE FUNCTION MADLIB_SCHEMA.matrix_agg_transition(
328 state DOUBLE PRECISION[],
330 ) RETURNS DOUBLE PRECISION[]
334 AS 'MODULE_PATHNAME
';
336 CREATE FUNCTION MADLIB_SCHEMA.matrix_agg_final(
337 state DOUBLE PRECISION[]
338 ) RETURNS DOUBLE PRECISION[]
342 AS 'MODULE_PATHNAME
';
354 m4_ifdef(`__GREENPLUM__', m4_ifdef(`__HAS_ORDERED_AGGREGATES__
', `ORDERED'))
355 AGGREGATE MADLIB_SCHEMA.matrix_agg(
358 STYPE=DOUBLE PRECISION[],
359 SFUNC=MADLIB_SCHEMA.matrix_agg_transition,
360 FINALFUNC=MADLIB_SCHEMA.matrix_agg_final,
370 CREATE FUNCTION MADLIB_SCHEMA.matrix_column(
371 matrix DOUBLE PRECISION[][],
373 ) RETURNS DOUBLE PRECISION[]
377 AS
'MODULE_PATHNAME';