Changeset: 4cf7f79098d8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4cf7f79098d8 Added Files: sql/test/BugTracker-2018/Tests/sqlitelogictest-case-coalesce.Bug-6550.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-wrong-cast-null.Bug-6551.sql Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.h sql/backends/monet5/sql.mal sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_cat.h sql/backends/monet5/sql_upgrades.c sql/include/sql_relation.h sql/scripts/97_comments.sql sql/server/sql_mvc.c sql/server/sql_privileges.c sql/test/BugTracker-2018/Tests/All sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64 sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade/Tests/upgrade.stable.out sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 Branch: default Log Message:
Merge with Mar2018 branch. diffs (truncated from 860 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 @@ -10810,8 +10810,6 @@ Ready. [ "sql", "copy_from", "pattern sql.copy_from(t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] [ "sql", "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", "" ] [ "sql", "copy_rejects_clear", "pattern sql.copy_rejects_clear():void ", "COPYrejects_clear;", "" ] -[ "sql", "create_func_upgrade_oct2014", "pattern sql.create_func_upgrade_oct2014(sname:str, f:str):int ", "UPGcreate_func;", "Create the function described by f, needed for the Oct2014 upgrade" ] -[ "sql", "create_view_upgrade_oct2014", "pattern sql.create_view_upgrade_oct2014(sname:str, v:str):int ", "UPGcreate_view;", "Create the view described by f, needed for the Oct2014 upgrade" ] [ "sql", "createorderindex", "pattern sql.createorderindex(sch:str, tbl:str, col:str):void ", "sql_createorderindex;", "Instantiate the order index on a column" ] [ "sql", "current_time", "pattern sql.current_time():daytime ", "SQLcurrent_daytime;", "Get the clients current daytime" ] [ "sql", "current_timestamp", "pattern sql.current_timestamp():timestamp ", "SQLcurrent_timestamp;", "Get the clients current timestamp" ] @@ -10828,7 +10826,6 @@ Ready. [ "sql", "dense_rank", "pattern sql.dense_rank(b:any_1, p:bit, o:bit):int ", "SQLdense_rank;", "return the densely ranked groups" ] [ "sql", "diff", "pattern sql.diff(b:any_1):bit ", "SQLdiff;", "return true if cur != prev row" ] [ "sql", "diff", "pattern sql.diff(p:bit, b:any_1):bit ", "SQLdiff;", "return true if cur != prev row" ] -[ "sql", "drop_func_upgrade_oct2014", "pattern sql.drop_func_upgrade_oct2014(id:int):int ", "UPGdrop_func;", "Drop the function identified by id, needed for the Oct2014 upgrade" ] [ "sql", "drop_hash", "pattern sql.drop_hash(sch:str, tbl:str):void ", "SQLdrop_hash;", "Drop hash indices for the given table" ] [ "sql", "droporderindex", "pattern sql.droporderindex(sch:str, tbl:str, col:str):void ", "sql_droporderindex;", "Drop the order index on a column" ] [ "sql", "dump_cache", "pattern sql.dump_cache() (query:bat[:str], count:bat[:int]) ", "dump_cache;", "dump the content of the query cache" ] 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 @@ -15021,8 +15021,6 @@ Ready. [ "sql", "copy_from", "pattern sql.copy_from(t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] [ "sql", "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", "" ] [ "sql", "copy_rejects_clear", "pattern sql.copy_rejects_clear():void ", "COPYrejects_clear;", "" ] -[ "sql", "create_func_upgrade_oct2014", "pattern sql.create_func_upgrade_oct2014(sname:str, f:str):int ", "UPGcreate_func;", "Create the function described by f, needed for the Oct2014 upgrade" ] -[ "sql", "create_view_upgrade_oct2014", "pattern sql.create_view_upgrade_oct2014(sname:str, v:str):int ", "UPGcreate_view;", "Create the view described by f, needed for the Oct2014 upgrade" ] [ "sql", "createorderindex", "pattern sql.createorderindex(sch:str, tbl:str, col:str):void ", "sql_createorderindex;", "Instantiate the order index on a column" ] [ "sql", "current_time", "pattern sql.current_time():daytime ", "SQLcurrent_daytime;", "Get the clients current daytime" ] [ "sql", "current_timestamp", "pattern sql.current_timestamp():timestamp ", "SQLcurrent_timestamp;", "Get the clients current timestamp" ] @@ -15040,7 +15038,6 @@ Ready. [ "sql", "dense_rank", "pattern sql.dense_rank(b:any_1, p:bit, o:bit):int ", "SQLdense_rank;", "return the densely ranked groups" ] [ "sql", "diff", "pattern sql.diff(b:any_1):bit ", "SQLdiff;", "return true if cur != prev row" ] [ "sql", "diff", "pattern sql.diff(p:bit, b:any_1):bit ", "SQLdiff;", "return true if cur != prev row" ] -[ "sql", "drop_func_upgrade_oct2014", "pattern sql.drop_func_upgrade_oct2014(id:int):int ", "UPGdrop_func;", "Drop the function identified by id, needed for the Oct2014 upgrade" ] [ "sql", "drop_hash", "pattern sql.drop_hash(sch:str, tbl:str):void ", "SQLdrop_hash;", "Drop hash indices for the given table" ] [ "sql", "droporderindex", "pattern sql.droporderindex(sch:str, tbl:str, col:str):void ", "sql_droporderindex;", "Drop the order index on a column" ] [ "sql", "dump_cache", "pattern sql.dump_cache() (query:bat[:str], count:bat[:int]) ", "dump_cache;", "dump the content of the query cache" ] 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 @@ -5335,20 +5335,10 @@ rel_deps(sql_allocator *sa, sql_rel *r, if (r->r) return rel_deps(sa, r->r, refs, l); } else if (r->flag == DDL_PSM) { - exps_deps(sa, r->exps, refs, l); + break; } else if (r->flag <= DDL_ALTER_SEQ) { if (r->l) return rel_deps(sa, r->l, refs, l); - } else if (r->flag <= DDL_DROP_SEQ) { - exps_deps(sa, r->exps, refs, l); - } else if (r->flag <= DDL_TRANS) { - exps_deps(sa, r->exps, refs, l); - } else if (r->flag <= DDL_DROP_SCHEMA) { - exps_deps(sa, r->exps, refs, l); - } else if (r->flag <= DDL_ALTER_TABLE) { - exps_deps(sa, r->exps, refs, l); - } else if (r->flag <= DDL_ALTER_TABLE_SET_ACCESS) { - exps_deps(sa, r->exps, refs, l); } break; } 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 @@ -95,10 +95,6 @@ sql5_export str mvc_declared_table_colum sql5_export str mvc_drop_declared_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str mvc_drop_declared_tables_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -sql5_export str UPGdrop_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -sql5_export str UPGcreate_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -sql5_export str UPGcreate_view(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); - sql5_export str mvc_affected_rows_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str mvc_export_result_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str mvc_export_head_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal --- a/sql/backends/monet5/sql.mal +++ b/sql/backends/monet5/sql.mal @@ -264,18 +264,6 @@ unsafe pattern export_table(fname:str, f address mvc_export_table_wrap comment "Prepare a table result set for the COPY INTO stream"; -pattern drop_func_upgrade_oct2014(id:int) :int -address UPGdrop_func -comment "Drop the function identified by id, needed for the Oct2014 upgrade"; - -pattern create_func_upgrade_oct2014(sname:str,f:str) :int -address UPGcreate_func -comment "Create the function described by f, needed for the Oct2014 upgrade"; - -pattern create_view_upgrade_oct2014(sname:str,v:str) :int -address UPGcreate_view -comment "Create the view described by f, needed for the Oct2014 upgrade"; - unsafe pattern exportHead(s:streams, res_id:int) :void address mvc_export_head_wrap comment "Export a result (in order) to stream s"; 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 @@ -714,101 +714,6 @@ alter_table(Client cntxt, mvc *sql, char return MAL_SUCCEED; } -str -UPGdrop_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) -{ - mvc *sql = NULL; - str msg = MAL_SUCCEED; - int id = *getArgReference_int(stk, pci, 1); - sql_func *func; - - if ((msg = getSQLContext(cntxt, mb, &sql, NULL)) != NULL) - return msg; - if ((msg = checkSQLContext(cntxt)) != NULL) - return msg; - - func = sql_trans_find_func(sql->session->tr, id); - if (func) { - if(mvc_drop_func(sql, func->s, func, 0)) - throw(SQL, "sql.drop_func", SQLSTATE(HY001) MAL_MALLOC_FAIL); - } - return msg; -} - -str -UPGcreate_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) -{ - mvc *sql = NULL; - str msg = MAL_SUCCEED; - str sname = *getArgReference_str(stk, pci, 1), osname; - str fname = *getArgReference_str(stk, pci, 2); - str func = *getArgReference_str(stk, pci, 3); - stmt *s; - backend *be; - sql_allocator *sa; - - if ((msg = getSQLContext(cntxt, mb, &sql, &be)) != NULL) - return msg; - if ((msg = checkSQLContext(cntxt)) != NULL) - return msg; - osname = cur_schema(sql)->base.name; - if (!mvc_set_schema(sql, sname)) - throw(SQL,"sql.catalog", SQLSTATE(3F000) "Schema (%s) missing\n", sname); - sa = sa_create(); - if(!sa) - throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); - s = sql_parse(be, sa, func, 0); - if (s && s->type == st_catalog) { - 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, fname, func); - if (!mvc_set_schema(sql, osname)) - throw(SQL,"sql.catalog", SQLSTATE(3F000) "Schema (%s) missing\n", osname); - } else { - (void) mvc_set_schema(sql, osname); - throw(SQL, "sql.catalog", SQLSTATE(42000) "function creation failed '%s'", func); - } - return msg; -} - -str -UPGcreate_view(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) -{ - mvc *sql = NULL; - str msg = MAL_SUCCEED; - str sname = *getArgReference_str(stk, pci, 1), osname; - str view = *getArgReference_str(stk, pci, 2); - stmt *s; - backend *be; - sql_allocator *sa; - - if ((msg = getSQLContext(cntxt, mb, &sql, &be)) != NULL) - return msg; - if ((msg = checkSQLContext(cntxt)) != NULL) - return msg; - osname = cur_schema(sql)->base.name; - if (!mvc_set_schema(sql, sname)) - throw(SQL,"sql.catalog", SQLSTATE(3F000) "Schema (%s) missing\n", sname); - sa = sa_create(); - if(!sa) - throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); - s = sql_parse(be, sa, view, 0); - if (s && s->type == st_catalog) { - char *schema = ((stmt*)s->op1->op4.lval->h->data)->op4.aval->data.val.sval; - 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->base.name, v, temp); - if (!mvc_set_schema(sql, osname)) - throw(SQL,"sql.catalog", SQLSTATE(3F000) "Schema (%s) missing\n", osname); - } else { - (void) mvc_set_schema(sql, osname); - throw(SQL, "sql.catalog", SQLSTATE(42000) "view creation failed '%s'", view); - } - return msg; -} - /* the MAL wrappers */ str SQLcreate_seq(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) diff --git a/sql/backends/monet5/sql_cat.h b/sql/backends/monet5/sql_cat.h --- a/sql/backends/monet5/sql_cat.h +++ b/sql/backends/monet5/sql_cat.h @@ -65,10 +65,6 @@ sql5_export str SQLalter_del_table(Clien sql5_export str SQLalter_set_table(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str SQLcomment_on(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -sql5_export str UPGdrop_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -sql5_export str UPGcreate_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -sql5_export str UPGcreate_view(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); - #endif /* _SQL_CATALOG_H */ diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -975,6 +975,21 @@ sql_update_mar2018(Client c, mvc *sql) throw(SQL, "sql_update_mar2018", SQLSTATE(HY001) MAL_MALLOC_FAIL); s = mvc_bind_schema(sql, "sys"); + t = mvc_create_table(sql, s, "comments", tt_table, 1, SQL_PERSIST, 0, -1); + sql_column *col = mvc_create_column_(sql, t, "id", "int", 32); + sql_key *k = sql_trans_create_ukey(sql->session->tr, t, "comments_id_pkey", pkey); + k = sql_trans_create_kc(sql->session->tr, k, col); + k = sql_trans_key_done(sql->session->tr, k); + sql_trans_create_dependency(sql->session->tr, col->base.id, k->idx->base.id, INDEX_DEPENDENCY); + col = mvc_create_column_(sql, t, "remark", "varchar", 65000); + sql_trans_alter_null(sql->session->tr, col, 0); + + sql_table *privs = mvc_bind_table(sql, s, "privileges"); + int pub = ROLE_PUBLIC; + int p = PRIV_SELECT; + int zero = 0; + table_funcs.table_insert(sql->session->tr, privs, &t->base.id, &pub, &p, &zero, &zero); + pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n"); /* 21_dependency_views.sql */ @@ -1406,11 +1421,6 @@ sql_update_mar2018(Client c, mvc *sql) /* 97_comments */ pos += snprintf(buf + pos, bufsize - pos, - "CREATE TABLE sys.comments (\n" - " id INTEGER NOT NULL PRIMARY KEY,\n" - " remark VARCHAR(65000) NOT NULL\n" - ");\n" - "GRANT SELECT ON sys.comments TO PUBLIC;\n" "CREATE FUNCTION sys.function_type_keyword(ftype INT)\n" "RETURNS VARCHAR(20)\n" "BEGIN\n" diff --git a/sql/include/sql_relation.h b/sql/include/sql_relation.h --- a/sql/include/sql_relation.h +++ b/sql/include/sql_relation.h @@ -29,21 +29,21 @@ typedef enum expression_type { #define CARD_MULTI 3 typedef struct expression { - expression_type type; /* atom, cmp, func/aggr */ + expression_type type; /* atom, cmp, func/aggr */ const char *name; const char *rname; void *l; void *r; - void *f; /* func's and aggr's */ + void *f; /* func's and aggr's */ /* e_cmp may have have 2 arguments */ - int flag; /* EXP_DISTINCT, NO_NIL, ASCENDING, cmp types */ - unsigned char card; /* card + int flag; /* EXP_DISTINCT, NO_NIL, ASCENDING, cmp types */ + unsigned char card; /* card (0 truth value!) - (1 atoms) + (1 atoms) (2 aggr) (3 multi value) */ - sql_subtype tpe; + sql_subtype tpe; int used; /* used for quick dead code removal */ void *p; /* properties for the optimizer */ } sql_exp; @@ -55,15 +55,15 @@ typedef struct expression { #define LEFT_JOIN 4 -#define APPLY_JOIN 8 -#define APPLY_LOJ 16 +#define APPLY_JOIN 8 +#define APPLY_LOJ 16 #define APPLY_EXISTS 32 #define APPLY_NOTEXISTS 64 /* ASCENDING > 15 else we have problems with cmp types */ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list