Changeset: 8be67e23a1da for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8be67e23a1da
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/SQL-dump.stable.out
clients/Tests/SQL-dump.stable.out.int128
sql/backends/monet5/sql.c
sql/backends/monet5/sql.mal
sql/include/sql_catalog.h
sql/include/sql_relation.h
sql/scripts/09_like.sql
sql/scripts/10_math.sql
sql/scripts/11_times.sql
sql/scripts/13_date.sql
sql/scripts/17_temporal.sql
sql/scripts/23_skyserver.sql
sql/scripts/24_zorder.sql
sql/scripts/27_rejects.sql
sql/scripts/41_md5sum.sql
sql/server/rel_optimizer.c
sql/server/rel_psm.c
sql/server/rel_psm.h
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_semantic.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_parser.y
sql/server/sql_privileges.c
sql/server/sql_privileges.h
sql/storage/sql_catalog.c
sql/storage/sql_storage.h
sql/storage/store.c
sql/test/BugDay_2005-11-09_2.9.3/Tests/schema_change_grant_crash.SF-963620.stable.err
sql/test/BugTracker-2010/Tests/crashonschema.Bug-2547.stable.err
sql/test/BugTracker-2013/Tests/psm_functions_and_accessrights.Bug-3300.stable.err
sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out
sql/test/Users/privs2.sql
sql/test/json/Tests/parsing.sql
sql/test/leaks/Tests/check1.stable.out
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/leaks/Tests/check2.stable.out
sql/test/leaks/Tests/check2.stable.out.int128
sql/test/leaks/Tests/check3.stable.out
sql/test/leaks/Tests/check3.stable.out.int128
sql/test/leaks/Tests/check4.stable.out
sql/test/leaks/Tests/check4.stable.out.int128
sql/test/leaks/Tests/check5.stable.out
sql/test/leaks/Tests/check5.stable.out.int128
sql/test/pg_regress/Tests/drop.stable.err
Branch: default
Log Message:
Added support for Grant/Revoke EXECUTE on FUNCTION x (.. ) to ..
Added support for drop type.
diffs (truncated from 2729 to 300 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -40092,6 +40092,10 @@ pattern sql.clear_table(sname:str,tname:
address mvc_clear_table_wrap;
comment Clear table
+pattern sql.catalog(type:int,sname:str,tname:str,impl:str):void
+address SQLcatalog;
+comment a create type catalog statement
+
pattern
sql.catalog(type:int,msname:str,mtname:str,psname:str,ptname:str,action:int):void
address SQLcatalog;
comment a alter table add/del table catalog statement
@@ -40104,6 +40108,10 @@ pattern sql.catalog(type:int,iname:str,i
address SQLcatalog;
comment a create index catalog statement
+pattern
sql.catalog(type:int,sname:str,func:int,grantee:str,privs:int,grant:int,grantor:int):void
+address SQLcatalog;
+comment a grant/revoke function privileges statement
+
pattern
sql.catalog(type:int,sname:str,tname:str,grantee:str,privs:int,cname:str,grant:int,grantor:int):void
address SQLcatalog;
comment a grant/revoke privileges statement
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -50951,6 +50951,10 @@ pattern sql.clear_table(sname:str,tname:
address mvc_clear_table_wrap;
comment Clear table
+pattern sql.catalog(type:int,sname:str,tname:str,impl:str):void
+address SQLcatalog;
+comment a create type catalog statement
+
pattern
sql.catalog(type:int,msname:str,mtname:str,psname:str,ptname:str,action:int):void
address SQLcatalog;
comment a alter table add/del table catalog statement
@@ -50963,6 +50967,10 @@ pattern sql.catalog(type:int,iname:str,i
address SQLcatalog;
comment a create index catalog statement
+pattern
sql.catalog(type:int,sname:str,func:int,grantee:str,privs:int,grant:int,grantor:int):void
+address SQLcatalog;
+comment a grant/revoke function privileges statement
+
pattern
sql.catalog(type:int,sname:str,tname:str,grantee:str,privs:int,cname:str,grant:int,grantor:int):void
address SQLcatalog;
comment a grant/revoke privileges statement
diff --git a/clients/Tests/SQL-dump.stable.out
b/clients/Tests/SQL-dump.stable.out
--- a/clients/Tests/SQL-dump.stable.out
+++ b/clients/Tests/SQL-dump.stable.out
@@ -7420,7 +7420,7 @@ CREATE TABLE "sys"."privileges" (
"grantor" INTEGER,
"grantable" INTEGER
);
-COPY 19 RECORDS INTO "sys"."privileges" FROM stdin USING DELIMITERS
'\t','\n','"';
+COPY 46 RECORDS INTO "sys"."privileges" FROM stdin USING DELIMITERS
'\t','\n','"';
2001 1 1 0 0
2007 1 1 0 0
2016 1 1 0 0
diff --git a/clients/Tests/SQL-dump.stable.out.int128
b/clients/Tests/SQL-dump.stable.out.int128
--- a/clients/Tests/SQL-dump.stable.out.int128
+++ b/clients/Tests/SQL-dump.stable.out.int128
@@ -6261,13 +6261,42 @@ CREATE TABLE "sys"."dependencies" (
"depend_id" INTEGER,
"depend_type" SMALLINT
);
-COPY 238 RECORDS INTO "sys"."dependencies" FROM stdin USING DELIMITERS
'\t','\n','"';
+COPY 328 RECORDS INTO "sys"."dependencies" FROM stdin USING DELIMITERS
'\t','\n','"';
432 5755 7
431 5755 7
1037 5755 7
432 5759 7
431 5759 7
1037 5759 7
+5764 5766 15
+5764 5770 15
+5764 5774 15
+5764 5778 15
+5764 5782 15
+5764 5786 15
+5764 5790 15
+5764 5794 15
+5764 5798 15
+5764 5802 15
+5764 5806 15
+5764 5810 15
+5764 5814 15
+5764 5818 15
+5764 5822 15
+5764 5829 15
+5864 5866 15
+5864 5870 15
+5864 5874 15
+5864 5878 15
+5864 5883 15
+5864 5887 15
+5864 5891 15
+5864 5895 15
+5864 5899 15
+5864 5903 15
+5864 5908 15
+5864 5913 15
+5864 5918 15
5923 5952 5
5933 5963 5
5923 5981 5
@@ -6422,6 +6451,67 @@ 6225 6233 5
6235 6241 5
6267 6285 5
6305 6315 5
+6652 6656 15
+6654 6656 15
+6654 6660 15
+6652 6665 15
+6642 6670 15
+6644 6675 15
+6646 6680 15
+6647 6685 15
+6649 6690 15
+6651 6695 15
+6651 6700 15
+6646 6705 15
+6652 6710 15
+6652 6714 15
+6652 6718 15
+6642 6722 15
+6652 6727 15
+6652 6731 15
+6652 6735 15
+6652 6739 15
+6652 6743 15
+6652 6747 15
+6652 6751 15
+6652 6755 15
+6652 6760 15
+6652 6765 15
+6652 6770 15
+6652 6775 15
+6652 6780 15
+6652 6785 15
+6652 6790 15
+6652 6796 15
+6652 6801 15
+6652 6807 15
+6652 6811 15
+6652 6815 15
+6652 6820 15
+6652 6825 15
+6652 6829 15
+6652 6834 15
+6652 6839 15
+6652 6844 15
+6849 6851 15
+6849 6856 15
+6849 6861 15
+6849 6866 15
+6849 6871 15
+6849 6876 15
+6849 6880 15
+6849 6896 15
+6849 6900 15
+6849 6904 15
+6849 6908 15
+6849 6912 15
+6849 6916 15
+6849 6920 15
+6849 6932 15
+6849 6944 15
+6952 6954 15
+6952 6957 15
+6952 6961 15
6985 6987 10
6985 6986 4
6990 6992 10
@@ -8151,7 +8241,7 @@ CREATE TABLE "sys"."privileges" (
"grantor" INTEGER,
"grantable" INTEGER
);
-COPY 19 RECORDS INTO "sys"."privileges" FROM stdin USING DELIMITERS
'\t','\n','"';
+COPY 46 RECORDS INTO "sys"."privileges" FROM stdin USING DELIMITERS
'\t','\n','"';
2001 1 1 0 0
2007 1 1 0 0
2016 1 1 0 0
@@ -8170,6 +8260,33 @@ 5697 1 1 0 0
5723 1 1 0 0
5726 1 1 0 0
5730 1 1 0 0
+5737 1 16 3 0
+5742 1 16 3 0
+5747 1 16 3 0
+5751 1 16 3 0
+5755 1 16 3 0
+5759 1 16 3 0
+5763 1 16 3 0
+5835 1 16 3 0
+5840 1 16 3 0
+5845 1 16 3 0
+5850 1 16 3 0
+5855 1 16 3 0
+5860 1 16 3 0
+6022 1 16 3 0
+6026 1 16 3 0
+6030 1 16 3 0
+6034 1 16 3 0
+6172 1 16 3 0
+6179 1 16 3 0
+6184 1 16 3 0
+6190 1 16 3 0
+6196 1 16 3 0
+6201 1 16 3 0
+6206 1 16 3 0
+6210 1 16 3 0
+6305 1 16 3 0
+6949 1 16 3 0
7413 1 1 3 0
COMMIT;
START TRANSACTION;
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -855,11 +855,28 @@ create_func(mvc *sql, char *sname, sql_f
if (r)
r = rel_optimizer(sql, r);
if (r) {
+ node *n;
stmt *sb = rel_bin(sql, r);
list *id_col_l = stmt_list_dependencies(sql->sa, sb,
COLUMN_DEPENDENCY);
list *id_func_l = stmt_list_dependencies(sql->sa, sb,
FUNC_DEPENDENCY);
list *view_id_l = stmt_list_dependencies(sql->sa, sb,
VIEW_DEPENDENCY);
+ if (!f->vararg && f->ops) {
+ for (n = f->ops->h; n; n = n->next) {
+ sql_arg *a = n->data;
+
+ if (a->type.type->s)
+ mvc_create_dependency(sql,
a->type.type->base.id, nf->base.id, TYPE_DEPENDENCY);
+ }
+ }
+ if (!f->varres && f->res) {
+ for (n = f->res->h; n; n = n->next) {
+ sql_arg *a = n->data;
+
+ if (a->type.type->s)
+ mvc_create_dependency(sql,
a->type.type->base.id, nf->base.id, TYPE_DEPENDENCY);
+ }
+ }
mvc_create_dependencies(sql, id_col_l, nf->base.id,
!IS_PROC(f) ? FUNC_DEPENDENCY : PROC_DEPENDENCY);
mvc_create_dependencies(sql, id_func_l, nf->base.id,
!IS_PROC(f) ? FUNC_DEPENDENCY : PROC_DEPENDENCY);
mvc_create_dependencies(sql, view_id_l, nf->base.id,
!IS_PROC(f) ? FUNC_DEPENDENCY : PROC_DEPENDENCY);
@@ -1246,13 +1263,30 @@ SQLcatalog(Client cntxt, MalBlkPtr mb, M
break;
}
case DDL_CREATE_TYPE:{
- char *impl = *getArgReference_str(stk, pci, 3);
- if (!mvc_create_type(sql, sql->session->schema, sname, 0, 0, 0,
impl))
+ char *name = *getArgReference_str(stk, pci, 3);
+ char *impl = *getArgReference_str(stk, pci, 4);
+ sql_schema *s = mvc_bind_schema(sql, sname);
+
+ if (!mvc_schema_privs(sql, sql->session->schema))
+ msg = sql_message("0D000!CREATE TYPE: not enough
privileges to create type '%s'", sname);
+ if (!mvc_create_type(sql, s, name, 0, 0, 0, impl))
msg = sql_message("0D000!CREATE TYPE: unknown external
type '%s'", impl);
break;
}
case DDL_DROP_TYPE:{
- msg = sql_message("0A000!DROP TYPE: not implemented ('%s')",
sname);
+ char *name = *getArgReference_str(stk, pci, 3);
+ int drop_action = *getArgReference_int(stk, pci, 4);
+ sql_schema *s = mvc_bind_schema(sql, sname);
+ sql_type *t = schema_bind_type( sql, s, name);
+
+ if (!t)
+ msg = sql_message("0D000!DROP TYPE: type '%s' does not
exist", sname);
+ else if (!mvc_schema_privs(sql, sql->session->schema))
+ msg = sql_message("0D000!DROP TYPE: not enough
privileges to drop type '%s'", sname);
+ else if (!drop_action && mvc_check_dependency(sql, t->base.id,
TYPE_DEPENDENCY, NULL))
+ return sql_message("42000!DROP TYPE: unable to drop
type %s (there are database objects which depend on it)\n", sname);
+ else if (!mvc_drop_type(sql, sql->session->schema, t,
drop_action))
+ msg = sql_message("0D000!DROP TYPE: failed to drop type
'%s'", sname);
break;
}
case DDL_GRANT_ROLES:{
@@ -1297,6 +1331,24 @@ SQLcatalog(Client cntxt, MalBlkPtr mb, M
msg = sql_revoke_table_privs(sql, grantee, privs,
sname, tname, cname, grant, grantor);
break;
}
+ case DDL_GRANT_FUNC:{
+ int func_id = *getArgReference_int(stk, pci, 3);
+ char *grantee = *getArgReference_str(stk, pci, 4);
+ int privs = *getArgReference_int(stk, pci, 5);
+ int grant = *getArgReference_int(stk, pci, 6);
+ int grantor = *getArgReference_int(stk, pci, 7);
+ msg = sql_grant_func_privs(sql, grantee, privs, sname, func_id,
grant, grantor);
+ break;
+ }
+ case DDL_REVOKE_FUNC:{
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list