21 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__to_char
26 AS
'MODULE_PATHNAME',
'dt_to_text'
27 LANGUAGE C STRICT IMMUTABLE;
43 CREATE or replace FUNCTION MADLIB_SCHEMA.__regclass_to_text
52 $$ LANGUAGE PLPGSQL IMMUTABLE;
67 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__format
73 AS
'MODULE_PATHNAME',
'dt_text_format'
88 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__format
97 SELECT MADLIB_SCHEMA.__format($1, ARRAY[$2, $3, $4, $5]);
98 $$ LANGUAGE sql IMMUTABLE;
111 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__format
119 SELECT MADLIB_SCHEMA.__format($1, ARRAY[$2, $3, $4]);
120 $$ LANGUAGE sql IMMUTABLE;
132 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__format
139 SELECT MADLIB_SCHEMA.__format($1, ARRAY[$2, $3]);
140 $$ LANGUAGE sql IMMUTABLE;
151 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__format
157 SELECT MADLIB_SCHEMA.__format($1, ARRAY[$2]);
158 $$ LANGUAGE sql IMMUTABLE;
168 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__assert
175 IF (NOT condition) THEN
176 RAISE EXCEPTION
'ERROR: %', reason;
179 $$ LANGUAGE PLPGSQL IMMUTABLE;
188 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__table_exists
193 'MODULE_PATHNAME',
'table_exists'
194 LANGUAGE C IMMUTABLE;
205 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__column_exists
207 full_table_name TEXT,
210 RETURNS BOOLEAN AS $$
215 PERFORM MADLIB_SCHEMA.__assert
217 (full_table_name IS NOT NULL) AND (column_name IS NOT NULL),
218 'the table name and column name must not be null'
221 IF (MADLIB_SCHEMA.__table_exists(full_table_name)) THEN
222 SELECT MADLIB_SCHEMA.__format
225 FROM pg_catalog.pg_attribute
227 (NOT attisdropped) AND
229 attrelid = ''%''::regclass',
236 EXECUTE curstmt INTO result;
243 $$ LANGUAGE PLPGSQL STABLE;
252 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__assert_table
254 full_table_name TEXT,
262 err_msg = 'assertion failure. Table: ''' || full_table_name ||
265 err_msg = 'assertion failure. Table: ''' || full_table_name ||
269 PERFORM MADLIB_SCHEMA.__assert
271 MADLIB_SCHEMA.__table_exists(full_table_name) = existence,
275 $$ LANGUAGE PLPGSQL STABLE;
286 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__strip_schema_name
294 PERFORM MADLIB_SCHEMA.__assert
296 full_table_name IS NOT NULL,
297 'table name should not be null'
301 str_val = trim(both ' ' FROM split_part(full_table_name, '.', 2));
303 IF (length(str_val) = 0) THEN
304 str_val = btrim(full_table_name, ' ');
307 RETURN lower(str_val);
309 $$ LANGUAGE PLPGSQL IMMUTABLE;
327 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__get_schema_name
339 PERFORM MADLIB_SCHEMA.__assert
341 full_table_name IS NOT NULL,
342 'table name should not be null'
345 temp = string_to_array(full_table_name, '.');
346 len = array_upper(temp, 1);
349 -- if table exists, return the schema name from catalog
350 IF (MADLIB_SCHEMA.__table_exists(full_table_name)) THEN
352 FROM pg_catalog.pg_namespace n
355 SELECT relnamespace FROM pg_catalog.pg_class
356 WHERE oid= full_table_name::regclass
361 -- get the current schema name
362 schema_name = current_schema();
365 PERFORM MADLIB_SCHEMA.__assert
368 'wrong full table name<' || full_table_name || '>'
370 -- get the shema name directly
371 schema_name = lower(btrim(temp[1], ' '));
388 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__array_search
393 RETURNS BOOLEAN AS $$
397 SELECT unnest($2) as elem
399 WHERE $1 IS NOT DISTINCT FROM elem
400 $$ LANGUAGE sql IMMUTABLE;
412 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__columns_in_table
417 RETURNS BOOLEAN AS $$
423 SELECT quote_ident(attname)
425 WHERE attrelid = $2::regclass AND
429 $$ LANGUAGE sql STABLE;
440 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__num_of_columns
445 SELECT count(attname)::INT
447 WHERE attrelid = $1::regclass AND
450 $$ LANGUAGE sql STABLE;
466 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__csvstr_to_array
476 ret = string_to_array(lower(btrim(csv_str, ' ')), ',');
478 -- if the input array is NULL or an empty one,
479 -- then we return NULL directly
480 -- (array_upper will return non-NULL otherwise)
481 IF (array_upper(ret, 1) IS NULL) THEN
485 -- null or empty array will be filtered
486 FOR index IN 1..array_upper(ret, 1) LOOP
487 ret[index] = quote_ident(btrim(ret[index], ' '));
492 $$ LANGUAGE PLPGSQL IMMUTABLE;
510 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__array_elem_in
515 RETURNS BOOLEAN[] AS $$
516 SELECT
array_agg(elem in (SELECT unnest($1)))
519 SELECT unnest($2) as elem
521 $$ LANGUAGE sql IMMUTABLE;
533 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__array_sort
537 RETURNS ANYARRAY AS $$
539 (SELECT elem FROM unnest($1) elem ORDER BY elem LIMIT ALL)
540 $$ LANGUAGE sql IMMUTABLE;