You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PERFORM TRUE FROM pg_tables WHERE schemaname LIKE 'pg_temp_%' AND tablename = 'pg_hba';
922
-
IF FOUND THEN
923
-
DROP TABLE pg_hba;
919
+
SELECT nspname INTO temp_schema FROM pg_namespace WHERE oid = pg_my_temp_schema();
920
+
IF temp_schema != '' THEN
921
+
PERFORM TRUE FROM pg_tables WHERE schemaname = temp_schema AND tablename = 'pg_hba';
922
+
IF FOUND THEN
923
+
DROP TABLE pg_hba;
924
+
END IF;
925
+
PERFORM TRUE FROM pg_tables WHERE schemaname = temp_schema AND tablename = 'relation_users';
926
+
IF FOUND THEN
927
+
DROP TABLE relation_users;
928
+
END IF;
924
929
END IF;
925
930
CREATE TEMPORARY TABLE pg_hba (lines TEXT);
926
931
SELECT setting INTO hba_file FROM pg_settings WHERE name = 'hba_file';
927
932
IF hba_file IS NOT NULL THEN
928
933
copy_command='COPY pg_hba FROM ''' || hba_file || '''' ;
929
934
EXECUTE copy_command;
930
935
-- Build a list of the relation users and the databases they can access.
931
-
PERFORM TRUE FROM pg_tables WHERE schemaname LIKE 'pg_temp_%' AND tablename = 'relation_users';
932
-
IF FOUND THEN
933
-
DROP TABLE relation_users;
934
-
END IF;
935
936
CREATE TEMPORARY TABLE relation_users AS
936
937
SELECT t.user, STRING_AGG(DISTINCT t.database, ',') AS databases FROM( SELECT u.usename AS user, CASE WHEN u.usesuper THEN 'all' ELSE d.datname END AS database FROM ( SELECT usename, usesuper FROM pg_catalog.pg_user WHERE usename NOT IN ('backup', 'monitoring', 'operator', 'postgres', 'replication', 'rewind')) AS u JOIN ( SELECT datname FROM pg_catalog.pg_database WHERE NOT datistemplate ) AS d ON has_database_privilege(u.usename, d.datname, 'CONNECT') ) AS t GROUP BY 1;
937
938
IF (SELECT COUNT(lines) FROM pg_hba WHERE lines LIKE 'hostssl %') > 0 THEN
0 commit comments