MonetDB: Jan2022 - Jump to the right label

2021-11-23 Thread Pedro Ferreira
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...

2021-11-23 Thread Pedro Ferreira
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...

2021-11-23 Thread Pedro Ferreira
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

2021-11-23 Thread Pedro Ferreira
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,...

2021-11-23 Thread Pedro Ferreira
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...

2021-11-23 Thread Pedro Ferreira
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

2021-11-23 Thread Pedro Ferreira
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

2021-11-23 Thread Pedro Ferreira
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, ...

2021-11-23 Thread Pedro Ferreira
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.

2021-11-23 Thread Aris Koning
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...

2021-11-23 Thread Pedro Ferreira
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

2021-11-23 Thread Pedro Ferreira
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;",