()
| 41 | } |
| 42 | |
| 43 | func SQLDefineReplace() []string { |
| 44 | return []string{ |
| 45 | // The first 3 statements here are a work around that allows us to issue |
| 46 | // the "CREATE LANGUAGE plpsql;" statement only if the language doesn't |
| 47 | // already exist. |
| 48 | `CREATE OR REPLACE FUNCTION create_language_plpgsql() RETURNS INTEGER AS |
| 49 | $$ |
| 50 | CREATE LANGUAGE plpgsql; |
| 51 | SELECT 1; |
| 52 | $$ |
| 53 | LANGUAGE SQL;`, |
| 54 | |
| 55 | `SELECT CASE WHEN NOT |
| 56 | ( |
| 57 | SELECT TRUE AS exists |
| 58 | FROM pg_language |
| 59 | WHERE lanname = 'plpgsql' |
| 60 | UNION |
| 61 | SELECT FALSE AS exists |
| 62 | ORDER BY exists DESC |
| 63 | LIMIT 1 |
| 64 | ) |
| 65 | THEN |
| 66 | create_language_plpgsql() |
| 67 | ELSE |
| 68 | 0 |
| 69 | END AS plpgsql_created;`, |
| 70 | |
| 71 | `DROP FUNCTION create_language_plpgsql();`, |
| 72 | |
| 73 | `CREATE OR REPLACE FUNCTION replaceinto(key TEXT, value TEXT) RETURNS VOID AS |
| 74 | $$ |
| 75 | BEGIN |
| 76 | LOOP |
| 77 | UPDATE rows SET v = value WHERE k = key; |
| 78 | IF found THEN |
| 79 | RETURN; |
| 80 | END IF; |
| 81 | BEGIN |
| 82 | INSERT INTO rows(k,v) VALUES (key, value); |
| 83 | RETURN; |
| 84 | EXCEPTION WHEN unique_violation THEN |
| 85 | END; |
| 86 | END LOOP; |
| 87 | END; |
| 88 | $$ |
| 89 | LANGUAGE plpgsql;`, |
| 90 | `CREATE OR REPLACE FUNCTION replaceintometa(key TEXT, val TEXT) RETURNS VOID AS |
| 91 | $$ |
| 92 | BEGIN |
| 93 | LOOP |
| 94 | UPDATE meta SET value = val WHERE metakey = key; |
| 95 | IF found THEN |
| 96 | RETURN; |
| 97 | END IF; |
| 98 | BEGIN |
| 99 | INSERT INTO meta(metakey,value) VALUES (key, val); |
| 100 | RETURN; |
no outgoing calls
no test coverage detected