1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| mydb=# CREATE OR REPLACE FUNCTION format_sql(text) RETURNS text AS $$ DECLARE v_ugly_string ALIAS FOR $1; v_beauty text; v_tmp_name text; BEGIN v_tmp_name := 'temp_' || md5(v_ugly_string); EXECUTE 'CREATE TEMPORARY VIEW ' || v_tmp_name || ' AS ' || v_ugly_string;
SELECT pg_get_viewdef(v_tmp_name) INTO v_beauty;
EXECUTE 'DROP VIEW ' || v_tmp_name; RETURN v_beauty; EXCEPTION WHEN OTHERS THEN RAISE EXCEPTION 'you have provided an invalid string: % / %', sqlstate, sqlerrm; END; $$ LANGUAGE 'plpgsql'; CREATE FUNCTION mydb=# SELECT format_sql('SELECT * FROM pg_tables UNION ALL SELECT * FROM pg_tables'); -[ RECORD 1 ] format_sql | SELECT pg_tables.schemaname,+ | pg_tables.tablename, + | pg_tables.tableowner, + | pg_tables.tablespace, + | pg_tables.hasindexes, + | pg_tables.hasrules, + | pg_tables.hastriggers, + | pg_tables.rowsecurity + | FROM pg_tables + | UNION ALL + | SELECT pg_tables.schemaname,+ | pg_tables.tablename, + | pg_tables.tableowner, + | pg_tables.tablespace, + | pg_tables.hasindexes, + | pg_tables.hasrules, + | pg_tables.hastriggers, + | pg_tables.rowsecurity + | FROM pg_tables;
mydb=#
|