Changeset: ea292e809f19 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ea292e809f19
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
sql/backends/monet5/mal_backend.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sqlcatalog.mal
sql/server/rel_psm.c
sql/server/rel_schema.c
sql/server/rel_sequence.c
Branch: default
Log Message:
also pass the table, function, sequence names in the mal-create* functions
diffs (truncated from 444 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
@@ -8463,19 +8463,19 @@ Ready.
[ "sqlblob", "sqlblob", "command sqlblob.sqlblob(s:str):sqlblob ",
"BLOBsqlblob_fromstr;", "" ]
[ "sqlcatalog", "alter_add_table", "pattern
sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str,
action:int):void ", "SQLalter_add_table;", "Catalog operation
alter_add_table" ]
[ "sqlcatalog", "alter_del_table", "pattern
sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str,
action:int):void ", "SQLalter_del_table;", "Catalog operation
alter_del_table" ]
-[ "sqlcatalog", "alter_seq", "pattern
sqlcatalog.alter_seq(sname:str, seq:ptr, val:lng):void ", "SQLalter_seq;",
"Catalog operation alter_seq" ]
+[ "sqlcatalog", "alter_seq", "pattern
sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:lng):void ",
"SQLalter_seq;", "Catalog operation alter_seq" ]
[ "sqlcatalog", "alter_set_table", "pattern
sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ",
"SQLalter_set_table;", "Catalog operation alter_set_table" ]
-[ "sqlcatalog", "alter_table", "pattern
sqlcatalog.alter_table(sname:str, tbl:ptr, action:int):void ",
"SQLalter_table;", "Catalog operation alter_table" ]
+[ "sqlcatalog", "alter_table", "pattern
sqlcatalog.alter_table(sname:str, tname:str, tbl:ptr, action:int):void ",
"SQLalter_table;", "Catalog operation alter_table" ]
[ "sqlcatalog", "alter_user", "pattern
sqlcatalog.alter_user(sname:str, passwrd:str, enc:int, schema:str,
oldpasswrd:str):void ", "SQLalter_user;", "Catalog operation
alter_user" ]
-[ "sqlcatalog", "create_function", "pattern
sqlcatalog.create_function(sname:str, fcn:ptr):void ", "SQLcreate_function;",
"Catalog operation create_function" ]
+[ "sqlcatalog", "create_function", "pattern
sqlcatalog.create_function(sname:str, fname:str, fcn:ptr):void ",
"SQLcreate_function;", "Catalog operation create_function" ]
[ "sqlcatalog", "create_role", "pattern
sqlcatalog.create_role(sname:str, role:str, grator:int):void ",
"SQLcreate_role;", "Catalog operation create_role" ]
[ "sqlcatalog", "create_schema", "pattern
sqlcatalog.create_schema(sname:str, auth:str, action:int):void ",
"SQLcreate_schema;", "Catalog operation create_schema" ]
-[ "sqlcatalog", "create_seq", "pattern
sqlcatalog.create_seq(sname:str, seq:ptr, action:int):void ",
"SQLcreate_seq;", "Catalog operation create_seq" ]
-[ "sqlcatalog", "create_table", "pattern
sqlcatalog.create_table(sname:str, tbl:ptr, temp:int):void ",
"SQLcreate_table;", "Catalog operation create_table" ]
+[ "sqlcatalog", "create_seq", "pattern
sqlcatalog.create_seq(sname:str, seqname:str, seq:ptr, action:int):void ",
"SQLcreate_seq;", "Catalog operation create_seq" ]
+[ "sqlcatalog", "create_table", "pattern
sqlcatalog.create_table(sname:str, tname:str, tbl:ptr, temp:int):void ",
"SQLcreate_table;", "Catalog operation create_table" ]
[ "sqlcatalog", "create_trigger", "pattern
sqlcatalog.create_trigger(sname:str, tname:str, triggername:str, time:int,
orientation:int, event:int, old:str, new:str, cond:str, qry:str):void ",
"SQLcreate_trigger;", "Catalog operation create_trigger" ]
[ "sqlcatalog", "create_type", "pattern
sqlcatalog.create_type(sname:str, nme:str, impl:str):void ",
"SQLcreate_type;", "Catalog operation create_type" ]
[ "sqlcatalog", "create_user", "pattern
sqlcatalog.create_user(sname:str, passwrd:str, enc:int, schema:str,
fullname:str):void ", "SQLcreate_user;", "Catalog operation
create_user" ]
-[ "sqlcatalog", "create_view", "pattern
sqlcatalog.create_view(sname:str, tbl:ptr, temp:int):void ",
"SQLcreate_view;", "Catalog operation create_view" ]
+[ "sqlcatalog", "create_view", "pattern
sqlcatalog.create_view(sname:str, vname:str, tbl:ptr, temp:int):void ",
"SQLcreate_view;", "Catalog operation create_view" ]
[ "sqlcatalog", "drop_constraint", "pattern
sqlcatalog.drop_constraint(sname:str, name:str, action:int):void ",
"SQLdrop_constraint;", "Catalog operation drop_constraint" ]
[ "sqlcatalog", "drop_function", "pattern
sqlcatalog.drop_function(sname:str, fname:str, fid:int, type:int,
action:int):void ", "SQLdrop_function;", "Catalog operation drop_function"
]
[ "sqlcatalog", "drop_index", "pattern
sqlcatalog.drop_index(sname:str, iname:str, action:int):void ",
"SQLdrop_index;", "Catalog operation drop_index" ]
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
@@ -10827,19 +10827,19 @@ Ready.
[ "sqlblob", "sqlblob", "command sqlblob.sqlblob(s:str):sqlblob ",
"BLOBsqlblob_fromstr;", "" ]
[ "sqlcatalog", "alter_add_table", "pattern
sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str,
action:int):void ", "SQLalter_add_table;", "Catalog operation
alter_add_table" ]
[ "sqlcatalog", "alter_del_table", "pattern
sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str,
action:int):void ", "SQLalter_del_table;", "Catalog operation
alter_del_table" ]
-[ "sqlcatalog", "alter_seq", "pattern
sqlcatalog.alter_seq(sname:str, seq:ptr, val:lng):void ", "SQLalter_seq;",
"Catalog operation alter_seq" ]
+[ "sqlcatalog", "alter_seq", "pattern
sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:lng):void ",
"SQLalter_seq;", "Catalog operation alter_seq" ]
[ "sqlcatalog", "alter_set_table", "pattern
sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ",
"SQLalter_set_table;", "Catalog operation alter_set_table" ]
-[ "sqlcatalog", "alter_table", "pattern
sqlcatalog.alter_table(sname:str, tbl:ptr, action:int):void ",
"SQLalter_table;", "Catalog operation alter_table" ]
+[ "sqlcatalog", "alter_table", "pattern
sqlcatalog.alter_table(sname:str, tname:str, tbl:ptr, action:int):void ",
"SQLalter_table;", "Catalog operation alter_table" ]
[ "sqlcatalog", "alter_user", "pattern
sqlcatalog.alter_user(sname:str, passwrd:str, enc:int, schema:str,
oldpasswrd:str):void ", "SQLalter_user;", "Catalog operation
alter_user" ]
-[ "sqlcatalog", "create_function", "pattern
sqlcatalog.create_function(sname:str, fcn:ptr):void ", "SQLcreate_function;",
"Catalog operation create_function" ]
+[ "sqlcatalog", "create_function", "pattern
sqlcatalog.create_function(sname:str, fname:str, fcn:ptr):void ",
"SQLcreate_function;", "Catalog operation create_function" ]
[ "sqlcatalog", "create_role", "pattern
sqlcatalog.create_role(sname:str, role:str, grator:int):void ",
"SQLcreate_role;", "Catalog operation create_role" ]
[ "sqlcatalog", "create_schema", "pattern
sqlcatalog.create_schema(sname:str, auth:str, action:int):void ",
"SQLcreate_schema;", "Catalog operation create_schema" ]
-[ "sqlcatalog", "create_seq", "pattern
sqlcatalog.create_seq(sname:str, seq:ptr, action:int):void ",
"SQLcreate_seq;", "Catalog operation create_seq" ]
-[ "sqlcatalog", "create_table", "pattern
sqlcatalog.create_table(sname:str, tbl:ptr, temp:int):void ",
"SQLcreate_table;", "Catalog operation create_table" ]
+[ "sqlcatalog", "create_seq", "pattern
sqlcatalog.create_seq(sname:str, seqname:str, seq:ptr, action:int):void ",
"SQLcreate_seq;", "Catalog operation create_seq" ]
+[ "sqlcatalog", "create_table", "pattern
sqlcatalog.create_table(sname:str, tname:str, tbl:ptr, temp:int):void ",
"SQLcreate_table;", "Catalog operation create_table" ]
[ "sqlcatalog", "create_trigger", "pattern
sqlcatalog.create_trigger(sname:str, tname:str, triggername:str, time:int,
orientation:int, event:int, old:str, new:str, cond:str, qry:str):void ",
"SQLcreate_trigger;", "Catalog operation create_trigger" ]
[ "sqlcatalog", "create_type", "pattern
sqlcatalog.create_type(sname:str, nme:str, impl:str):void ",
"SQLcreate_type;", "Catalog operation create_type" ]
[ "sqlcatalog", "create_user", "pattern
sqlcatalog.create_user(sname:str, passwrd:str, enc:int, schema:str,
fullname:str):void ", "SQLcreate_user;", "Catalog operation
create_user" ]
-[ "sqlcatalog", "create_view", "pattern
sqlcatalog.create_view(sname:str, tbl:ptr, temp:int):void ",
"SQLcreate_view;", "Catalog operation create_view" ]
+[ "sqlcatalog", "create_view", "pattern
sqlcatalog.create_view(sname:str, vname:str, tbl:ptr, temp:int):void ",
"SQLcreate_view;", "Catalog operation create_view" ]
[ "sqlcatalog", "drop_constraint", "pattern
sqlcatalog.drop_constraint(sname:str, name:str, action:int):void ",
"SQLdrop_constraint;", "Catalog operation drop_constraint" ]
[ "sqlcatalog", "drop_function", "pattern
sqlcatalog.drop_function(sname:str, fname:str, fid:int, type:int,
action:int):void ", "SQLdrop_function;", "Catalog operation drop_function"
]
[ "sqlcatalog", "drop_index", "pattern
sqlcatalog.drop_index(sname:str, iname:str, action:int):void ",
"SQLdrop_index;", "Catalog operation drop_index" ]
diff --git a/sql/backends/monet5/mal_backend.c
b/sql/backends/monet5/mal_backend.c
--- a/sql/backends/monet5/mal_backend.c
+++ b/sql/backends/monet5/mal_backend.c
@@ -18,6 +18,7 @@ backend_reset(backend *b)
b->vtop = 0;
b->q = NULL;
+ b->mb = NULL;
b->mvc_var = 0;
b->output_format = OFMT_CSV;
return b;
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -4552,7 +4552,7 @@ rel2bin_seq(backend *be, sql_rel *rel, l
{
mvc *sql = be->mvc;
node *en = rel->exps->h;
- stmt *restart, *sname, *seq, *sl = NULL;
+ stmt *restart, *sname, *seq, *seqname, *sl = NULL;
list *l = sa_list(sql->sa);
if (rel->l) /* first construct the sub relation */
@@ -4560,10 +4560,12 @@ rel2bin_seq(backend *be, sql_rel *rel, l
restart = exp_bin(be, en->data, sl, NULL, NULL, NULL, NULL, NULL);
sname = exp_bin(be, en->next->data, sl, NULL, NULL, NULL, NULL, NULL);
- seq = exp_bin(be, en->next->next->data, sl, NULL, NULL, NULL, NULL,
NULL);
+ seqname = exp_bin(be, en->next->next->data, sl, NULL, NULL, NULL, NULL,
NULL);
+ seq = exp_bin(be, en->next->next->next->data, sl, NULL, NULL, NULL,
NULL, NULL);
(void)refs;
append(l, sname);
+ append(l, seqname);
append(l, seq);
append(l, restart);
return stmt_catalog(be, rel->flag, stmt_list(be, l));
@@ -4611,17 +4613,24 @@ rel2bin_catalog_table(backend *be, sql_r
mvc *sql = be->mvc;
node *en = rel->exps->h;
stmt *action = exp_bin(be, en->data, NULL, NULL, NULL, NULL, NULL,
NULL);
- stmt *table = NULL, *sname;
+ stmt *table = NULL, *sname, *tname = NULL;
list *l = sa_list(sql->sa);
(void)refs;
en = en->next;
sname = exp_bin(be, en->data, NULL, NULL, NULL, NULL, NULL, NULL);
en = en->next;
+ if (en) {
+ tname = exp_bin(be, en->data, NULL, NULL, NULL, NULL, NULL,
NULL);
+ en = en->next;
+ }
if (en)
table = exp_bin(be, en->data, NULL, NULL, NULL, NULL, NULL,
NULL);
append(l, sname);
- append(l, table);
+ assert(tname);
+ append(l, tname);
+ if (rel->flag != DDL_DROP_TABLE && rel->flag !=
DDL_DROP_TABLE_IF_EXISTS && rel->flag != DDL_DROP_VIEW && rel->flag !=
DDL_DROP_VIEW_IF_EXISTS && rel->flag != DDL_DROP_CONSTRAINT)
+ append(l, table);
append(l, action);
return stmt_catalog(be, rel->flag, stmt_list(be, l));
}
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
@@ -275,13 +275,14 @@ SQLshutdown_wrap(Client cntxt, MalBlkPtr
}
str
-create_table_or_view(mvc *sql, char *sname, sql_table *t, int temp)
+create_table_or_view(mvc *sql, char *sname, char *tname, sql_table *t, int
temp)
{
sql_allocator *osa;
sql_schema *s = mvc_bind_schema(sql, sname);
sql_table *nt = NULL;
node *n;
+ (void)tname;
if (STORE_READONLY)
return sql_error(sql, 06, "25006!schema statements cannot be
executed on a readonly database.");
@@ -404,7 +405,7 @@ create_table_from_emit(Client cntxt, cha
goto cleanup;
}
}
- msg = create_table_or_view(sql, sname, t, 0);
+ msg = create_table_or_view(sql, sname, t->base.name, t, 0);
if (msg != MAL_SUCCEED) {
goto cleanup;
}
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -147,7 +147,7 @@ sql5_export str sql_dense_rank(bat *rid,
sql5_export str SQLidentity(oid *rid, const void *i);
sql5_export str BATSQLidentity(bat *rid, const bat *bid);
sql5_export str PBATSQLidentity(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
-sql5_export str create_table_or_view(mvc *sql, char *sname, sql_table *t, int
temp);
+sql5_export str create_table_or_view(mvc *sql, char *sname, char *tname,
sql_table *t, int temp);
sql5_export str create_table_from_emit(Client cntxt, char *sname, char *tname,
sql_emit_col *columns, size_t ncols);
sql5_export str bte_dec_round_wrap(bte *res, const bte *v, const bte *r);
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -376,10 +376,11 @@ drop_index(Client cntxt, mvc *sql, char
}
static str
-create_seq(mvc *sql, char *sname, sql_sequence *seq)
+create_seq(mvc *sql, char *sname, char *seqname, sql_sequence *seq)
{
sql_schema *s = NULL;
+ (void)seqname;
if (sname && !(s = mvc_bind_schema(sql, sname)))
return sql_message("3F000!CREATE SEQUENCE: no such schema
'%s'", sname);
if (s == NULL)
@@ -394,11 +395,12 @@ create_seq(mvc *sql, char *sname, sql_se
}
static str
-alter_seq(mvc *sql, char *sname, sql_sequence *seq, lng *val)
+alter_seq(mvc *sql, char *sname, char *seqname, sql_sequence *seq, lng *val)
{
sql_schema *s = NULL;
sql_sequence *nseq = NULL;
+ (void)seqname;
if (sname && !(s = mvc_bind_schema(sql, sname)))
return sql_message("3F000!ALTER SEQUENCE: no such schema '%s'",
sname);
if (s == NULL)
@@ -489,7 +491,7 @@ drop_func(mvc *sql, char *sname, char *n
}
static char *
-create_func(mvc *sql, char *sname, sql_func *f)
+create_func(mvc *sql, char *sname, char *fname, sql_func *f)
{
sql_func *nf;
sql_schema *s = NULL;
@@ -498,6 +500,7 @@ create_func(mvc *sql, char *sname, sql_f
char *F = is_aggr ? "AGGREGATE" : (is_func ? "FUNCTION" : "PROCEDURE");
char *KF = f->type == F_FILT ? "FILTER " : f->type == F_UNION ? "UNION
" : "";
+ (void)fname;
if (sname && !(s = mvc_bind_schema(sql, sname)))
return sql_message("3F000!CREATE %s%s: no such schema '%s'",
KF, F, sname);
if (!s)
@@ -685,7 +688,8 @@ UPGcreate_func(Client cntxt, MalBlkPtr m
mvc *sql = NULL;
str msg = MAL_SUCCEED;
str sname = *getArgReference_str(stk, pci, 1), osname;
- str func = *getArgReference_str(stk, pci, 2);
+ str fname = *getArgReference_str(stk, pci, 2);
+ str func = *getArgReference_str(stk, pci, 3);
stmt *s;
backend *be;
@@ -700,7 +704,7 @@ UPGcreate_func(Client cntxt, MalBlkPtr m
char *schema =
((stmt*)s->op1->op4.lval->h->data)->op4.aval->data.val.sval;
sql_func *func =
(sql_func*)((stmt*)s->op1->op4.lval->t->data)->op4.aval->data.val.pval;
- msg = create_func(sql, schema, func);
+ msg = create_func(sql, schema, fname, func);
mvc_set_schema(sql, osname);
} else {
mvc_set_schema(sql, osname);
@@ -732,7 +736,7 @@ UPGcreate_view(Client cntxt, MalBlkPtr m
sql_table *v =
(sql_table*)((stmt*)s->op1->op4.lval->h->next->data)->op4.aval->data.val.pval;
int temp =
((stmt*)s->op1->op4.lval->t->data)->op4.aval->data.val.ival;
- msg = create_table_or_view(sql, schema, v, temp);
+ msg = create_table_or_view(sql, schema, v->base.name, v, temp);
mvc_set_schema(sql, osname);
} else {
mvc_set_schema(sql, osname);
@@ -747,10 +751,11 @@ SQLcreate_seq(Client cntxt, MalBlkPtr mb
{ mvc *sql = NULL;
str msg;
str sname = *getArgReference_str(stk, pci, 1);
- sql_sequence *s = *(sql_sequence **) getArgReference(stk, pci, 2);
+ str seqname = *getArgReference_str(stk, pci, 2);
+ sql_sequence *s = *(sql_sequence **) getArgReference(stk, pci, 3);
initcontext();
- msg = create_seq(sql, sname, s);
+ msg = create_seq(sql, sname, seqname, s);
return msg;
}
@@ -759,16 +764,17 @@ SQLalter_seq(Client cntxt, MalBlkPtr mb,
{ mvc *sql = NULL;
str msg;
str sname = *getArgReference_str(stk, pci, 1);
+ str seqname = *getArgReference_str(stk, pci, 2);
+ sql_sequence *s = *(sql_sequence **) getArgReference(stk, pci, 3);
lng *val = NULL;
- sql_sequence *s = *(sql_sequence **) getArgReference(stk, pci, 2);
initcontext();
- if (getArgType(mb, pci, 3) == TYPE_lng)
- val = getArgReference_lng(stk, pci, 3);
+ if (getArgType(mb, pci, 4) == TYPE_lng)
+ val = getArgReference_lng(stk, pci, 4);
if (val == NULL || *val == lng_nil)
msg = sql_message("42M36!ALTER SEQUENCE: cannot (re)start with
NULL");
else
- msg = alter_seq(sql, sname, s, val);
+ msg = alter_seq(sql, sname, seqname, s, val);
return msg;
}
@@ -846,11 +852,12 @@ SQLcreate_table(Client cntxt, MalBlkPtr
{ mvc *sql = NULL;
str msg;
str sname = *getArgReference_str(stk, pci, 1);
- sql_table *t = *(sql_table **) getArgReference(stk, pci, 2);
- int temp = *getArgReference_int(stk, pci, 3);
+ str tname = *getArgReference_str(stk, pci, 2);
+ sql_table *t = *(sql_table **) getArgReference(stk, pci, 3);
+ int temp = *getArgReference_int(stk, pci, 4);
initcontext();
- msg = create_table_or_view(sql, sname, t, temp);
+ msg = create_table_or_view(sql, sname, tname, t, temp);
return msg;
}
@@ -859,11 +866,12 @@ SQLcreate_view(Client cntxt, MalBlkPtr m
{ mvc *sql = NULL;
str msg;
str sname = *getArgReference_str(stk, pci, 1);
- sql_table *t = *(sql_table **) getArgReference(stk, pci, 2);
- int temp = *getArgReference_int(stk, pci, 3);
+ str vname = *getArgReference_str(stk, pci, 2);
+ sql_table *t = *(sql_table **) getArgReference(stk, pci, 3);
+ int temp = *getArgReference_int(stk, pci, 4);
initcontext();
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list