move everythign else out of base.sql
[migration-tools.git] / sql / base / 09-misc.sql
1
2 CREATE OR REPLACE FUNCTION migration_tools.is_blank (TEXT) RETURNS BOOLEAN AS $$
3   BEGIN
4     RETURN CASE WHEN $1 = '' THEN TRUE ELSE FALSE END;
5   END;
6 $$ LANGUAGE PLPGSQL STRICT STABLE;
7
8 DROP FUNCTION IF EXISTS migration_tools.btrim_lcolumns(TEXT,TEXT);
9 CREATE OR REPLACE FUNCTION migration_tools.btrim_lcolumns(s_name TEXT, t_name TEXT) RETURNS BOOLEAN
10  LANGUAGE plpgsql
11 AS $function$
12 DECLARE
13     c_name     TEXT;
14 BEGIN
15
16     FOR c_name IN SELECT column_name FROM information_schema.columns WHERE 
17             table_name = t_name
18             AND table_schema = s_name
19             AND (data_type='text' OR data_type='character varying')
20             AND column_name like 'l_%'
21     LOOP
22        EXECUTE FORMAT('UPDATE ' || s_name || '.' || t_name || ' SET ' || c_name || ' = BTRIM(' || c_name || ')'); 
23     END LOOP;  
24
25     RETURN TRUE;
26 END
27 $function$;
28
29 DROP FUNCTION IF EXISTS migration_tools.btrim_columns(TEXT,TEXT);
30 CREATE OR REPLACE FUNCTION migration_tools.btrim_columns(s_name TEXT, t_name TEXT) RETURNS BOOLEAN
31  LANGUAGE plpgsql
32 AS $function$
33 DECLARE
34     c_name     TEXT;
35 BEGIN
36
37     FOR c_name IN SELECT column_name FROM information_schema.columns WHERE 
38             table_name = t_name
39             AND table_schema = s_name
40             AND (data_type='text' OR data_type='character varying')
41     LOOP
42        EXECUTE FORMAT('UPDATE ' || s_name || '.' || t_name || ' SET ' || c_name || ' = BTRIM(' || c_name || ')'); 
43     END LOOP;  
44
45     RETURN TRUE;
46 END
47 $function$;
48
49 DROP FUNCTION IF EXISTS migration_tools.null_empty_lcolumns(TEXT,TEXT);
50 CREATE OR REPLACE FUNCTION migration_tools.null_empty_lcolumns(s_name TEXT, t_name TEXT) RETURNS BOOLEAN
51  LANGUAGE plpgsql
52 AS $function$
53 DECLARE
54     c_name     TEXT;
55 BEGIN
56
57     FOR c_name IN SELECT column_name FROM information_schema.columns WHERE 
58             table_name = t_name
59             AND table_schema = s_name
60             AND (data_type='text' OR data_type='character varying')
61             AND column_name like 'l_%'
62     LOOP
63        EXECUTE FORMAT('UPDATE ' || s_name || '.' || t_name || ' SET ' || c_name || ' = NULL WHERE ' || c_name || ' = '''' '); 
64     END LOOP;  
65
66     RETURN TRUE;
67 END
68 $function$;
69
70 DROP FUNCTION IF EXISTS migration_tools.null_empty_columns(TEXT,TEXT);
71 CREATE OR REPLACE FUNCTION migration_tools.null_empty_columns(s_name TEXT, t_name TEXT) RETURNS BOOLEAN
72  LANGUAGE plpgsql
73 AS $function$
74 DECLARE
75     c_name     TEXT;
76 BEGIN
77
78     FOR c_name IN SELECT column_name FROM information_schema.columns WHERE
79             table_name = t_name
80             AND table_schema = s_name
81             AND (data_type='text' OR data_type='character varying')
82     LOOP
83        EXECUTE FORMAT('UPDATE ' || s_name || '.' || t_name || ' SET ' || c_name || ' = NULL WHERE ' || c_name || ' = '''' ');
84     END LOOP;
85
86     RETURN TRUE;
87 END
88 $function$;