MonetDB: Jan2022 - Jump to the right label
Changeset: 309bb2701763 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/309bb2701763 Modified Files: sql/backends/monet5/sql_cast.c Branch: Jan2022 Log Message: Jump to the right label diffs (12 lines): 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); */ ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2022 - Added test for bug #7201 It is fixed on the J...
Changeset: ba0eb1f21443 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/ba0eb1f21443 Added Files: sql/test/BugTracker-2021/Tests/unique-idx.Bug-7201.test Modified Files: sql/test/BugTracker-2021/Tests/All Branch: Jan2022 Log Message: Added test for bug #7201 It is fixed on the Jan2022 branch, but leave the test there diffs (68 lines): diff --git a/sql/test/BugTracker-2021/Tests/All b/sql/test/BugTracker-2021/Tests/All --- a/sql/test/BugTracker-2021/Tests/All +++ b/sql/test/BugTracker-2021/Tests/All @@ -34,3 +34,4 @@ groupby-subquery.Bug-7180 grouping-sets-aliases.Bug-7185 copyinto-copyfrom.Bug-7186 concurrent-add-column.Bug-7196 +unique-idx.Bug-7201 diff --git a/sql/test/BugTracker-2021/Tests/unique-idx.Bug-7201.test b/sql/test/BugTracker-2021/Tests/unique-idx.Bug-7201.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2021/Tests/unique-idx.Bug-7201.test @@ -0,0 +1,55 @@ +statement ok +START TRANSACTION + +statement ok +CREATE TABLE T1 (x1 int NOT NULL, x2 int NOT NULL, y int NOT NULL) + +statement ok +CREATE INDEX T1_x1_x2 ON T1 (x1, x2) + +statement ok +CREATE INDEX T1_x2 ON T1 (x2) + +statement ok +CREATE TABLE T2 (x1 int NOT NULL, x2 int NOT NULL, z int NOT NULL) + +statement ok +CREATE INDEX T2_x1_x2 ON T2 (x1, x2) + +statement ok rowcount 2 +INSERT INTO T1 VALUES (1, 0, 1), (1, 2, 1) + +statement ok rowcount 2 +INSERT INTO T2 VALUES (1, 0, 3), (1, 2, 100) + +query I rowsort +SELECT T1.*, T2.x1 as t2_x1, z +FROM T1 +LEFT JOIN T2 ON T1.x1 = T2.x1 AND T1.x2 = T2.x2 +WHERE 10 <= T2.z OR T2.z IS NULL + +1 +2 +1 +1 +100 + +query I rowsort +SELECT * +FROM ( +SELECT T1.*, T2.x1 as t2_x1, z +FROM T1 +LEFT JOIN T2 ON T1.x1 = T2.x1 AND T1.x2 = T2.x2 +WHERE 10 <= T2.z OR T2.z IS NULL +) T +WHERE T.x1 = 1 + +1 +2 +1 +1 +100 + +statement ok +ROLLBACK + ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2022 - Added test and fix for bug #7202 With distinc...
Changeset: 1fc3c8aa1f5c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1fc3c8aa1f5c Added Files: sql/test/BugTracker-2021/Tests/distinct-with-orderby.Bug-7202.test Modified Files: sql/server/rel_select.c sql/test/BugTracker-2021/Tests/All sql/test/analytics/Tests/analytics10.test sql/test/emptydb/Tests/check.SQL.py sql/test/miscellaneous/Tests/groupby_expressions.test sql/test/prepare/Tests/sqlancer_prepare.stable.err sql/test/prepare/Tests/sqlancer_prepare.stable.err.int128 Branch: Jan2022 Log Message: Added test and fix for bug #7202 With distinct the ordering columns must match the projection list, otherwise it is not computable diffs (188 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -4380,7 +4380,7 @@ rel_partition_groupings(sql_query *query /* find selection expressions matching the order by column expression */ /* complex columns only */ static sql_exp * -rel_order_by_column_exp(sql_query *query, sql_rel **R, symbol *column_r, int f) +rel_order_by_column_exp(sql_query *query, sql_rel **R, symbol *column_r, int needs_distinct, int f) { mvc *sql = query->sql; sql_rel *r = *R, *p = NULL; @@ -4390,7 +4390,7 @@ rel_order_by_column_exp(sql_query *query if (!r) return e; - if (r && is_simple_project(r->op) && is_processed(r)) { + if (is_simple_project(r->op) && is_processed(r)) { p = r; r = r->l; } @@ -4405,6 +4405,8 @@ rel_order_by_column_exp(sql_query *query if (is_project(p->op) && (found = exps_any_match(p->exps, e))) { /* if one of the projections matches, return a reference to it */ e = exp_ref(sql, found); } else { + if (needs_distinct) + return sql_error(sql, 02, SQLSTATE(42000) "SELECT: with DISTINCT ORDER BY expressions must appear in select list"); e = rel_project_add_exp(sql, p, e); for (node *n = p->exps->h ; n ; n = n->next) { sql_exp *ee = n->data; @@ -4422,6 +4424,8 @@ rel_order_by_column_exp(sql_query *query sql_exp *found = exps_find_exp(r->exps, e); if (!found) { + if (needs_distinct) + return sql_error(sql, 02, SQLSTATE(42000) "SELECT: with DISTINCT ORDER BY expressions must appear in select list"); append(r->exps, e); } else { e = found; @@ -4446,7 +4450,7 @@ simple_selection(symbol *sq) } static list * -rel_order_by(sql_query *query, sql_rel **R, symbol *orderby, int f) +rel_order_by(sql_query *query, sql_rel **R, symbol *orderby, int needs_distinct, int f) { mvc *sql = query->sql; sql_rel *rel = *R, *or = rel; /* the order by relation */ @@ -4504,6 +4508,8 @@ rel_order_by(sql_query *query, sql_rel * sql_exp *found = exps_find_exp(rel->exps, e); if (!found) { + if (needs_distinct) + return sql_error(sql, 02, SQLSTATE(42000) "SELECT: with DISTINCT ORDER BY expressions must appear in select list"); append(rel->exps, e); } else { e = found; @@ -4517,8 +4523,7 @@ rel_order_by(sql_query *query, sql_rel * sql->session->status = 0; sql->errstr[0] = '\0'; - if (!e) - e = rel_order_by_column_exp(query, &rel, col, sql_sel | sql_orderby | (f & sql_group_totals)); + e = rel_order_by_column_exp(query, &rel, col, needs_distinct, sql_sel | sql_orderby | (f & sql_group_totals)); } if (!e) return NULL; @@ -4794,7 +4799,7 @@ rel_rankop(sql_query *query, sql_rel **r /* Order By */ if (order_by_clause) { - obe = rel_order_by(query, &p, order_by_clause, nf | sql_window); + obe = rel_order_by(query, &p, order_by_clause, 0, nf | sql_window); if (!obe) return NULL; } @@ -5484,7 +5489,7 @@ rel_having_limits_nodes(sql_query *query } rel = rel_orderby(sql, rel); set_processed(rel); - obe = rel_order_by(query, &rel, sn->orderby, sql_orderby | group_totals); + obe = rel_order_by(query, &rel, sn->orderby, sn->distinct != NULL, sql_orderby | group_totals); i
MonetDB: Jan2022 - Compilation fix
Changeset: 273af244f990 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/273af244f990 Modified Files: sql/server/rel_select.c Branch: Jan2022 Log Message: Compilation fix diffs (12 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -5489,7 +5489,7 @@ rel_having_limits_nodes(sql_query *query } rel = rel_orderby(sql, rel); set_processed(rel); - obe = rel_order_by(query, &rel, sn->orderby, sn->distinct != NULL, sql_orderby | group_totals); + obe = rel_order_by(query, &rel, sn->orderby, sn->distinct, sql_orderby | group_totals); if (!obe) return NULL; rel->r = obe; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
monetdb-java: default - Restored test to outputs before Jul2021,...
Changeset: f4181beae53d for monetdb-java URL: https://dev.monetdb.org/hg/monetdb-java/rev/f4181beae53d Modified Files: tests/JDBC_API_Tester.java Branch: default Log Message: Restored test to outputs before Jul2021, after fixing bug #7200 diffs (65 lines): diff --git a/tests/JDBC_API_Tester.java b/tests/JDBC_API_Tester.java --- a/tests/JDBC_API_Tester.java +++ b/tests/JDBC_API_Tester.java @@ -3572,14 +3572,11 @@ final public class JDBC_API_Tester { private void BugConcurrent_sequences(String arg0) { sb.setLength(0);// clear the output log buffer - boolean isPostOct2020 = false; Connection con1 = null, con2 = null; Statement stmt1 = null, stmt2 = null; ResultSet rs1 = null, rs2 = null; try { con1 = DriverManager.getConnection(arg0); - DatabaseMetaData dbmd = con1.getMetaData(); - isPostOct2020 = (dbmd.getDatabaseMajorVersion() >=11) && (dbmd.getDatabaseMinorVersion() > 39); con2 = DriverManager.getConnection(arg0); stmt1 = con1.createStatement(); stmt2 = con2.createStatement(); @@ -3616,13 +3613,13 @@ final public class JDBC_API_Tester { sb.append("passed :)\n"); sb.append("2.1. check table status with client 1...\n"); - rs1 = stmt1.executeQuery("SELECT * FROM tconc_seq"); + rs1 = stmt1.executeQuery("SELECT * FROM tconc_seq ORDER BY id"); while (rs1.next()) sb.append(rs1.getInt("id")).append(", ").append(rs1.getString("who")).append("\n"); sb.append("passed :)\n"); sb.append("2.2. check table status with client 2...\n"); - rs2 = stmt2.executeQuery("SELECT * FROM tconc_seq"); + rs2 = stmt2.executeQuery("SELECT * FROM tconc_seq ORDER BY id"); while (rs2.next()) sb.append(rs2.getInt("id")).append(", ").append(rs2.getString("who")).append("\n"); sb.append("passed :)\n"); @@ -3640,30 +3637,6 @@ final public class JDBC_API_Tester { } compareExpectedOutput("BugConcurrent_sequences", - isPostOct2020 ? - "0. truetrue\n" + - "0. truetrue\n" + - "1. create table tconc_seq using client 1... passed :)\n" + - "2. insert into tconc_seq using client 1 and 2... client 1 passed :)\n" + - "transaction on client 2 :)\n" + - "client 1 passed :)\n" + - "transaction client 2 passed :)\n" + - "passed :)\n" + - "2.1. check table status with client 1...\n" + - "1, client1\n" + - "2, client2\n" + - "3, client1\n" + - "4, client2\n" + - "passed :)\n" + - "2.2. check table status with client 2...\n" + - "1, client1\n" + - "2, client2\n" + - "3, client1\n" + - "4, client2\n" + - "passed :)\n" + - "3.1. drop table tconc_seq using client 1... passed :)\n" + - "3.1. recreate tconc_seq using client 1... passed :)\n" - : // behavior of older MonetDB versions (up to Oct2020 release) was different "0. truetrue\n" + "0. truetrue\n" + "1. create table tconc_seq using client 1... passed :)\n" + ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jul2021 - Fix for bug #7200 ie clean some old macros an...
Changeset: 3443fd016b5c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3443fd016b5c Added Files: sql/test/BugTracker-2021/Tests/serializable-snapshot.Bug-7200.SQL.py Modified Files: sql/backends/monet5/rel_predicates.c sql/include/sql_catalog.h sql/server/rel_schema.c sql/server/rel_trans.c sql/storage/store.c sql/test/BugTracker-2021/Tests/All Branch: Jul2021 Log Message: Fix for bug #7200 ie clean some old macros and give errors on transaction features not yet supported diffs (163 lines): 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/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -16,12 +16,12 @@ #include "stream.h" #include "matomic.h" -#define tr_none0 -#define tr_readonly1 -#define tr_writable2 -#define tr_snapshot 4 -#define tr_serializable 8 -#define tr_append 16 +#define tr_none1 +#define tr_readonly2 +#define tr_writable4 +#define tr_append 8 +#define tr_snapshot 16 +#define tr_serializable 32 #define ACT_NO_ACTION 0 #define ACT_CASCADE 1 @@ -72,11 +72,6 @@ typedef enum sql_dependency { #define ROLE_SYSADMIN 2 #define USER_MONETDB 3 -#define ISO_READ_UNCOMMITED 1 -#define ISO_READ_COMMITED 2 -#define ISO_READ_REPEAT3 -#define ISO_SERIALIZABLE4 - #define SCALE_NONE 0 #define SCALE_FIX 1 /* many numerical functions require equal scales/precision for all their inputs */ diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1742,12 +1742,14 @@ sql_alter_table(sql_query *query, dlist if (te->token == SQL_ALTER_TABLE) { int state = te->data.i_val; - if (state == tr_readonly) + if (state == tr_readonly) { state = TABLE_READONLY; - else if (state == tr_append) + } else if (state == tr_append) { state = TABLE_APPENDONLY; - else + } else { + assert(state == tr_writable); state = TABLE_WRITABLE; + } return rel_alter_table(sql->sa, ddl_alter_table_set_access, sname, tname, NULL, NULL, state); } diff --git a/sql/server/rel_trans.c b/sql/server/rel_trans.c --- a/sql/server/rel_trans.c +++ b/sql/server/rel_trans.c @@ -58,7 +58,15 @@ rel_transactions(sql_query *query, symbo } break; case TR_START: case TR_MODE: - assert(s->type == type_int); + assert(s->type == type_int && (s->data.i_val & tr_append) == 0); + + if ((s->data.i_val & tr_none) == tr_none) + return sql_error(sql, 01, SQLSTATE(42000) "Transaction diagnostic not supported"); + if ((s->data.i_val & tr_readonly) == tr_readonly) + return sql_error(sql, 01, SQLSTATE(42000) "Readonly transactions not supported"); + if ((s->data.i_val & tr_snapshot) == tr_snapshot && (s->data.i_val & tr_serializable) == tr_serializable) + return sql_error(sql, 01, SQLSTATE(42000) "Cannot set multiple ISO levels on the same transaction"); + s->data.i_val &= ~tr_writable; /* all transactions are writable by default */ ret = rel_trans(sql, ddl_trans, s->data.i_val, NULL); break; default: diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -6810,7 +6810,8 @@ sql_session_reset(sql_session *s, int ac s->schema_name = def_schema_name; s->schema = NULL; s->auto_commit = s->ac_on_commit = ac; - s->level = ISO_SERIALIZABLE; + s->level &= ~tr_snapshot; + s->level |= tr_serializable; return 1; }
MonetDB: Jul2021 - Improved test
Changeset: 88efe7af4845 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/88efe7af4845 Modified Files: sql/test/BugTracker-2021/Tests/serializable-snapshot.Bug-7200.SQL.py Branch: Jul2021 Log Message: Improved test diffs (36 lines): diff --git a/sql/test/BugTracker-2021/Tests/serializable-snapshot.Bug-7200.SQL.py b/sql/test/BugTracker-2021/Tests/serializable-snapshot.Bug-7200.SQL.py --- a/sql/test/BugTracker-2021/Tests/serializable-snapshot.Bug-7200.SQL.py +++ b/sql/test/BugTracker-2021/Tests/serializable-snapshot.Bug-7200.SQL.py @@ -6,8 +6,9 @@ cursor1 = client1.cursor() cursor2 = client2.cursor() MAX_ITERATIONS = 1000 +EXPECTED_SUM = sum(range(0, MAX_ITERATIONS)) -cursor1.execute("CREATE TABLE T (k int PRIMARY KEY, v int);") +cursor1.execute("CREATE TABLE T (k INT PRIMARY KEY, v INT);") class TestClient(threading.Thread): @@ -18,7 +19,7 @@ class TestClient(threading.Thread): def run(self): for i in range(0, MAX_ITERATIONS): try: -self._cursor.execute("INSERT INTO t values (%d,%s)" % (i, i)) +self._cursor.execute("INSERT INTO t VALUES (%d,%d);" % (i, i)) except pymonetdb.exceptions.IntegrityError: pass @@ -30,9 +31,9 @@ thread2.start() thread1.join() thread2.join() -cursor1.execute("SELECT COUNT(*) from T") -if cursor1.fetchall() != [(MAX_ITERATIONS,)]: -sys.stderr.write("[(%s,)] expected" % (MAX_ITERATIONS,)) +cursor1.execute("SELECT COUNT(*), COUNT(DISTINCT k), SUM(k) from T;") +if cursor1.fetchall() != [(MAX_ITERATIONS, MAX_ITERATIONS, EXPECTED_SUM)]: +sys.stderr.write("[(%d,%d,%d)] expected" % (MAX_ITERATIONS, MAX_ITERATIONS, EXPECTED_SUM)) cursor1.execute("DROP TABLE T;") cursor1.close() ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2022 - Merged with Jul2021
Changeset: 13de516b7f00 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/13de516b7f00 Modified Files: sql/backends/monet5/rel_predicates.c sql/include/sql_catalog.h sql/server/rel_schema.c sql/storage/store.c sql/test/BugTracker-2021/Tests/All Branch: Jan2022 Log Message: Merged with Jul2021 diffs (166 lines): 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/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -19,12 +19,12 @@ #define sql_shared_module_name "sql" #define sql_private_module_name "user" -#define tr_none0 -#define tr_readonly1 -#define tr_writable2 -#define tr_snapshot 4 -#define tr_serializable 8 -#define tr_append 16 +#define tr_none1 +#define tr_readonly2 +#define tr_writable4 +#define tr_append 8 +#define tr_snapshot 16 +#define tr_serializable 32 #define ACT_NO_ACTION 0 #define ACT_CASCADE 1 @@ -75,11 +75,6 @@ typedef enum sql_dependency { #define ROLE_SYSADMIN 2 #define USER_MONETDB 3 -#define ISO_READ_UNCOMMITED 1 -#define ISO_READ_COMMITED 2 -#define ISO_READ_REPEAT3 -#define ISO_SERIALIZABLE4 - #define SCALE_NONE 0 #define SCALE_FIX 1 /* many numerical functions require equal scales/precision for all their inputs */ diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1821,12 +1821,14 @@ sql_alter_table(sql_query *query, dlist if (te->token == SQL_ALTER_TABLE) { int state = te->data.i_val; - if (state == tr_readonly) + if (state == tr_readonly) { state = TABLE_READONLY; - else if (state == tr_append) + } else if (state == tr_append) { state = TABLE_APPENDONLY; - else + } else { + assert(state == tr_writable); state = TABLE_WRITABLE; + } return rel_alter_table(sql->sa, ddl_alter_table_set_access, sname, tname, NULL, NULL, state); } diff --git a/sql/server/rel_trans.c b/sql/server/rel_trans.c --- a/sql/server/rel_trans.c +++ b/sql/server/rel_trans.c @@ -58,7 +58,15 @@ rel_transactions(sql_query *query, symbo } break; case TR_START: case TR_MODE: - assert(s->type == type_int); + assert(s->type == type_int && (s->data.i_val & tr_append) == 0); + + if ((s->data.i_val & tr_none) == tr_none) + return sql_error(sql, 01, SQLSTATE(42000) "Transaction diagnostic not supported"); + if ((s->data.i_val & tr_readonly) == tr_readonly) + return sql_error(sql, 01, SQLSTATE(42000) "Readonly transactions not supported"); + if ((s->data.i_val & tr_snapshot) == tr_snapshot && (s->data.i_val & tr_serializable) == tr_serializable) + return sql_error(sql, 01, SQLSTATE(42000) "Cannot set multiple ISO levels on the same transaction"); + s->data.i_val &= ~tr_writable; /* all transactions are writable by default */ ret = rel_trans(sql, ddl_trans, s->data.i_val, NULL); break; default: diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -6953,7 +6953,8 @@ sql_session_reset(sql_session *s, int ac s->schema_name = def_schema_name; s->schema = NULL; s->auto_commit = s->ac_on_commit = ac; - s->level = ISO_SERIALIZABLE; + s->level &= ~tr_snapshot; + s->level |= tr_serializable; return 1; } diff --git a/sql/test/BugTracker-2021/Tests/All b/sql/test/BugTracker-2021/Tests/All --- a/sql/test/BugTracker-2021/Tests/All +++ b/sql/test/BugTracker-2021/Tests/Al
MonetDB: Jan2022 - If an epilogue function throws an exception, ...
Changeset: f2249db30745 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f2249db30745 Modified Files: monetdb5/mal/mal_module.c sql/backends/monet5/sql_scenario.c Branch: Jan2022 Log Message: If an epilogue function throws an exception, clear it diffs (32 lines): 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/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; } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2022 - Fixes to dump sequence default values.
Changeset: 8bbc5fc77364 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/8bbc5fc77364 Modified Files: clients/mapiclient/dump.c sql/backends/monet5/sql_upgrades.c sql/scripts/52_describe.sql sql/scripts/76_dump.sql sql/test/Dependencies/Tests/dependency_owner_schema_3.test sql/test/Tests/comment-dump.SQL.py sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.int128 sql/test/miscellaneous/Tests/sequences.test sql/test/sql_dump/Tests/dump.test sql/test/testdb-previous-upgrade-chain-hge/Tests/dump.stable.out sql/test/testdb-previous-upgrade-chain/Tests/dump.stable.out sql/test/testdb-previous-upgrade-hge/Tests/dump.stable.out sql/test/testdb-previous-upgrade/Tests/dump.stable.out sql/test/testdb-upgrade-chain/Tests/dump.stable.out sql/test/testdb-upgrade/Tests/dump.stable.out sql/test/testdb/Tests/dump-nogeom.stable.out sql/test/testdb/Tests/dump.stable.out Branch: Jan2022 Log Message: Fixes to dump sequence default values. diffs (truncated from 549 to 300 lines): 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/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" + "CASE WHEN seq.\"minvalue\" = -9223372036854775807 AND seq.\"increment\" > 0 AND seq.\"start\" = 1 THEN TRUE ELSE FALSE END nomin,\n" + "CASE WHEN seq.\"maxvalue\" = 9223372036854775807 AND seq.\"increment\" < 0 AND seq.\"start\" = -1 THEN TRUE ELSE FALSE END nomax,\n" + "CASE\n" + "WHEN seq.\"minvalue\" = 0 AND seq.\"increment\" > 0 THEN NULL\n" + "WHEN seq.\"minvalue\" <> -9223372036854775807 TH
MonetDB: Jan2022 - Cleaned unused backend transaction calls. The...
Changeset: 76cf32f5c303 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/76cf32f5c303 Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/backends/monet5/sql_transaction.c sql/storage/store.c Branch: Jan2022 Log Message: Cleaned unused backend transaction calls. They were not setting the transaction isolation level right diffs (187 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
MonetDB: default - Merged with Jan2022
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;",