44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/test_prof/any_fixture/dump/postgresql.rb', line 44
def setup_env
quoted_functions = UUID_FUNCTIONS.map { |func| "'#{func}'" }.join(", ")
@uuid_funcs = execute <<~SQL
SELECT
pp.proname, pn.nspname,
pg_get_functiondef(pp.oid) AS definition
FROM pg_proc pp
JOIN pg_namespace pn
ON pn.oid = pp.pronamespace
WHERE pp.proname in (#{quoted_functions})
ORDER BY pp.oid;
SQL
uuid_funcs.each do |(func, ns, _)|
execute <<~SQL
CREATE OR REPLACE FUNCTION #{ns}.#{func}()
RETURNS UUID
LANGUAGE SQL
AS $$
SELECT md5(random()::TEXT)::UUID;
$$; -- any_fixture:dump
SQL
end
execute <<~SQL
SELECT setseed(#{rand}); -- any_fixture:dump
SQL
end
|