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 -- [email protected]
To unsubscribe send an email to [email protected]