Changeset: 6ba39f731bf9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/6ba39f731bf9 Branch: default Log Message:
Merged with Jan2022 diffs (truncated from 1172 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 @@ -9258,7 +9258,6 @@ [ "shp", "attach", "unsafe pattern shp.attach(X_0:str):void ", "SHPattach;", "Register an ESRI Shapefile in the vault catalog" ] [ "shp", "import", "unsafe pattern shp.import(X_0:int):void ", "SHPimport;", "Import an ESRI Shapefile with given id into the vault" ] [ "shp", "import", "unsafe pattern shp.import(X_0:int, X_1:wkb):void ", "SHPpartialimport;", "Partially import an ESRI Shapefile with given id into the vault" ] -[ "sql", "abort", "unsafe pattern sql.abort():void ", "SQLabort;", "Trigger the abort operation for a MAL block" ] [ "sql", "affectedRows", "unsafe pattern sql.affectedRows(X_0:int, X_1:lng):int ", "mvc_affected_rows_wrap;", "export the number of affected rows by the current query" ] [ "sql", "all", "pattern sql.all(X_0:bit, X_1:bit, X_2:bit):bit ", "SQLall_cmp;", "if !cmp then false, (nl or nr) then nil, else true" ] [ "sql", "alpha", "command sql.alpha(X_0:dbl, X_1:dbl):dbl ", "SQLcst_alpha_cst;", "Implementation of astronomy alpha function: expands the radius theta depending on the declination" ] @@ -9293,7 +9292,6 @@ [ "sql", "bind_idxbat", "pattern sql.bind_idxbat(X_0:int, X_1:str, X_2:str, X_3:str, X_4:int, X_5:int, X_6:int):bat[:any_1] ", "mvc_bind_idxbat_wrap;", "Bind the 'schema.table.index' BAT with access kind:\n0 - base table\n1 - inserts\n2 - updates" ] [ "sql", "claim", "unsafe pattern sql.claim(X_0:int, X_1:str, X_2:str, X_3:lng) (X_4:oid, X_5:bat[:oid]) ", "mvc_claim_wrap;", "Claims slots for appending rows." ] [ "sql", "clear_table", "unsafe pattern sql.clear_table(X_0:str, X_1:str):lng ", "mvc_clear_table_wrap;", "Clear the table sname.tname." ] -[ "sql", "commit", "unsafe pattern sql.commit():void ", "SQLcommit;", "Trigger the commit operation for a MAL block" ] [ "sql", "copy_from", "unsafe pattern sql.copy_from(X_0:ptr, X_1:str, X_2:str, X_3:str, X_4:str, X_5:str, X_6:lng, X_7:lng, X_8:int, X_9:str, X_10:int, X_11:int):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \ngiven tuple and seperators (sep/rsep)" ] [ "sql", "copy_rejects", "pattern sql.copy_rejects() (X_0:bat[:lng], X_1:bat[:int], X_2:bat[:str], X_3:bat[:str]) ", "COPYrejects;", "" ] [ "sql", "copy_rejects_clear", "unsafe pattern sql.copy_rejects_clear():void ", "COPYrejects_clear;", "" ] @@ -9461,8 +9459,6 @@ [ "sql", "suspend_log_flushing", "unsafe pattern sql.suspend_log_flushing():void ", "SQLsuspend_log_flushing;", "Suspend WAL log flushing" ] [ "sql", "tid", "pattern sql.tid(X_0:int, X_1:str, X_2:str):bat[:oid] ", "SQLtid;", "Return a column with the valid tuple identifiers associated with the table sname.tname." ] [ "sql", "tid", "pattern sql.tid(X_0:int, X_1:str, X_2:str, X_3:int, X_4:int):bat[:oid] ", "SQLtid;", "Return the tables tid column." ] -[ "sql", "transaction", "unsafe pattern sql.transaction():void ", "SQLtransaction2;", "Start an autocommit transaction" ] -[ "sql", "transaction", "unsafe pattern sql.transaction():void ", "SQLtransaction2;", "Start an autocommit transaction" ] [ "sql", "transaction_begin", "unsafe pattern sql.transaction_begin(X_0:int, X_1:str):void ", "SQLtransaction_begin;", "A transaction statement (type can be commit,release,rollback or start)" ] [ "sql", "transaction_commit", "unsafe pattern sql.transaction_commit(X_0:int, X_1:str):void ", "SQLtransaction_commit;", "A transaction statement (type can be commit,release,rollback or start)" ] [ "sql", "transaction_release", "unsafe pattern sql.transaction_release(X_0:int, X_1:str):void ", "SQLtransaction_release;", "A transaction statement (type can be commit,release,rollback or start)" ] 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 @@ -12558,7 +12558,6 @@ [ "shp", "attach", "unsafe pattern shp.attach(X_0:str):void ", "SHPattach;", "Register an ESRI Shapefile in the vault catalog" ] [ "shp", "import", "unsafe pattern shp.import(X_0:int):void ", "SHPimport;", "Import an ESRI Shapefile with given id into the vault" ] [ "shp", "import", "unsafe pattern shp.import(X_0:int, X_1:wkb):void ", "SHPpartialimport;", "Partially import an ESRI Shapefile with given id into the vault" ] -[ "sql", "abort", "unsafe pattern sql.abort():void ", "SQLabort;", "Trigger the abort operation for a MAL block" ] [ "sql", "affectedRows", "unsafe pattern sql.affectedRows(X_0:int, X_1:lng):int ", "mvc_affected_rows_wrap;", "export the number of affected rows by the current query" ] [ "sql", "all", "pattern sql.all(X_0:bit, X_1:bit, X_2:bit):bit ", "SQLall_cmp;", "if !cmp then false, (nl or nr) then nil, else true" ] [ "sql", "alpha", "command sql.alpha(X_0:dbl, X_1:dbl):dbl ", "SQLcst_alpha_cst;", "Implementation of astronomy alpha function: expands the radius theta depending on the declination" ] @@ -12595,7 +12594,6 @@ [ "sql", "bind_idxbat", "pattern sql.bind_idxbat(X_0:int, X_1:str, X_2:str, X_3:str, X_4:int, X_5:int, X_6:int):bat[:any_1] ", "mvc_bind_idxbat_wrap;", "Bind the 'schema.table.index' BAT with access kind:\n0 - base table\n1 - inserts\n2 - updates" ] [ "sql", "claim", "unsafe pattern sql.claim(X_0:int, X_1:str, X_2:str, X_3:lng) (X_4:oid, X_5:bat[:oid]) ", "mvc_claim_wrap;", "Claims slots for appending rows." ] [ "sql", "clear_table", "unsafe pattern sql.clear_table(X_0:str, X_1:str):lng ", "mvc_clear_table_wrap;", "Clear the table sname.tname." ] -[ "sql", "commit", "unsafe pattern sql.commit():void ", "SQLcommit;", "Trigger the commit operation for a MAL block" ] [ "sql", "copy_from", "unsafe pattern sql.copy_from(X_0:ptr, X_1:str, X_2:str, X_3:str, X_4:str, X_5:str, X_6:lng, X_7:lng, X_8:int, X_9:str, X_10:int, X_11:int):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \ngiven tuple and seperators (sep/rsep)" ] [ "sql", "copy_rejects", "pattern sql.copy_rejects() (X_0:bat[:lng], X_1:bat[:int], X_2:bat[:str], X_3:bat[:str]) ", "COPYrejects;", "" ] [ "sql", "copy_rejects_clear", "unsafe pattern sql.copy_rejects_clear():void ", "COPYrejects_clear;", "" ] @@ -12778,8 +12776,6 @@ [ "sql", "suspend_log_flushing", "unsafe pattern sql.suspend_log_flushing():void ", "SQLsuspend_log_flushing;", "Suspend WAL log flushing" ] [ "sql", "tid", "pattern sql.tid(X_0:int, X_1:str, X_2:str):bat[:oid] ", "SQLtid;", "Return a column with the valid tuple identifiers associated with the table sname.tname." ] [ "sql", "tid", "pattern sql.tid(X_0:int, X_1:str, X_2:str, X_3:int, X_4:int):bat[:oid] ", "SQLtid;", "Return the tables tid column." ] -[ "sql", "transaction", "unsafe pattern sql.transaction():void ", "SQLtransaction2;", "Start an autocommit transaction" ] -[ "sql", "transaction", "unsafe pattern sql.transaction():void ", "SQLtransaction2;", "Start an autocommit transaction" ] [ "sql", "transaction_begin", "unsafe pattern sql.transaction_begin(X_0:int, X_1:str):void ", "SQLtransaction_begin;", "A transaction statement (type can be commit,release,rollback or start)" ] [ "sql", "transaction_commit", "unsafe pattern sql.transaction_commit(X_0:int, X_1:str):void ", "SQLtransaction_commit;", "A transaction statement (type can be commit,release,rollback or start)" ] [ "sql", "transaction_release", "unsafe pattern sql.transaction_release(X_0:int, X_1:str):void ", "SQLtransaction_release;", "A transaction statement (type can be commit,release,rollback or start)" ] diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -2389,17 +2389,16 @@ dump_database(Mapi mid, stream *toConsol "WHERE sch.id = seq.schema_id " "ORDER BY sch.name, seq.name"; const char *sequences2 = - "SELECT s.name, " - "seq.name, " - "peak_next_value_for(s.name, seq.name), " - "seq.\"minvalue\", " - "seq.\"maxvalue\", " - "seq.\"increment\", " - "seq.\"cycle\" " - "FROM sys.sequences seq, " - "sys.schemas s " - "WHERE s.id = seq.schema_id " - "ORDER BY s.name, seq.name"; + "SELECT " + "sch, " + "seq, " + "rs, " + "rmi, " + "rma, " + "inc, " + "cycle " + "FROM sys.describe_sequences " + "ORDER BY sch, seq"; /* we must dump tables, views, functions/procedures and triggers in order of creation since they can refer to each other */ const char *tables_views_functions_triggers = "with vft (sname, name, id, query, remark, type) AS (" @@ -2874,6 +2873,8 @@ dump_database(Mapi mid, stream *toConsol if (sname != NULL && strcmp(schema, sname) != 0) continue; + // sleep(7); + mnstr_printf(toConsole, "ALTER SEQUENCE "); dquoted_print(toConsole, schema, "."); @@ -2881,9 +2882,9 @@ dump_database(Mapi mid, stream *toConsol mnstr_printf(toConsole, " RESTART WITH %s", restart); if (strcmp(increment, "1") != 0) mnstr_printf(toConsole, " INCREMENT BY %s", increment); - if (strcmp(minvalue, "0") != 0) + if (minvalue) mnstr_printf(toConsole, " MINVALUE %s", minvalue); - if (strcmp(maxvalue, "0") != 0) + if (maxvalue) mnstr_printf(toConsole, " MAXVALUE %s", maxvalue); mnstr_printf(toConsole, " %sCYCLE;\n", strcmp(cycle, "true") == 0 ? "" : "NO "); if (mnstr_errnr(toConsole)) { diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c --- a/monetdb5/mal/mal_module.c +++ b/monetdb5/mal/mal_module.c @@ -274,11 +274,13 @@ void freeModule(Module m) if ((s = findSymbolInModule(m, "epilogue")) != NULL) { InstrPtr pci = getInstrPtr(s->def,0); if (pci && pci->token == COMMANDsymbol && pci->argc == 1) { - int ret = 0; + int status = 0; + str ret = MAL_SUCCEED; assert(pci->fcn != NULL); - (*pci->fcn)(&ret); - (void)ret; + ret = (*pci->fcn)(&status); + freeException(ret); + (void)status; } } freeSubScope(m); diff --git a/sql/backends/monet5/rel_predicates.c b/sql/backends/monet5/rel_predicates.c --- a/sql/backends/monet5/rel_predicates.c +++ b/sql/backends/monet5/rel_predicates.c @@ -117,7 +117,7 @@ rel_find_predicates(visitor *v, sql_rel sql_rel * rel_predicates(backend *be, sql_rel *rel) { - if (be->mvc->session->level < tr_serializable) + if ((be->mvc->session->level & tr_snapshot) == tr_snapshot) return rel; visitor v = { .sql = be->mvc }; rel = rel_visitor_topdown(&v, rel, &rel_find_predicates); @@ -127,7 +127,7 @@ rel_predicates(backend *be, sql_rel *rel int add_column_predicate(backend *be, sql_column *c) { - if (be->mvc->session->level < tr_serializable || isNew(c) || !isGlobal(c->t) || isGlobalTemp(c->t)) + if ((be->mvc->session->level & tr_snapshot) == tr_snapshot || isNew(c) || !isGlobal(c->t) || isGlobalTemp(c->t)) return LOG_OK; return sql_trans_add_predicate(be->mvc->session->tr, c, 0, NULL, NULL, false, false); } 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 @@ -226,43 +226,6 @@ SQLmvc(Client cntxt, MalBlkPtr mb, MalSt return MAL_SUCCEED; } -str -SQLcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) -{ - mvc *sql = NULL; - str msg; - (void) stk; - (void) pci; - - if ((msg = getSQLContext(cntxt, mb, &sql, NULL)) != NULL) - return msg; - if ((msg = checkSQLContext(cntxt)) != NULL) - return msg; - - if (sql->session->auto_commit != 0) - throw(SQL, "sql.trans", SQLSTATE(2DM30) "COMMIT not allowed in auto commit mode"); - return mvc_commit(sql, 0, 0, false); -} - -str -SQLabort(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) -{ - mvc *sql = NULL; - str msg; - (void) stk; - (void) pci; - - if ((msg = getSQLContext(cntxt, mb, &sql, NULL)) != NULL) - return msg; - if ((msg = checkSQLContext(cntxt)) != NULL) - return msg; - - if (sql->session->tr->active) { - msg = mvc_rollback(sql, 0, NULL, false); - } - return msg; -} - static str SQLshutdown_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { @@ -5091,9 +5054,6 @@ static mel_func sql_init_funcs[] = { pattern("sql", "shutdown", SQLshutdown_wrap, true, "", args(1,2, arg("",str),arg("delay",int))), pattern("sql", "set_protocol", SQLset_protocol, true, "Configures the result set protocol", args(1,2, arg("",int), arg("protocol",int))), pattern("sql", "mvc", SQLmvc, false, "Get the multiversion catalog context. \nNeeded for correct statement dependencies\n(ie sql.update, should be after sql.bind in concurrent execution)", args(1,1, arg("",int))), - pattern("sql", "transaction", SQLtransaction2, true, "Start an autocommit transaction", noargs), - pattern("sql", "commit", SQLcommit, true, "Trigger the commit operation for a MAL block", noargs), - pattern("sql", "abort", SQLabort, true, "Trigger the abort operation for a MAL block", noargs), pattern("sql", "eval", SQLstatement, true, "Compile and execute a single sql statement", args(1,2, arg("",void),arg("cmd",str))), pattern("sql", "eval", SQLstatement, true, "Compile and execute a single sql statement (and optionaly set the output to columnar format)", args(1,3, arg("",void),arg("cmd",str),arg("columnar",bit))), pattern("sql", "include", SQLinclude, true, "Compile and execute a sql statements on the file", args(1,2, arg("",void),arg("fname",str))), @@ -6004,7 +5964,6 @@ static mel_func sql_init_funcs[] = { pattern("sql", "transaction_commit", SQLtransaction_commit, true, "A transaction statement (type can be commit,release,rollback or start)", args(1,3, arg("",void),arg("chain",int),arg("name",str))), pattern("sql", "transaction_rollback", SQLtransaction_rollback, true, "A transaction statement (type can be commit,release,rollback or start)", args(1,3, arg("",void),arg("chain",int),arg("name",str))), pattern("sql", "transaction_begin", SQLtransaction_begin, true, "A transaction statement (type can be commit,release,rollback or start)", args(1,3, arg("",void),arg("chain",int),arg("name",str))), - pattern("sql", "transaction", SQLtransaction2, true, "Start an autocommit transaction", noargs), #ifdef HAVE_HGE /* sql_hge */ command("calc", "dec_round", hge_dec_round_wrap, false, "round off the value v to nearests multiple of r", args(1,3, arg("",hge),arg("v",hge),arg("r",hge))), 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 @@ -58,9 +58,6 @@ extern BAT *mvc_bind(mvc *m, const char extern BAT *mvc_bind_idxbat(mvc *m, const char *sname, const char *tname, const char *iname, int access); extern str SQLmvc(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -extern str SQLcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -extern str SQLabort(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -extern str SQLtransaction2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); extern str mvc_grow_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); extern str mvc_claim_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); diff --git a/sql/backends/monet5/sql_cast.c b/sql/backends/monet5/sql_cast.c --- a/sql/backends/monet5/sql_cast.c +++ b/sql/backends/monet5/sql_cast.c @@ -200,7 +200,7 @@ SQLstr_cast(Client cntxt, MalBlkPtr mb, #define SQLstr_cast_str(v, digits) \ if (digits > 0 && UTF8_strlen(v) > digits) { \ msg = createException(SQL, "batcalc.str_cast", SQLSTATE(22001) "value too long for type (var)char(%d)", digits); \ - goto bailout; \ + goto bailout1; \ } /* str SQLbatstr_cast(int *res, int *eclass, int *d1, int *s1, int *has_tz, int *bid, int *digits); */ diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -222,7 +222,7 @@ SQLepilogue(void *ret) if (!res) res = msab_retreatScenario(s); if (res != NULL) { - char *err = createException(MAL, "sql.start", "%s", res); + char *err = createException(MAL, "sql.epilogue", "%s", res); free(res); return err; } diff --git a/sql/backends/monet5/sql_transaction.c b/sql/backends/monet5/sql_transaction.c --- a/sql/backends/monet5/sql_transaction.c +++ b/sql/backends/monet5/sql_transaction.c @@ -120,36 +120,3 @@ SQLtransaction_begin(Client cntxt, MalBl } return MAL_SUCCEED; } - -str -SQLtransaction2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) -{ - mvc *sql = NULL; - str msg; - - (void) stk; - (void) pci; - - if ((msg = getSQLContext(cntxt, mb, &sql, NULL)) != NULL) - return msg; - if ((msg = checkSQLContext(cntxt)) != NULL) - return msg; - if (sql->session->auto_commit == 0) - throw(SQL, "sql.trans", SQLSTATE(25001) "START TRANSACTION: cannot start a transaction within a transaction"); - if (sql->session->tr->active) - msg = mvc_rollback(sql, 0, NULL, false); - sql->session->auto_commit = 0; - sql->session->ac_on_commit = 1; - sql->session->level = 0; - if (msg) - return msg; - switch (mvc_trans(sql)) { - case -1: - throw(SQL, "sql.trans", SQLSTATE(HY013) MAL_MALLOC_FAIL); - case -3: - throw(SQL, "sql.trans", SQLSTATE(42000) "The session's schema was not found, this transaction won't start"); - default: - break; - } - return MAL_SUCCEED; -} 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 @@ -2774,7 +2774,27 @@ sql_update_jul2021(Client c, mvc *sql, c " s.name as sch,\n" " seq.name as seq,\n" " seq.\"start\" s,\n" - " sys.peak_next_value_for(s.name, seq.name) AS rs,\n" + " sys.get_value_for(s.name, seq.name) AS rs,\n" _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list