Changeset: b4c1102176a4 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/b4c1102176a4 Modified Files: clients/mapiclient/dump.c sql/test/testdb/Tests/dump.stable.out sql/test/testdb/Tests/load.test Branch: Jan2022 Log Message:
Implemented dumping of global grants (i.e. COPY INTO and COPY FROM). diffs (71 lines): diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -2614,6 +2614,19 @@ dump_database(Mapi mid, stream *toConsol "AND NOT f.system " "AND p.grantable = go.id " "ORDER BY s.name, f.name, a.name, g.name, p.grantable"; + const char *global_grants = + "SELECT a.name, pc.grnt, g.name, go.opt " + "FROM sys.privileges p, " + "sys.auths a, " + "sys.auths g, " + "(VALUES (0, 'COPY INTO'), (1, 'COPY FROM')) AS pc (id, grnt), " + "(VALUES (0, ''), (1, ' WITH GRANT OPTION')) AS go (id, opt) " + "WHERE p.obj_id = 0 " + "AND p.auth_id = a.id " + "AND p.grantor = g.id " + "AND p.privileges = pc.id " + "AND p.grantable = go.id " + "ORDER BY a.name, g.name, go.opt"; const char *schemas = "SELECT s.name, a.name, rem.remark " "FROM sys.schemas s LEFT OUTER JOIN sys.comments rem ON s.id = rem.id, " @@ -2856,6 +2869,23 @@ dump_database(Mapi mid, stream *toConsol if (mapi_error(mid)) goto bailout; mapi_close_handle(hdl); + + /* grant global privileges */ + if ((hdl = mapi_query(mid, global_grants)) == NULL || mapi_error(mid)) + goto bailout; + + while (mapi_fetch_row(hdl) != 0) { + const char *uname = mapi_fetch_field(hdl, 0); + const char *grant = mapi_fetch_field(hdl, 1); + //const char *gname = mapi_fetch_field(hdl, 2); + const char *grantable = mapi_fetch_field(hdl, 3); + mnstr_printf(toConsole, "GRANT %s TO ", grant); + dquoted_print(toConsole, uname, grantable); + mnstr_printf(toConsole, ";\n"); + } + if (mapi_error(mid)) + goto bailout; + mapi_close_handle(hdl); } else { mnstr_printf(toConsole, "SET SCHEMA "); dquoted_print(toConsole, sname, ";\n"); diff --git a/sql/test/testdb/Tests/dump.stable.out b/sql/test/testdb/Tests/dump.stable.out --- a/sql/test/testdb/Tests/dump.stable.out +++ b/sql/test/testdb/Tests/dump.stable.out @@ -3,6 +3,7 @@ CREATE USER "testuser" WITH ENCRYPTED PA CREATE SCHEMA "testschema" AUTHORIZATION "testuser"; COMMENT ON SCHEMA "testschema" IS 'a schema used for testing'; ALTER USER "testuser" SET SCHEMA "testschema"; +GRANT COPY FROM TO "testuser"; CREATE SEQUENCE "testschema"."selfref_seq" AS INTEGER; COMMENT ON SEQUENCE "testschema"."selfref_seq" IS 'sequence number for selfref table'; CREATE SEQUENCE "testschema"."test_seq" AS INTEGER; diff --git a/sql/test/testdb/Tests/load.test b/sql/test/testdb/Tests/load.test --- a/sql/test/testdb/Tests/load.test +++ b/sql/test/testdb/Tests/load.test @@ -14,6 +14,9 @@ statement ok ALTER USER "testuser" SET SCHEMA "testschema" statement ok +GRANT COPY FROM TO testuser + +statement ok SET SCHEMA "testschema" statement ok _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org