MonetDB: default - Fix type and add some more lazy initializations

2021-03-03 Thread martin kersten
Changeset: 56bc4f330ce5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=56bc4f330ce5
Modified Files:
monetdb5/mal/mal_instruction.c
Branch: default
Log Message:

Fix type and add some more lazy initializations


diffs (35 lines):

diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -777,7 +777,6 @@ setVariableType(MalBlkPtr mb, const int 
 char *
 getVarName(MalBlkPtr mb, int idx)
 {
-   char buf[IDLENGTH] = {0};
char *s = mb->var[idx].name;
if( getVarKind(mb,idx) == 0)
setVarKind(mb,idx, REFMARKER);
@@ -785,7 +784,7 @@ getVarName(MalBlkPtr mb, int idx)
if( *s &&  s[1] != '_' && (s[0] != 'X' && s[0] != 'C'))
return s;
if ( *s == 0)
-   (void) snprintf(buf, IDLENGTH,"%c_%d", getVarKind(mb, idx), 
mb->vid++);
+   (void) snprintf(s, IDLENGTH,"%c_%d", getVarKind(mb, idx), 
mb->vid++);
return s;
 }
 
@@ -828,8 +827,12 @@ cloneVariable(MalBlkPtr tm, MalBlkPtr mb
int res;
if (isVarConstant(mb, x))
res = cpyConstant(tm, getVar(mb, x));
-   else
-   res = newVariable(tm, getVarName(mb, x), 
strlen(getVarName(mb,x)), getVarType(mb, x));
+   else {
+   res = newTmpVariable(tm, getVarType(mb, x));
+   if( *mb->var[x].name)
+   strcpy(tm->var[x].name, mb->var[x].name);
+   //res = newVariable(tm, getVarName(mb, x), 
strlen(getVarName(mb,x)), getVarType(mb, x));
+   }
if (res < 0)
return res;
if (isVarFixed(mb, x))
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - don't get the BATdescriptor when we are flushing

2021-03-03 Thread Niels Nes
Changeset: 84d58fac6f5c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=84d58fac6f5c
Modified Files:
gdk/gdk_logger.c
Branch: default
Log Message:

don't get the BATdescriptor when we are flushing


diffs (49 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -528,17 +528,21 @@ static gdk_return
 la_bat_updates(logger *lg, logaction *la)
 {
log_bid bid = internal_find_bat(lg, la->cid);
+   BAT *b = NULL;
 
if (bid == 0)
return GDK_SUCCEED; /* ignore bats no longer in the catalog */
 
-   BAT *b = BATdescriptor(bid);
-   if (b == NULL)
-   return GDK_FAIL;
+   if (!lg->flushing) {
+   b = BATdescriptor(bid);
+   if (b == NULL)
+   return GDK_FAIL;
+   }
if (la->type == LOG_UPDATE_BULK) {
-   BUN cnt = BATcount(b);
+   BUN cnt = 0;
 
if (!lg->flushing) {
+   cnt = BATcount(b);
int is_msk = (b->ttype == TYPE_msk);
/* handle offset 0 ie clear */
if (/* DISABLES CODE */ (0) && la->offset == 0 && cnt)
@@ -583,7 +587,8 @@ la_bat_updates(logger *lg, logaction *la
}
cnt = (BUN)(la->offset + la->nr);
if (la_bat_update_count(lg, la->cid, cnt) != GDK_SUCCEED) {
-   logbat_destroy(b);
+   if (b)
+   logbat_destroy(b);
return GDK_FAIL;
}
} else if (!lg->flushing && la->type == LOG_UPDATE) {
@@ -600,7 +605,8 @@ la_bat_updates(logger *lg, logaction *la
}
}
}
-   logbat_destroy(b);
+   if (b)
+   logbat_destroy(b);
return GDK_SUCCEED;
 }
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Approve upgrade.

2021-03-03 Thread Sjoerd Mullender
Changeset: 66794e0b06dc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=66794e0b06dc
Modified Files:
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
Branch: default
Log Message:

Approve upgrade.


diffs (truncated from 31200 to 300 lines):

diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
@@ -2,3613 +2,3627 @@ Running database upgrade commands:
 set schema "sys";
 delete from sys.dependencies where id < 2000;
 delete from sys.types where id < 2000;
-insert into sys.types values (0, 'void', 'any', 0, 0, 0, 0, 2000);
-insert into sys.types values (1, 'bat', 'table', 0, 0, 0, 1, 2000);
-insert into sys.types values (2, 'ptr', 'ptr', 0, 0, 0, 1, 2000);
-insert into sys.types values (3, 'bit', 'boolean', 1, 0, 2, 2, 2000);
-insert into sys.types values (4, 'str', 'char', 0, 0, 0, 3, 2000);
-insert into sys.types values (5, 'str', 'varchar', 0, 0, 0, 4, 2000);
-insert into sys.types values (6, 'str', 'clob', 0, 0, 0, 4, 2000);
-insert into sys.types values (7, 'oid', 'oid', 31, 0, 2, 6, 2000);
-insert into sys.types values (8, 'bte', 'tinyint', 8, 1, 2, 7, 2000);
-insert into sys.types values (9, 'sht', 'smallint', 16, 1, 2, 7, 2000);
-insert into sys.types values (10, 'int', 'int', 32, 1, 2, 7, 2000);
-insert into sys.types values (11, 'lng', 'bigint', 64, 1, 2, 7, 2000);
-insert into sys.types values (12, 'bte', 'decimal', 2, 1, 10, 10, 2000);
-insert into sys.types values (13, 'sht', 'decimal', 4, 1, 10, 10, 2000);
-insert into sys.types values (14, 'int', 'decimal', 9, 1, 10, 10, 2000);
-insert into sys.types values (15, 'lng', 'decimal', 18, 1, 10, 10, 2000);
-insert into sys.types values (16, 'flt', 'real', 24, 2, 2, 11, 2000);
-insert into sys.types values (17, 'dbl', 'double', 53, 2, 2, 11, 2000);
-insert into sys.types values (18, 'int', 'month_interval', 3, 0, 10, 8, 2000);
-insert into sys.types values (19, 'lng', 'day_interval', 4, 0, 10, 9, 2000);
-insert into sys.types values (20, 'lng', 'sec_interval', 13, 1, 10, 9, 2000);
-insert into sys.types values (21, 'daytime', 'time', 7, 0, 0, 12, 2000);
-insert into sys.types values (22, 'daytime', 'timetz', 7, 1, 0, 13, 2000);
-insert into sys.types values (23, 'date', 'date', 0, 0, 0, 14, 2000);
-insert into sys.types values (24, 'timestamp', 'timestamp', 7, 0, 0, 15, 2000);
-insert into sys.types values (25, 'timestamp', 'timestamptz', 7, 1, 0, 16, 
2000);
-insert into sys.types values (26, 'blob', 'blob', 0, 0, 0, 5, 2000);
-insert into sys.types values (29, 'wkb', 'geometry', 0, 0, 0, 17, 2000);
-insert into sys.types values (30, 'wkba', 'geometrya', 0, 0, 0, 18, 2000);
-insert into sys.types values (31, 'mbr', 'mbr', 0, 0, 0, 18, 2000);
+insert into sys.types values (1, 'void', 'any', 0, 0, 0, 0, 2000);
+insert into sys.types values (2, 'bat', 'table', 0, 0, 0, 1, 2000);
+insert into sys.types values (3, 'ptr', 'ptr', 0, 0, 0, 1, 2000);
+insert into sys.types values (4, 'bit', 'boolean', 1, 0, 2, 2, 2000);
+insert into sys.types values (5, 'str', 'clob', 0, 0, 0, 4, 2000);
+insert into sys.types values (6, 'str', 'varchar', 0, 0, 0, 4, 2000);
+insert into sys.types values (7, 'str', 'char', 0, 0, 0, 3, 2000);
+insert into sys.types values (8, 'oid', 'oid', 31, 0, 2, 6, 2000);
+insert into sys.types values (9, 'bte', 'tinyint', 8, 1, 2, 7, 2000);
+insert into sys.types values (10, 'sht', 'smallint', 16, 1, 2, 7, 2000);
+insert into sys.types values (11, 'int', 'int', 32, 1, 2, 7, 2000);
+insert into sys.types values (12, 'lng', 'bigint', 64, 1, 2, 7, 2000);
+insert into sys.types values (13, 'bte', 'decimal', 2, 1, 10, 10, 2000);
+insert into sys.types values (14, 'sht', 'decimal', 4, 1, 10, 10, 2000);
+insert into sys.types values (15, 'int', 'decimal', 9, 1, 10, 10, 2000);
+insert into sys.types values (16, 'lng', 'decimal', 18, 1, 10, 10, 2000);
+insert into sys.types values (17, 'flt', 'real', 24, 2, 2, 11, 2000);
+insert into sys.types values (18, 'dbl', 'double', 53, 2, 2, 11, 2000);
+insert into sys.types values (19, 'int', 'month_interval', 3, 0, 10, 8, 2000);
+insert into sys.types values (20, 'lng', 'day_interval', 4, 0, 10, 9, 2000);
+insert into sys.types values (21, 'lng', 'sec_interval', 13, 1, 10, 9, 2000);
+insert into sys.types values (22, 'daytime', 'time', 7, 0, 0, 12, 2000);
+insert into sys.types values (23, 'daytime', 'timetz', 7, 1, 0, 13, 2000);
+insert into sys.types values (24, 'date', 'date', 0, 0, 0, 14, 2000);
+insert into sys.types values (25, 'timestamp', 'timestamp', 7, 0, 0, 15, 2000);
+insert into 

MonetDB: default - Allocate less when possible

2021-03-03 Thread Pedro Ferreira
Changeset: ef9745cc0f5d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ef9745cc0f5d
Modified Files:
sql/backends/monet5/sql_user.c
sql/server/sql_privileges.c
sql/storage/bat/bat_table.c
sql/storage/sql_storage.h
sql/storage/store.c
sql/storage/store_dependency.c
Branch: default
Log Message:

Allocate less when possible


diffs (truncated from 357 to 300 lines):

diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -617,10 +617,7 @@ monet5_user_set_def_schema(mvc *m, oid u
GDKfree(username);
return NULL;
}
-   p = store->table_api.column_find_value(m->session->tr, users_schema, 
rid);
-   assert(p);
-   schema_id = *(sqlid *) p;
-   _DELETE(p);
+   schema_id = store->table_api.column_find_sqlid(m->session->tr, 
users_schema, rid);
 
p = store->table_api.column_find_value(m->session->tr, 
users_schema_path, rid);
assert(p);
@@ -646,10 +643,7 @@ monet5_user_set_def_schema(mvc *m, oid u
rid = store->table_api.column_find_row(m->session->tr, auths_name, 
username, NULL);
if (!is_oid_nil(rid)) {
sql_column *auths_id = find_sql_column(auths, "id");
-   sqlid id;
-   p = store->table_api.column_find_value(m->session->tr, 
auths_id, rid);
-   id = *(sqlid *) p;
-   _DELETE(p);
+   sqlid id = store->table_api.column_find_sqlid(m->session->tr, 
auths_id, rid);
 
m->user_id = m->role_id = id;
} else {
diff --git a/sql/server/sql_privileges.c b/sql/server/sql_privileges.c
--- a/sql/server/sql_privileges.c
+++ b/sql/server/sql_privileges.c
@@ -809,7 +809,7 @@ sql_drop_granted_users(mvc *sql, sqlid u
A = store->table_api.rids_select(tr, find_sql_column(auths, 
"grantor"), _id, _id, NULL);
/* remove them and continue the deletion */
for(rid = store->table_api.rids_next(A); !is_oid_nil(rid); rid 
= store->table_api.rids_next(A)) {
-   sqlid nuid = 
*(sqlid*)store->table_api.column_find_value(tr, find_sql_column(auths, "id"), 
rid);
+   sqlid nuid = store->table_api.column_find_sqlid(tr, 
find_sql_column(auths, "id"), rid);
char* nname = store->table_api.column_find_value(tr, 
find_sql_column(auths, "name"), rid);
 
sql_drop_granted_users(sql, nuid, nname, deleted_users);
diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c
--- a/sql/storage/bat/bat_table.c
+++ b/sql/storage/bat/bat_table.c
@@ -143,51 +143,34 @@ column_find_value(sql_trans *tr, sql_col
return res;
 }
 
-static sqlid
-column_find_sqlid(sql_trans *tr, sql_column *c, oid rid)
-{
-   BUN q = BUN_NONE;
-   BAT *b;
-   sqlid res = -1;
-
-   b = full_column(tr, c);
-   if (b) {
-   if (rid < b->hseqbase || rid >= b->hseqbase + BATcount(b))
-   q = BUN_NONE;
-   else
-   q = rid - b->hseqbase;
-   }
-   if (q != BUN_NONE) {
-   BATiter bi = bat_iterator(b);
-
-   res = *(sqlid*)BUNtail(bi, q);
-   }
-   full_destroy(c, b);
-   return res;
+#define column_find_tpe(TPE) \
+static TPE \
+column_find_##TPE(sql_trans *tr, sql_column *c, oid rid) \
+{ \
+   BUN q = BUN_NONE; \
+   BAT *b; \
+   TPE res = -1; \
+ \
+   b = full_column(tr, c); \
+   if (b) { \
+   if (rid < b->hseqbase || rid >= b->hseqbase + BATcount(b)) \
+   q = BUN_NONE; \
+   else \
+   q = rid - b->hseqbase; \
+   } \
+   if (q != BUN_NONE) { \
+   BATiter bi = bat_iterator(b); \
+   res = *(TPE*)BUNtail(bi, q); \
+   } \
+   full_destroy(c, b); \
+   return res; \
 }
 
-static sqlid
-column_find_int(sql_trans *tr, sql_column *c, oid rid)
-{
-   BUN q = BUN_NONE;
-   BAT *b;
-   int res = -1;
-
-   b = full_column(tr, c);
-   if (b) {
-   if (rid < b->hseqbase || rid >= b->hseqbase + BATcount(b))
-   q = BUN_NONE;
-   else
-   q = rid - b->hseqbase;
-   }
-   if (q != BUN_NONE) {
-   BATiter bi = bat_iterator(b);
-
-   res = *(int*)BUNtail(bi, q);
-   }
-   full_destroy(c, b);
-   return res;
-}
+column_find_tpe(sqlid)
+column_find_tpe(bte)
+column_find_tpe(sht)
+column_find_tpe(int)
+column_find_tpe(lng)
 
 static int
 column_update_value(sql_trans *tr, sql_column *c, oid rid, void *value)
@@ -634,7 +617,10 @@ bat_table_init( table_functions *tf )
tf->column_find_row = column_find_row;
tf->column_find_value = column_find_value;
tf->column_find_sqlid = column_find_sqlid;
+   

MonetDB: default - Approve tests.

2021-03-03 Thread Sjoerd Mullender
Changeset: 47e839da1c6e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=47e839da1c6e
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
Branch: default
Log Message:

Approve tests.


diffs (truncated from 45245 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
@@ -64,5875 +64,5875 @@ stdout of test 'MAL-signatures` in direc
 % .%1, .%1,.%1,.%1,.%1 # table_name
 % module,  function,   signature,  address,comment # name
 % clob,clob,   clob,   clob,   clob # type
-% 12,  28, 313,42, 0 # length
-[ "aggr",  "all",  "command aggr.all(X_1:bat[:any_1]):any_1 ", 
"SQLall;",  ""  ]
-[ "aggr",  "allnotequal",  "pattern aggr.allnotequal(X_1:bat[:any_1], 
X_2:bat[:any_1]):bit ",  "SQLallnotequal;",  ""  ]
-[ "aggr",  "anyequal", "pattern aggr.anyequal(X_1:any_1, 
X_2:any_1):bit ", "CMDvarEQ;",""  ]
-[ "aggr",  "anyequal", "pattern aggr.anyequal(X_1:bat[:any_1], 
X_2:bat[:any_1]):bit ", "SQLanyequal;", ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRavg13_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:dbl], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRavg13_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:flt], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRavg13_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:int], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRavg13_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:lng], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRavg13_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:sht], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRavg13_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1], X_4:int):bat[:dbl] ",  "AGGRavg14_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:dbl], X_2:bat[:oid], 
X_3:bat[:any_1], X_4:int):bat[:dbl] ",  "AGGRavg14_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:flt], X_2:bat[:oid], 
X_3:bat[:any_1], X_4:int):bat[:dbl] ",  "AGGRavg14_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:int], X_2:bat[:oid], 
X_3:bat[:any_1], X_4:int):bat[:dbl] ",  "AGGRavg14_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:lng], X_2:bat[:oid], 
X_3:bat[:any_1], X_4:int):bat[:dbl] ",  "AGGRavg14_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_1:bat[:sht], X_2:bat[:oid], 
X_3:bat[:any_1], X_4:int):bat[:dbl] ",  "AGGRavg14_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:bte], X_3:bat[:oid], 
X_4:bat[:any_1]) (X_0:bat[:dbl], X_1:bat[:lng]) ",  "AGGRavg23_dbl;",   
""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:dbl], X_3:bat[:oid], 
X_4:bat[:any_1]) (X_0:bat[:dbl], X_1:bat[:lng]) ",  "AGGRavg23_dbl;",   
""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:flt], X_3:bat[:oid], 
X_4:bat[:any_1]) (X_0:bat[:dbl], X_1:bat[:lng]) ",  "AGGRavg23_dbl;",   
""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:int], X_3:bat[:oid], 
X_4:bat[:any_1]) (X_0:bat[:dbl], X_1:bat[:lng]) ",  "AGGRavg23_dbl;",   
""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:lng], X_3:bat[:oid], 
X_4:bat[:any_1]) (X_0:bat[:dbl], X_1:bat[:lng]) ",  "AGGRavg23_dbl;",   
""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:sht], X_3:bat[:oid], 
X_4:bat[:any_1]) (X_0:bat[:dbl], X_1:bat[:lng]) ",  "AGGRavg23_dbl;",   
""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:bte], X_3:bat[:oid], 
X_4:bat[:any_1], X_5:int) (X_0:bat[:dbl], X_1:bat[:lng]) ", 
"AGGRavg24_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:dbl], X_3:bat[:oid], 
X_4:bat[:any_1], X_5:int) (X_0:bat[:dbl], X_1:bat[:lng]) ", 
"AGGRavg24_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:flt], X_3:bat[:oid], 
X_4:bat[:any_1], X_5:int) (X_0:bat[:dbl], X_1:bat[:lng]) ", 
"AGGRavg24_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:int], X_3:bat[:oid], 
X_4:bat[:any_1], X_5:int) (X_0:bat[:dbl], X_1:bat[:lng]) ", 
"AGGRavg24_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:lng], X_3:bat[:oid], 
X_4:bat[:any_1], X_5:int) (X_0:bat[:dbl], X_1:bat[:lng]) ", 
"AGGRavg24_dbl;",   ""  ]
-[ "aggr",  "avg",  "command aggr.avg(X_2:bat[:sht], X_3:bat[:oid], 
X_4:bat[:any_1], X_5:int) (X_0:bat[:dbl], 

monetdb-java: default - Implemented PreparedStatement.toString()...

2021-03-03 Thread Martin van Dinther
Changeset: b9f82064fe0c for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=b9f82064fe0c
Modified Files:
ChangeLog
src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
tests/JDBC_API_Tester.java
Branch: default
Log Message:

Implemented PreparedStatement.toString() as requested by 
https://github.com/MonetDB/monetdb-java/issues/8


diffs (130 lines):

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
 # This file is updated with Maddlog
 
 * Wed Mar  3 2021 Martin van Dinther 
+- Implemented PreparedStatement.toString() as requested by
+  https://github.com/MonetDB/monetdb-java/issues/8
+
+* Wed Mar  3 2021 Martin van Dinther 
 - Implemented fix for released monetdb-jdbc-3.0.jre8.jar and
   monetdb-mcl-1.19.jre8.jar when it is was run using java build
   1.8.0_###.  It would throw:  java.lang.NoSuchMethodError:
diff --git a/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java 
b/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
--- a/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
+++ b/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
@@ -62,12 +62,13 @@ import java.util.Map;
  *
  * @author Fabian Groffen
  * @author Martin van Dinther
- * @version 0.6
+ * @version 0.7
  */
 public class MonetPreparedStatement
extends MonetStatement
implements PreparedStatement, AutoCloseable
 {
+   private final String sqlStatement;
private final String[] monetdbType;
private final int[] javaType;
private final int[] digits;
@@ -124,6 +125,7 @@ public class MonetPreparedStatement
if (!super.execute("PREPARE " + prepareQuery))
throw new SQLException("Unexpected server response", 
"M0M10");
 
+   sqlStatement = prepareQuery;
// cheat a bit to get the ID and the number of columns
id = ((MonetConnection.ResultSetResponse)header).id;
size = 
(int)((MonetConnection.ResultSetResponse)header).tuplecount;
@@ -2716,6 +2718,23 @@ public class MonetPreparedStatement
close();
}
 
+   /**
+* @return the prepared SQL statement including parameter types and 
parameter values that were already set.
+*/
+   public String toString​() {
+   final StringBuilder sb = new StringBuilder(256);
+   sb.append("Prepared SQL: ").append(sqlStatement).append("\n");
+   int param = 1;
+   for (int i = 0; i < size; i++) {
+   /* when column[i] == null it is a parameter, when 
column[i] != null it is a result column of the prepared query */
+   if (column[i] == null) {
+   sb.append(" parameter 
").append(param++).append(" ").append(monetdbType[i]);
+   sb.append(", set value: ").append((values[i] != 
null) ? values[i] : "").append("\n");
+   }
+   }
+   return sb.toString();
+   }
+
//== Java 1.8 methods (JDBC 4.2)
 
@Override
@@ -2799,6 +2818,7 @@ public class MonetPreparedStatement
return buf.toString();
}
 
+
/**
 * Small helper method that formats the "Invalid Parameter Index number 
..." message
 * and creates a new SQLDataException object whose SQLState is set
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
@@ -1003,6 +1003,7 @@ final public class JDBC_API_Tester {
 
pstmt.executeBatch();
sb.append(" passed\n");
+   sb.append(pstmt.toString());// test showing 
prepared statement
 
sb.append("2b. closing PreparedStatement...");
pstmt.close();
@@ -1058,6 +1059,11 @@ final public class JDBC_API_Tester {
"0. false   false\n" +
"1. creating test table...success\n" +
"2a. inserting 3 records as batch... passed\n" +
+   "Prepared SQL: INSERT INTO table_Test_PSgetObject 
(ti,si,i,bi) VALUES (?,?,?,?)\n" +
+   " parameter 1 tinyint, set value: -127\n" +
+   " parameter 2 smallint, set value: -12700\n" +
+   " parameter 3 int, set value: -127\n" +
+   " parameter 4 bigint, set value: -12700\n" +
"2b. closing PreparedStatement... passed\n" +
"3a. selecting records... passed\n" +
"  Retrieved row data: ti=-127 si=-12700 i=-127 
bi=-12700\n" +
@@ -1297,6 +1303,7 @@ final public class JDBC_API_Tester {
PreparedStatement pstmt = null;
try {
pstmt = con.prepareStatement("SELECT 

MonetDB: Oct2020 - Approve header changes.

2021-03-03 Thread Sjoerd Mullender
Changeset: b943e7ced527 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b943e7ced527
Modified Files:
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
Branch: Oct2020
Log Message:

Approve header changes.


diffs (144 lines):

diff --git a/sql/test/emptydb/Tests/check.stable.out 
b/sql/test/emptydb/Tests/check.stable.out
--- a/sql/test/emptydb/Tests/check.stable.out
+++ b/sql/test/emptydb/Tests/check.stable.out
@@ -3628,7 +3628,7 @@ drop function pcre_replace(string, strin
 [ "sys.db_user_info",  ".snapshot","Snapshot User","sys"   ]
 [ "sys.db_user_info",  "monetdb",  "MonetDB Admin","sys"   ]
 #select 'function used by function', s1.name, f1.name, s2.name, f2.name, 
dt.dependency_type_name from sys.dependencies d left outer join 
sys.dependency_types dt on d.depend_type = dt.dependency_type_id, sys.functions 
f1, sys.functions f2, sys.schemas s1, sys.schemas s2 where d.id = f1.id and 
d.depend_id = f2.id and f1.schema_id = s1.id and f2.schema_id = s2.id order by 
s2.name, f2.name, s1.name, f1.name;
-% .%1, sys.s1, sys.f1, sys.s2, sys.f2, .dt # table_name
+% .%1, sys.s1, sys.f1, .s2,.f2,.dt # table_name
 % %1,  name,   name,   name,   name,   dependency_type_name # name
 % char,varchar,varchar,varchar,varchar,
varchar # type
 % 25,  3,  17, 3,  13, 8 # length
@@ -3639,7 +3639,7 @@ drop function pcre_replace(string, strin
 [ "function used by function", "sys",  "internaltransform","sys",  
"st_transform", "FUNCTION"  ]
 [ "function used by function", "sys",  "st_srid",  "sys",  "st_transform", 
"FUNCTION"  ]
 #select 'table used by function', s1.name, t.name, s2.name, f.name, 
dt.dependency_type_name from sys.dependencies d left outer join 
sys.dependency_types dt on d.depend_type = dt.dependency_type_id, sys._tables 
t, sys.schemas s1, sys.functions f, sys.schemas s2 where d.id = t.id and 
d.depend_id = f.id and t.schema_id = s1.id and f.schema_id = s2.id order by 
s2.name, f.name, s1.name, t.name;
-% .%1, sys.s1, sys.t,  sys.s2, sys.f,  .dt # table_name
+% .%1, sys.s1, sys.t,  .s2,.f, .dt # table_name
 % %1,  name,   name,   name,   name,   dependency_type_name # name
 % char,varchar,varchar,varchar,varchar,
varchar # type
 % 22,  3,  17, 3,  16, 9 # length
@@ -3652,7 +3652,7 @@ drop function pcre_replace(string, strin
 [ "table used by function","sys",  "storagemodelinput","sys",  
"storagemodelinit", "PROCEDURE" ]
 [ "table used by function","sys",  "tables",   "sys",  
"storagemodelinit", "PROCEDURE" ]
 #select 'column used by function', s1.name, t.name, c.name, s2.name, f.name, 
dt.dependency_type_name from sys.dependencies d left outer join 
sys.dependency_types dt on d.depend_type = dt.dependency_type_id, sys._columns 
c, sys._tables t, sys.schemas s1, sys.functions f, sys.schemas s2 where d.id = 
c.id and d.depend_id = f.id and c.table_id = t.id and t.schema_id = s1.id and 
f.schema_id = s2.id order by s2.name, f.name, s1.name, t.name, c.name;
-% .%1, sys.s1, sys.t,  sys.c,  sys.s2, sys.f,  .dt # table_name
+% .%1, sys.s1, sys.t,  sys.c,  .s2,.f, .dt # table_name
 % %1,  name,   name,   name,   name,   name,   dependency_type_name # name
 % char,varchar,varchar,varchar,varchar,
varchar,varchar # type
 % 23,  3,  17, 13, 3,  16, 9 # length
@@ -4295,7 +4295,7 @@ drop function pcre_replace(string, strin
 [ "column used by index",  "sys",  "table_types",  "table_type_id",
"sys",  "table_types",  "table_types_table_type_id_pkey",   "INDEX" ]
 [ "column used by index",  "sys",  "table_types",  "table_type_name",  
"sys",  "table_types",  "table_types_table_type_name_unique",   "INDEX" ]
 #select 'type used by function', t.systemname, t.sqlname, s.name, f.name, 
dt.dependency_type_name from sys.dependencies d left outer join 
sys.dependency_types dt on d.depend_type = dt.dependency_type_id, sys.types t, 
sys.functions f, sys.schemas s where d.id = t.id and d.depend_id = f.id and 
f.schema_id = s.id order by s.name, f.name, t.systemname, t.sqlname;
-% .%1, sys.t,  sys.t,  sys.s,  sys.f,  .dt # table_name
+% .%1, sys.t,  sys.t,  .s, .f, .dt # table_name
 % %1,  systemname, sqlname,name,   name,   dependency_type_name # 
name
 % char,varchar,varchar,varchar,varchar,
varchar # type
 % 21,  4,  4,  4,  18, 4 # length
@@ -4509,7 +4509,7 @@ drop function pcre_replace(string, strin
 [ "grant on table","value_partitions", "public",   "SELECT",   
NULL,   0   ]
 [ "grant on table","var_values",   "public",   "SELECT",   
"monetdb",  0   ]
 #select 'grant on column', t.name, 

MonetDB: default - Improve and approve upgrades.

2021-03-03 Thread Sjoerd Mullender
Changeset: c0593fb16b19 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c0593fb16b19
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
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.int128
sql/test/emptydb/Tests/check.stable.out
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.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.int128
Branch: default
Log Message:

Improve and approve upgrades.


diffs (truncated from 9 to 300 lines):

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
@@ -2374,6 +2374,28 @@ sql_update_default(Client c, mvc *sql, c
 
pos = snprintf(buf, bufsize, "set schema \"sys\";\n");
 
+   /* 20_vacuum.sql */
+   pos += snprintf(buf + pos, bufsize - pos,
+   "drop procedure 
sys.shrink(string, string);\n"
+   "drop procedure 
sys.reuse(string, string);\n"
+   "drop procedure 
sys.vacuum(string, string);\n");
+
+   /* 25_debug.sql */
+   pos += snprintf(buf + pos, bufsize - pos,
+   "drop procedure 
sys.flush_log();\n");
+
+   /* 41_json.sql */
+   pos += snprintf(buf + pos, bufsize - pos,
+   "drop function 
json.isobject(string);\n"
+   "drop function 
json.isarray(string);\n"
+   "drop function 
json.isvalid(json);\n"
+   "create function 
json.isvalid(js json)\n"
+   "returns bool begin 
return true; end;\n"
+   "grant execute on 
function json.isvalid(json) to public;\n"
+   "update sys.functions 
set system = true"
+   " where schema_id = 
(select id from sys.schemas where name = 'json')"
+   " and name = 
'isvalid';\n");
+
/* 51_sys_schema_extensions, remove stream table 
entries and update window function description */
pos += snprintf(buf + pos, bufsize - pos,
"ALTER TABLE sys.keywords SET READ 
WRITE;\n"
@@ -3113,7 +3135,7 @@ sql_update_default(Client c, mvc *sql, c
"SET M = (SELECT MAX(c.id) 
FROM sys.columns c, sys.tables t WHERE c.table_id = t.id AND t.name = tbl);\n"
"\n"
"WHILE (k < M) DO\n"
-   "SET k = (SELECT 
MIN(c.id) FROM sys.columns c, tables t WHERE c.table_id = t.id AND t.name = tbl 
AND c.id > k);\n"
+   "SET k = (SELECT 
MIN(c.id) FROM sys.columns c, sys.tables t WHERE c.table_id = t.id AND t.name = 
tbl AND c.id > k);\n"
"SET cname = (SELECT 
c.name FROM sys.columns c WHERE c.id = k);\n"
"SET ctype = (SELECT 
c.type FROM sys.columns c WHERE c.id = k);\n"
"SET COPY_INTO_STMT = 
(COPY_INTO_STMT || ', ' || sys.DQ(cname));\n"
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -2,4208 +2,4222 @@ Running database upgrade commands:
 set schema "sys";
 delete from sys.dependencies where id < 2000;
 delete from sys.types where id < 2000;
-insert into sys.types values (0, 'void', 'any', 0, 0, 

MonetDB: default - Enable upgrades.

2021-03-03 Thread Sjoerd Mullender
Changeset: 220290c47531 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=220290c47531
Modified Files:
sql/storage/bat/bat_logger.c
Branch: default
Log Message:

Enable upgrades.


diffs (14 lines):

diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -28,10 +28,6 @@ bl_preversion(sqlstore *store, int oldve
 {
(void)newversion;
 
-/* disable upgrades for now */
-   if (oldversion < 52300)
-   return GDK_FAIL;
-
 #ifdef CATALOG_JUN2020
if (oldversion == CATALOG_JUN2020) {
/* upgrade to default releases */
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - When adding to a system table, we need to add...

2021-03-03 Thread Sjoerd Mullender
Changeset: 516c09d14eb2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=516c09d14eb2
Modified Files:
sql/storage/bat/bat_logger.c
Branch: default
Log Message:

When adding to a system table, we need to add to the deletes too.


diffs (45 lines):

diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -1403,7 +1403,7 @@ upgrade(old_logger *lg)
continue;
if (delidx >= 0) {
BAT *d = temp_descriptor(old_logger_find_bat(lg, 
delname, 0, 0));
-   BAT *m = BATconstant(0, TYPE_msk, &(msk){0}, 
BATcount(b), PERSISTENT);
+   BAT *m = BATconstant(0, TYPE_msk, &(msk){false}, 
BATcount(b), PERSISTENT);
if (m == NULL) {
bat_destroy(d);
bat_destroy(m);
@@ -1590,7 +1590,7 @@ upgrade(old_logger *lg)
tbid = bids[o - lg->lg->catalog_bid->hseqbase];
b = temp_descriptor(tbid);
BAT *bn;
-   bn = BATconstant(0, TYPE_msk, &(msk){0}, len, PERSISTENT);
+   bn = BATconstant(0, TYPE_msk, &(msk){false}, len, PERSISTENT);
if (b == NULL || bn == NULL) {
bat_destroy(b);
bat_destroy(bn);
@@ -1665,6 +1665,7 @@ bl_postversion(void *Store, old_logger *
BBPretain(sem->batCacheid); /* yep, twice */
bat_destroy(sem);
if (tabins(lg, old_lg, tabins_first, -1, 0,
+  2076, &(msk) {false},/* 
sys._columns */
   2077, &(int) {2162}, /* 
sys._columns.id */
   2078, "semantics",   /* 
sys._columns.name */
   2079, "boolean", 
/* sys._columns.type */
@@ -1816,6 +1817,7 @@ bl_postversion(void *Store, old_logger *
if (store->catalog_version <= CATALOG_OCT2020) {
/* add sub column to "objects" table. This is required for 
merge tables */
if (tabins(lg, old_lg, tabins_first, -1, 0,
+  2076, &(msk) {false},/* sys._columns 
*/
   2077, &(int) {2163}, /* 
sys._columns.id */
   2078, "sub", /* 
sys._columns.name */
   2079, "int", /* 
sys._columns.type */
@@ -1830,6 +1832,7 @@ bl_postversion(void *Store, old_logger *
return GDK_FAIL;
tabins_first = false;
if (tabins(lg, old_lg, tabins_first, -1, 0,
+  2076, &(msk) {false},/* sys._columns 
*/
   2077, &(int) {2164}, /* 
sys._columns.id */
   2078, "sub", /* 
sys._columns.name */
   2079, "int", /* 
sys._columns.type */
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Use fully qualified name (and match upgrade c...

2021-03-03 Thread Sjoerd Mullender
Changeset: 8b1d5199c025 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8b1d5199c025
Modified Files:
sql/backends/monet5/sql_user.c
Branch: default
Log Message:

Use fully qualified name (and match upgrade code).


diffs (12 lines):

diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -290,7 +290,7 @@ monet5_create_privileges(ptr _mvc, sql_s
t = mvc_init_create_view(m, s, "users",
"create view sys.users as select u.\"name\" as 
\"name\", "
"ui.\"fullname\", ui.\"default_schema\", "
-   "ui.\"schema_path\" from db_users() as u "
+   "ui.\"schema_path\" from sys.db_users() as u "
"left join \"sys\".\"db_user_info\" as ui "
"on u.\"name\" = ui.\"name\";");
if (!t) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Administer change of bat for sys.objects.nr.

2021-03-03 Thread Sjoerd Mullender
Changeset: 24c03c16a919 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=24c03c16a919
Modified Files:
sql/storage/bat/bat_logger.c
Branch: default
Log Message:

Administer change of bat for sys.objects.nr.


diffs (29 lines):

diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -1890,14 +1890,24 @@ bl_postversion(void *Store, old_logger *
return GDK_FAIL;
}
b = COLcopy(objs_nr, objs_nr->ttype, true, PERSISTENT);
+   rc = BUNappend(old_lg->del, _nr->batCacheid, false);
bat_destroy(objs_nr);
-   if (b == NULL) {
+   if (b == NULL || rc != GDK_SUCCEED) {
bat_destroy(objs_id);
bat_destroy(objs_sub);
bat_destroy(cands);
+   bat_destroy(b);
return GDK_FAIL;
}
objs_nr = b;
+   if (BUNappend(old_lg->add, _nr->batCacheid, false) != 
GDK_SUCCEED) {
+   bat_destroy(objs_id);
+   bat_destroy(objs_sub);
+   bat_destroy(objs_nr);
+   bat_destroy(cands);
+   return GDK_FAIL;
+   }
+   BBPretain(objs_nr->batCacheid);
b = BATproject2(cands, objs_id, NULL);
bat_destroy(objs_id);
if (b == NULL) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Delay generation of MAL variable names

2021-03-03 Thread martin kersten
Changeset: 83d776ba0b5f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=83d776ba0b5f
Modified Files:
monetdb5/mal/mal_function.c
monetdb5/mal/mal_instruction.h
monetdb5/optimizer/opt_garbageCollector.c
Branch: default
Log Message:

Delay generation of MAL variable names


diffs (77 lines):

diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -446,8 +446,10 @@ listFunction(stream *fd, MalBlkPtr mb, M
}
if ( flg == 0)
return;
+
assert(size>=0);
assert(first>=0 && first stop);
+   renameVariables(mb);
if (flg & LIST_MAL_MAPI) {
size_t len = 0;
str ps;
@@ -476,16 +478,18 @@ void
 renameVariables(MalBlkPtr mb)
 {
int i;
-   /* variables get their name from the position in the symbol table */
+   char *s;
+
+   /* Temporary variables get their name from the position in the symbol 
table */
+   /* However, also MAL input may contain temporary names. At some point 
you need to clean it up to avoid clashes */
+   /* Certainly when you are about to print the MAL function */
/* During optimization they may be copied around, which means there 
name should be re-establised */
/* rename all temporaries for ease of variable table interpretation */
/* this code should not be necessary is variables always keep their 
position */
for( i = 0; i < mb->vtop; i++) {
-   if (getVarName(mb,i)[0] == 'X' && getVarName(mb,i)[1] == '_')
-   snprintf(getVarName(mb,i),IDLENGTH,"X_%d",i);
-   else
-   if (getVarName(mb,i)[0] == 'C' && getVarName(mb,i)[1] == '_')
-   snprintf(getVarName(mb,i),IDLENGTH,"C_%d",i);
+   s = getVarName(mb, i);
+   if( s[1] == '_' && (*s == 'C' || *s == 'X'))
+   snprintf(s + 2, IDLENGTH-2, "%d", i);
}
 }
 
@@ -493,9 +497,13 @@ void printFunction(stream *fd, MalBlkPtr
 {
int i,j;
InstrPtr p;
+
+
// Set the used bits properly
for(i=0; i< mb->vtop; i++)
clrVarUsed(mb,i);
+
+
for(i=0; i< mb->stop; i++){
p= getInstrPtr(mb,i);
for(j= p->retc; jargc; j++)
diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h
--- a/monetdb5/mal/mal_instruction.h
+++ b/monetdb5/mal/mal_instruction.h
@@ -160,9 +160,6 @@ mal_export malType getType(MalBlkPtr mb,
 mal_export str getArgDefault(MalBlkPtr mb, InstrPtr p, int idx);
 mal_export int newVariable(MalBlkPtr mb, const char *name, size_t len, malType 
type);
 mal_export int cloneVariable(MalBlkPtr dst, MalBlkPtr src, int varid);
-/* generate a new variable name based on a pattern with 1 %d argument
- * -- not used, but this is how to do it */
-/* #define renameVariable(mb, id, pattern, newid) 
snprintf(getVarName(mb,id),IDLENGTH,pattern,newid) */
 mal_export void setVariableType(MalBlkPtr mb, const int idx, malType type);
 mal_export int newTmpVariable(MalBlkPtr mb, malType type);
 mal_export int newTypeVariable(MalBlkPtr mb, malType type);
diff --git a/monetdb5/optimizer/opt_garbageCollector.c 
b/monetdb5/optimizer/opt_garbageCollector.c
--- a/monetdb5/optimizer/opt_garbageCollector.c
+++ b/monetdb5/optimizer/opt_garbageCollector.c
@@ -40,7 +40,6 @@ OPTgarbageCollectorImplementation(Client
return 0;
 
limit = mb->stop;
-   renameVariables(mb);
 
 
// move SQL query definition to the front for event profiling tools
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Postpone MAL variable name generation when po...

2021-03-03 Thread martin kersten
Changeset: 9f8c2981696d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9f8c2981696d
Modified Files:
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
Branch: default
Log Message:

Postpone MAL variable name generation when possible.


diffs (62 lines):

diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -623,7 +623,7 @@ findVariableLength(MalBlkPtr mb, const c
int i;
 
for (i = mb->vtop - 1; i >= 0; i--) {
-   const char *s = getVarName(mb, i);
+   const char *s = mb->var[i].name; 
 
if (s && strncmp(name, s, len) == 0 && s[len] == 0)
return i;
@@ -773,6 +773,22 @@ setVariableType(MalBlkPtr mb, const int 
clrVarCleanup(mb, n);
 }
 
+
+char *
+getVarName(MalBlkPtr mb, int idx)
+{
+   char buf[IDLENGTH] = {0};
+   char *s = mb->var[idx].name;
+   if( getVarKind(mb,idx) == 0)
+   setVarKind(mb,idx, REFMARKER);
+   
+   if( *s &&  s[1] != '_' && (s[0] != 'X' && s[0] != 'C'))
+   return s;
+   if ( *s == 0)
+   (void) snprintf(buf, IDLENGTH,"%c_%d", getVarKind(mb, idx), 
mb->vid++);
+   return s;
+}
+
 int
 newVariable(MalBlkPtr mb, const char *name, size_t len, malType type)
 {
@@ -788,11 +804,11 @@ newVariable(MalBlkPtr mb, const char *na
return -1;
n = mb->vtop;
if( name == 0 || len == 0){
-   (void) snprintf(getVarName(mb,n), IDLENGTH,"%c_%d", kind, 
mb->vid++);
+   mb->var[n].name[0] = 0;
} else {
/* avoid calling strcpy_len since we're not interested in the
 * source length, and that may be very large */
-   char *nme = getVarName(mb,n);
+   char *nme = mb->var[n].name;  
for (size_t i = 0; i < len; i++)
nme[i] = name[i];
nme[len] = 0;
diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h
--- a/monetdb5/mal/mal_instruction.h
+++ b/monetdb5/mal/mal_instruction.h
@@ -47,7 +47,8 @@
 
 #define getVar(M,I)(&(M)->var[I])
 #define getVarType(M,I)((M)->var[I].type)
-#define getVarName(M,I)((M)->var[I].name)
+mal_export char* getVarName(MalBlkPtr mb, int idx);
+
 #define getVarKind(M,I)((M)->var[I].kind)
 #define getVarGDKType(M,I) getGDKType((M)->var[I].type)
 #define setVarType(M,I,V)  ((M)->var[I].type = V)
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Move the variable renaming to its logical place

2021-03-03 Thread martin kersten
Changeset: 0015b5a45265 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0015b5a45265
Modified Files:
monetdb5/mal/mal_function.c
monetdb5/mal/mal_function.h
monetdb5/optimizer/Tests/argumenttypes.maltest
monetdb5/optimizer/opt_garbageCollector.c
Branch: default
Log Message:

Move the variable renaming to its logical place


diffs (89 lines):

diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -471,6 +471,24 @@ listFunction(stream *fd, MalBlkPtr mb, M
printInstruction(fd, mb, stk, getInstrPtr(mb, i), flg);
 }
 
+
+void
+renameVariables(MalBlkPtr mb)
+{
+   int i;
+   /* variables get their name from the position in the symbol table */
+   /* During optimization they may be copied around, which means there 
name should be re-establised */
+   /* rename all temporaries for ease of variable table interpretation */
+   /* this code should not be necessary is variables always keep their 
position */
+   for( i = 0; i < mb->vtop; i++) {
+   if (getVarName(mb,i)[0] == 'X' && getVarName(mb,i)[1] == '_')
+   snprintf(getVarName(mb,i),IDLENGTH,"X_%d",i);
+   else
+   if (getVarName(mb,i)[0] == 'C' && getVarName(mb,i)[1] == '_')
+   snprintf(getVarName(mb,i),IDLENGTH,"C_%d",i);
+   }
+}
+
 void printFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg)
 {
int i,j;
diff --git a/monetdb5/mal/mal_function.h b/monetdb5/mal/mal_function.h
--- a/monetdb5/mal/mal_function.h
+++ b/monetdb5/mal/mal_function.h
@@ -29,6 +29,7 @@ mal_export int isLoopBarrier(MalBlkPtr m
 mal_export int getBlockExit(MalBlkPtr mb,int pc);
 mal_export int getBlockBegin(MalBlkPtr mb,int pc);
 mal_export void setVariableScope(MalBlkPtr mb);
+mal_export void renameVariables(MalBlkPtr mb);
 
 mal_export void printFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int 
flg);
 mal_export void traceFunction(component_t comp, MalBlkPtr mb, MalStkPtr stk, 
int flg);
diff --git a/monetdb5/optimizer/Tests/argumenttypes.maltest 
b/monetdb5/optimizer/Tests/argumenttypes.maltest
--- a/monetdb5/optimizer/Tests/argumenttypes.maltest
+++ b/monetdb5/optimizer/Tests/argumenttypes.maltest
@@ -1,8 +1,11 @@
 statement ok
-X:bat[:int] := bat.new(nil:int)
+function foo();
+X:bat[:int] := bat.new(nil:int);
+(X_115:bat[:int], X_116:bat[:oid], X_117:bat[:oid]) := 
algebra.sort(X:bat[:int], false:bit, false:bit, false:bit);
+end foo;
 
 statement ok
-(X_115:bat[:int], X_116:bat[:oid], X_117:bat[:oid]) := 
algebra.sort(X:bat[:int], false:bit, false:bit, false:bit)
+foo()
 
 statement error
 (X_115:bat[:lng], X_116:bat[:oid], X_117:bat[:oid]) := 
algebra.sort(X:bat[:lng], false:bit, false:bit, false:bit)
diff --git a/monetdb5/optimizer/opt_garbageCollector.c 
b/monetdb5/optimizer/opt_garbageCollector.c
--- a/monetdb5/optimizer/opt_garbageCollector.c
+++ b/monetdb5/optimizer/opt_garbageCollector.c
@@ -22,6 +22,7 @@
  *
  * The life time of such BATs is forcefully terminated after the block exit.
  */
+
 str
 OPTgarbageCollectorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci)
 {
@@ -39,20 +40,8 @@ OPTgarbageCollectorImplementation(Client
return 0;
 
limit = mb->stop;
+   renameVariables(mb);
 
-   /* variables get their name from the position */
-   /* rename all temporaries for ease of variable table interpretation */
-   /* this code should not be necessary is variables always keep their 
position */
-   for( i = 0; i < mb->vtop; i++) {
-   //strcpy(buf, getVarName(mb,i));
-   if (getVarName(mb,i)[0] == 'X' && getVarName(mb,i)[1] == '_')
-   snprintf(getVarName(mb,i),IDLENGTH,"X_%d",i);
-   else
-   if (getVarName(mb,i)[0] == 'C' && getVarName(mb,i)[1] == '_')
-   snprintf(getVarName(mb,i),IDLENGTH,"C_%d",i);
-   //if(strcmp(buf, getVarName(mb,i)) )
-   //fprintf(stderr, "non-matching name/entry %s %s\n", 
buf, getVarName(mb,i));
-   }
 
// move SQL query definition to the front for event profiling tools
p = NULL;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Move the information on the variable type int...

2021-03-03 Thread martin kersten
Changeset: ed4a867a9d1e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ed4a867a9d1e
Modified Files:
monetdb5/mal/Tests/tst024.maltest
monetdb5/mal/mal.h
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_type.c
monetdb5/optimizer/opt_remoteQueries.c
Branch: default
Log Message:

Move the information on the variable type into its own field.
A step to reduce the dependency on the MAL variable name


diffs (244 lines):

diff --git a/monetdb5/mal/Tests/tst024.maltest 
b/monetdb5/mal/Tests/tst024.maltest
--- a/monetdb5/mal/Tests/tst024.maltest
+++ b/monetdb5/mal/Tests/tst024.maltest
@@ -1,17 +1,12 @@
 statement ok
-i:= 12
-
-statement ok
-_2:=55
-
-statement ok
-_3:= 23
-
-statement ok
-_5:=23
+function foo();
+X_5:=32;
+X_5:=23;
+io.print(X_5);
+end foo;
 
 query T rowsort
-io.print(_5)
+user.foo();
 
 23
 
diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
+++ b/monetdb5/mal/mal.h
@@ -117,9 +117,10 @@ typedef struct SYMDEF {
 } *Symbol, SymRecord;
 
 typedef struct VARRECORD {
-   char id[IDLENGTH];  /* use the space for the full 
name */
+   char name[IDLENGTH];/* use the space for the full 
name */
+   char kind;  /* Could be either _, X or C to 
stamp the variable type */
malType type;   /* internal type signature */
-bool constant:1,
+   bool constant:1,
 typevar:1,
 fixedtype:1,
 //FREE SPOT NOW:1,
diff --git a/monetdb5/mal/mal_debugger.c b/monetdb5/mal/mal_debugger.c
--- a/monetdb5/mal/mal_debugger.c
+++ b/monetdb5/mal/mal_debugger.c
@@ -56,11 +56,9 @@ typedef struct MDBSTATE{
 static void
 printStackHdr(stream *f, MalBlkPtr mb, ValPtr v, int index)
 {
-   VarPtr n = getVar(mb, index);
-
if (v == 0 && isVarConstant(mb, index))
v = (mb, index);
-   mnstr_printf(f, "#[%2d] %5s", index, n->id);
+   mnstr_printf(f, "#[%2d] %5s", index, getVarName(mb,index));
mnstr_printf(f, " (%d,%d,%d) = ", getBeginScope(mb,index), 
getLastUpdate(mb,index),getEndScope(mb, index));
if (v)
ATOMprint(v->vtype, VALptr(v), f);
@@ -592,7 +590,6 @@ mdbSetBreakRequest(Client cntxt, MalBlkP
}
/* the final step is to break on a variable */
i = findVariable(mb, request);
-   /* ignore a possible dummy TMPMARKER character */
if ( i < 0)
i = findVariable(mb, request+1);
if (i < 0)
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -777,6 +777,7 @@ int
 newVariable(MalBlkPtr mb, const char *name, size_t len, malType type)
 {
int n;
+   int kind = REFMARKER;
 
if( len >= IDLENGTH){
mb->errors = createMalException(mb,0,TYPE, "newVariable: id too 
long");
@@ -787,7 +788,7 @@ newVariable(MalBlkPtr mb, const char *na
return -1;
n = mb->vtop;
if( name == 0 || len == 0){
-   (void) snprintf(getVarName(mb,n), IDLENGTH,"%c%c%d", REFMARKER, 
TMPMARKER,mb->vid++);
+   (void) snprintf(getVarName(mb,n), IDLENGTH,"%c_%d", kind, 
mb->vid++);
} else {
/* avoid calling strcpy_len since we're not interested in the
 * source length, and that may be very large */
@@ -795,9 +796,11 @@ newVariable(MalBlkPtr mb, const char *na
for (size_t i = 0; i < len; i++)
nme[i] = name[i];
nme[len] = 0;
+   kind = nme[0];
}
 
mb->vtop++;
+   setVarKind(mb, n, kind);
setVariableType(mb, n, type);
return n;
 }
@@ -824,6 +827,7 @@ cloneVariable(MalBlkPtr tm, MalBlkPtr mb
if (isVarCleanup(mb, x))
setVarCleanup(tm, res);
getVarSTC(tm,x) = getVarSTC(mb,x);
+   setVarKind(tm,x, getVarKind(mb,x));
return res;
 }
 
@@ -928,7 +932,7 @@ trimMalVariables_(MalBlkPtr mb, MalStkPt
mb->vid = 0;
for( i =0; i< cnt; i++)
if( isTmpVar(mb,i))
-(void) snprintf(mb->var[i].id, IDLENGTH,"%c%c%d", REFMARKER, 
TMPMARKER,mb->vid++);
+   (void) snprintf(getVarName(mb,i), IDLENGTH,"%c_%d", 
getVarKind(mb,i), mb->vid++);
 
GDKfree(alias);
mb->vtop = cnt;
diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h
--- a/monetdb5/mal/mal_instruction.h
+++ b/monetdb5/mal/mal_instruction.h
@@ -45,60 +45,62 @@
 #define getModName(M)  getModuleId(getInstrPtr(M,0))
 #define getPrgSize(M)  (M)->stop
 
-#define getVar(M,I)(&(M)->var[I])
+#define getVar(M,I)(&(M)->var[I])
 #define getVarType(M,I)((M)->var[I].type)
-#define getVarName(M,I)

MonetDB: default - At the moment, error messages are not tested

2021-03-03 Thread Pedro Ferreira
Changeset: 23a20cccfba9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=23a20cccfba9
Modified Files:
sql/test/Tests/foreign_key.test
sql/test/Tests/savepoints1.test
sql/test/Tests/savepoints2.test
Branch: default
Log Message:

At the moment, error messages are not tested


diffs (42 lines):

diff --git a/sql/test/Tests/foreign_key.test b/sql/test/Tests/foreign_key.test
--- a/sql/test/Tests/foreign_key.test
+++ b/sql/test/Tests/foreign_key.test
@@ -19,7 +19,7 @@ INSERT INTO maps VALUES (1, NULL, 1, 'wo
 statement ok
 INSERT INTO maps VALUES (2, 1, 1, 'world-map-1600-1700.jpg', 0, 0, 0, 0)
 
-statement error 40002!INSERT INTO: FOREIGN KEY constraint 
'maps.maps_parent_fkey' violated
+statement error
 INSERT INTO maps VALUES (3, 10, 1, 'world-map-1600-1700.jpg', 0, 0, 0, 0)
 
 query IIIT rowsort
diff --git a/sql/test/Tests/savepoints1.test b/sql/test/Tests/savepoints1.test
--- a/sql/test/Tests/savepoints1.test
+++ b/sql/test/Tests/savepoints1.test
@@ -153,6 +153,6 @@ drop table savepointtest
 statement ok
 commit
 
-statement error 42S02!SELECT: no such table 'savepointtest'
+statement error
 select * from savepointtest
 
diff --git a/sql/test/Tests/savepoints2.test b/sql/test/Tests/savepoints2.test
--- a/sql/test/Tests/savepoints2.test
+++ b/sql/test/Tests/savepoints2.test
@@ -72,12 +72,12 @@ 7
 8
 9
 
-statement error 42000!ROLLBACK TO SAVEPOINT: no such savepoint: 'name1'
+statement error
 rollback to savepoint name1
 
-statement error 25005!Current transaction is aborted (please ROLLBACK)
+statement error
 select * from savepointtest
 
-statement error 4!COMMIT: transaction is aborted, will ROLLBACK instead
+statement error
 commit
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


monetdb-java: default - Implemented fix for released monetdb-jdb...

2021-03-03 Thread Martin van Dinther
Changeset: 5ddfc0aa7f0e for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=5ddfc0aa7f0e
Modified Files:
ChangeLog
src/main/java/org/monetdb/mcl/parser/StartOfHeaderParser.java
Branch: default
Log Message:

Implemented fix for released monetdb-jdbc-3.0.jre8.jar and 
monetdb-mcl-1.19.jre8.jar when it is was run using java build 1.8.0_###.
It would throw:  java.lang.NoSuchMethodError: 
java.nio.CharBuffer.mark()Ljava/nio/CharBuffer;i
 at org.monetdb.mcl.parser.StartOfHeaderParser.getNextAsString(Unknown Source)
 at org.monetdb.jdbc.MonetConnection$ResponseList.executeQuery(Unknown Source)
 at org.monetdb.jdbc.MonetConnection$ResponseList.processQuery(Unknown Source)
 at org.monetdb.jdbc.MonetStatement.internalExecute(Unknown Source)
 at org.monetdb.jdbc.MonetStatement.execute(Unknown Source)
The problem is caused by a change in java.nio.CharBuffer API (return types of 
methods mark() and reset() have changed from Buffer to CharBuffer) from Java 8 
to Java 9+.


diffs (51 lines):

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,22 @@
 # ChangeLog file for monetdb-java
 # This file is updated with Maddlog
 
+* Wed Mar  3 2021 Martin van Dinther 
+- Implemented fix for released monetdb-jdbc-3.0.jre8.jar and
+  monetdb-mcl-1.19.jre8.jar when it is was run using java build
+  1.8.0_###.  It would throw:  java.lang.NoSuchMethodError:
+  java.nio.CharBuffer.mark()Ljava/nio/CharBuffer; at
+  org.monetdb.mcl.parser.StartOfHeaderParser.getNextAsString(Unknown
+  Source) at
+  org.monetdb.jdbc.MonetConnection$ResponseList.executeQuery(Unknown
+  Source) at
+  org.monetdb.jdbc.MonetConnection$ResponseList.processQuery(Unknown
+  Source) at org.monetdb.jdbc.MonetStatement.internalExecute(Unknown
+  Source) at org.monetdb.jdbc.MonetStatement.execute(Unknown Source)
+  The problem is caused by a change in java.nio.CharBuffer API (return
+  types of methods mark() and reset() have changed from Buffer to
+  CharBuffer) from Java 8 to Java 9+.
+
 * Wed Feb 17 2021 Martin van Dinther 
 - Compiled and released new jar files: monetdb-jdbc-3.0.jre8.jar,
   monetdb-mcl-1.19.jre8.jar and jdbcclient.jre8.jar
diff --git a/src/main/java/org/monetdb/mcl/parser/StartOfHeaderParser.java 
b/src/main/java/org/monetdb/mcl/parser/StartOfHeaderParser.java
--- a/src/main/java/org/monetdb/mcl/parser/StartOfHeaderParser.java
+++ b/src/main/java/org/monetdb/mcl/parser/StartOfHeaderParser.java
@@ -8,6 +8,7 @@
 
 package org.monetdb.mcl.parser;
 
+import java.nio.Buffer;// needed as some CharBuffer overridden methods 
(mark() and reset()) return type changed between Java 8 (return Buffer) and 9 
(or higher) (return CharBuffer)
 import java.nio.CharBuffer;
 
 /**
@@ -147,11 +148,11 @@ public final class StartOfHeaderParser {
throw new MCLParseException("unexpected end of string", 
soh.position() - 1);
 
int cnt = 0;
-   soh.mark();
+   ((Buffer)soh).mark();
while (soh.hasRemaining() && soh.get() != ' ') {
cnt++;
}
-   soh.reset();
+   ((Buffer)soh).reset();
 
return soh.subSequence(0, cnt).toString();
}
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Approved output

2021-03-03 Thread Pedro Ferreira
Changeset: 55183d3b4786 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=55183d3b4786
Modified Files:
sql/test/sql_dump/Tests/dump.test
Branch: default
Log Message:

Approved output


diffs (22 lines):

diff --git a/sql/test/sql_dump/Tests/dump.test 
b/sql/test/sql_dump/Tests/dump.test
--- a/sql/test/sql_dump/Tests/dump.test
+++ b/sql/test/sql_dump/Tests/dump.test
@@ -381,12 +381,12 @@ COMMENT ON INDEX "sys"."ind3" IS  'This 
 COMMENT ON SEQUENCE "sys"."seq1" IS  'This is a comment on a sequence.' ;
 COMMENT ON WINDOW "sys"."stddev" IS  'This is a comment on a window function.' 
;
 TRUNCATE sys.privileges;
-INSERT INTO sys.privileges VALUES ((SELECT t.id FROM sys.schemas s, tables t 
WHERE s.id = t.schema_id AND s.name || '.' || t.name = 'sys.foo' ),(SELECT id 
FROM auths a WHERE a.name =  'voc' ),(SELECT pc.privilege_code_id FROM 
privilege_codes pc WHERE pc.privilege_code_name =  'SELECT' ),(SELECT id FROM 
auths g WHERE g.name =  'monetdb' ),0);
-INSERT INTO sys.privileges VALUES ((SELECT c.id FROM sys.schemas s, tables t, 
columns c WHERE s.id = t.schema_id AND t.id = c.table_id AND s.name || '.' || 
t.name || '.' || c.name = 'sys.foo.i' ),(SELECT id FROM auths a WHERE a.name =  
'voc' ),(SELECT pc.privilege_code_id FROM privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM auths g WHERE g.name =  
'monetdb' ),0);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe = 
 'FUNCTION' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),0);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe = 
 'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),0);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1()'  AND fqn.tpe =  
'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),1);
-INSERT INTO sys.privileges VALUES (0,(SELECT id FROM auths a WHERE a.name =  
'voc' ),(SELECT pc.privilege_code_id FROM privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM auths g WHERE g.name =  
'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT t.id FROM sys.schemas s, sys.tables 
t WHERE s.id = t.schema_id AND s.name || '.' || t.name = 'sys.foo' ),(SELECT id 
FROM sys.auths a WHERE a.name =  'voc' ),(SELECT pc.privilege_code_id FROM 
sys.privilege_codes pc WHERE pc.privilege_code_name =  'SELECT' ),(SELECT id 
FROM sys.auths g WHERE g.name =  'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT c.id FROM sys.schemas s, sys.tables 
t, sys.columns c WHERE s.id = t.schema_id AND t.id = c.table_id AND s.name || 
'.' || t.name || '.' || c.name = 'sys.foo.i' ),(SELECT id FROM sys.auths a 
WHERE a.name =  'voc' ),(SELECT pc.privilege_code_id FROM sys.privilege_codes 
pc WHERE pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM sys.auths g WHERE 
g.name =  'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
sys.fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND 
fqn.tpe =  'FUNCTION' ),(SELECT id FROM sys.auths a WHERE a.name =  'voc' 
),(SELECT pc.privilege_code_id FROM sys.privilege_codes pc WHERE 
pc.privilege_code_name =  'EXECUTE' ),(SELECT id FROM sys.auths g WHERE g.name 
=  'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
sys.fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND 
fqn.tpe =  'PROCEDURE' ),(SELECT id FROM sys.auths a WHERE a.name =  'voc' 
),(SELECT pc.privilege_code_id FROM sys.privilege_codes pc WHERE 
pc.privilege_code_name =  'EXECUTE' ),(SELECT id FROM sys.auths g WHERE g.name 
=  'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
sys.fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1()'  AND fqn.tpe =  
'PROCEDURE' ),(SELECT id FROM sys.auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM sys.privilege_codes pc WHERE pc.privilege_code_name = 
 'EXECUTE' ),(SELECT id FROM sys.auths g WHERE g.name =  'monetdb' ),1);
+INSERT INTO sys.privileges VALUES (0,(SELECT id FROM sys.auths a WHERE a.name 
=  'voc' ),(SELECT pc.privilege_code_id FROM sys.privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM sys.auths g WHERE g.name = 
 'monetdb' ),0);
 COPY 3 RECORDS INTO "sys"."tbl_with_data"("c1", "c2", "c3", "c4", "c5", "c6", 
"c7", "c8", "c9", "c10", "c11", "c12", "c13", "c14", "c18", "c19", 

MonetDB: default - This test is no longer failing

2021-03-03 Thread Pedro Ferreira
Changeset: 695489afcc2d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=695489afcc2d
Modified Files:
sql/test/Triggers/Tests/All
Branch: default
Log Message:

This test is no longer failing


diffs (10 lines):

diff --git a/sql/test/Triggers/Tests/All b/sql/test/Triggers/Tests/All
--- a/sql/test/Triggers/Tests/All
+++ b/sql/test/Triggers/Tests/All
@@ -7,5 +7,5 @@ trigger_activation
 trigger_owner
 triggers_schema_operations
 trigger_insert
-KNOWNFAIL?trigger_projection
+trigger_projection
 trigger_schema
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Merged with Oct2020

2021-03-03 Thread Pedro Ferreira
Changeset: 701eb0e24417 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=701eb0e24417
Modified Files:
gdk/gdk_logger.c
gdk/gdk_string.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_unnest.c

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-0join-query.test

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-1join-query.test

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-1join-view.test

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-query.test

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-view.test

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-prologue.test
Branch: default
Log Message:

Merged with Oct2020


diffs (truncated from 836 to 300 lines):

diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -176,6 +176,46 @@ strLocate(Heap *h, const char *v)
return 0;
 }
 
+static inline gdk_return
+checkUTF8(const char *v)
+{
+   if (v[0] != '\200' || v[1] != '\0') {
+   /* check that string is correctly encoded UTF-8; there
+* was no need to do this earlier: if the string was
+* found above, it must have gone through here in the
+* past */
+   int nutf8 = 0;
+   int m = 0;
+   for (size_t i = 0; v[i]; i++) {
+   if (nutf8 > 0) {
+   if ((v[i] & 0xC0) != 0x80 ||
+   (m != 0 && (v[i] & m) == 0))
+   goto badutf8;
+   m = 0;
+   nutf8--;
+   } else if ((v[i] & 0xE0) == 0xC0) {
+   nutf8 = 1;
+   if ((v[i] & 0x1E) == 0)
+   goto badutf8;
+   } else if ((v[i] & 0xF0) == 0xE0) {
+   nutf8 = 2;
+   if ((v[i] & 0x0F) == 0)
+   m = 0x20;
+   } else if ((v[i] & 0xF8) == 0xF0) {
+   nutf8 = 3;
+   if ((v[i] & 0x07) == 0)
+   m = 0x30;
+   } else if ((v[i] & 0x80) != 0) {
+   goto badutf8;
+   }
+   }
+   }
+   return GDK_SUCCEED;
+
+  badutf8:
+   return GDK_FAIL;
+}
+
 var_t
 strPut(BAT *b, var_t *dst, const void *V)
 {
@@ -221,39 +261,9 @@ strPut(BAT *b, var_t *dst, const void *V
}
/* the string was not found in the heap, we need to enter it */
 
-   if (v[0] != '\200' || v[1] != '\0') {
-   /* check that string is correctly encoded UTF-8; there
-* was no need to do this earlier: if the string was
-* found above, it must have gone through here in the
-* past */
-   int nutf8 = 0;
-   int m = 0;
-   for (size_t i = 0; v[i]; i++) {
-   if (nutf8 > 0) {
-   if ((v[i] & 0xC0) != 0x80 ||
-   (m != 0 && (v[i] & m) == 0)) {
- badutf8:
-   GDKerror("incorrectly encoded UTF-8");
-   return 0;
-   }
-   m = 0;
-   nutf8--;
-   } else if ((v[i] & 0xE0) == 0xC0) {
-   nutf8 = 1;
-   if ((v[i] & 0x1E) == 0)
-   goto badutf8;
-   } else if ((v[i] & 0xF0) == 0xE0) {
-   nutf8 = 2;
-   if ((v[i] & 0x0F) == 0)
-   m = 0x20;
-   } else if ((v[i] & 0xF8) == 0xF0) {
-   nutf8 = 3;
-   if ((v[i] & 0x07) == 0)
-   m = 0x30;
-   } else if ((v[i] & 0x80) != 0) {
-   goto badutf8;
-   }
-   }
+   if (checkUTF8(v) != GDK_SUCCEED) {
+   GDKerror("incorrectly encoded UTF-8\n");
+   return 0;
}
 
pad = GDK_VARALIGN - (h->free & (GDK_VARALIGN - 1));
@@ -789,6 +799,10 @@ strWrite(const char *a, stream *s, size_
 
(void) cnt;
assert(cnt == 1);
+   if (checkUTF8(a) != GDK_SUCCEED) {
+   GDKerror("incorrectly encoded 

MonetDB: default - approved output

2021-03-03 Thread Niels Nes
Changeset: 85e6033cdc07 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=85e6033cdc07
Modified Files:
clients/Tests/exports.stable.out
Branch: default
Log Message:

approved output


diffs (12 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -16,7 +16,7 @@ BAT *BATanyequal_grp(BAT *l, BAT *r, BAT
 BAT *BATanyequal_grp2(BAT *l, BAT *r, BAT *rid, BAT *g, BAT *e, BAT *s);
 gdk_return BATappend(BAT *b, BAT *n, BAT *s, bool force) 
__attribute__((__warn_unused_result__));
 void BATassertProps(BAT *b);
-atomDesc BATatoms[];
+atomDesc BATatoms[MAXATOMS];
 BAT *BATattach(int tt, const char *heapfile, role_t role);
 gdk_return BATbandjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
const void *c1, const void *c2, bool li, bool hi, BUN estimate) 
__attribute__((__warn_unused_result__));
 BAT *BATcalcabsolute(BAT *b, BAT *s);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - merged

2021-03-03 Thread Niels Nes
Changeset: af5901f68578 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=af5901f68578
Branch: default
Log Message:

merged


diffs (135 lines):

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
@@ -3208,36 +3208,36 @@ sql_update_default(Client c, mvc *sql, c
"(\n"
"(\n"
"type = (select 
function_type_id from sys.function_types where function_type_name = 'Function 
returning a table') AND\n"
-   "(\n"
-   "name = 'dump_database' 
OR\n"
-   "name = 
'describe_table' OR\n"
-   "name = 
'describe_columns' OR\n"
-   "name = 
'describe_function'\n"
+   "name in (\n"
+   "'dump_database',\n"
+   "'describe_table',\n"
+   "'describe_columns',\n"
+   "'describe_function'\n"
")\n"
") OR\n"
"(\n"
"type = (select 
function_type_id from sys.function_types where function_type_name = 'Scalar 
function') AND\n"
-   "(\n"
-   "name = 'sq' OR\n"
-   "name = 'dq' OR\n"
-   "name = 'fqn' OR\n"
-   "name = 'alter_table' 
OR\n"
-   "name = 'replace_first' 
OR\n"
-   "name = 'schema_guard' 
OR\n"
-   "name = 
'get_merge_table_partition_expressions' OR\n"
-   "name = 
'get_remote_table_expressions' OR\n"
-   "name = 'esc' OR\n"
-   "name = 'prepare_esc' 
OR\n"
-   "name = 
'current_size_dump_statements' OR\n"
-   "name = 
'describe_type'\n"
+   "name in (\n"
+   "'sq',\n"
+   "'dq',\n"
+   "'fqn',\n"
+   "'alter_table',\n"
+   "'replace_first',\n"
+   "'schema_guard',\n"
+   "
'get_merge_table_partition_expressions',\n"
+   "
'get_remote_table_expressions',\n"
+   "'esc',\n"
+   "'prepare_esc',\n"
+   "
'current_size_dump_statements',\n"
+   "'describe_type'\n"
")\n"
") OR\n"
"(\n"
"type = (select 
function_type_id from sys.function_types where function_type_keyword = 
'PROCEDURE') AND\n"
-   "(\n"
-   "name = 'eval' OR\n"
-   "name = 
'_dump_table_data' OR\n"
-   "name = 
'dump_table_data'\n"
+   "name in (\n"
+   "'eval',\n"
+   "'_dump_table_data',\n"
+   "'dump_table_data'\n"
")\n"
")\n"
");\n"

MonetDB: default - approved output

2021-03-03 Thread Niels Nes
Changeset: 9cbde54ea33a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9cbde54ea33a
Modified Files:
sql/test/Dependencies/Tests/dependency_owner_schema_3.test
Branch: default
Log Message:

approved output


diffs (21 lines):

diff --git a/sql/test/Dependencies/Tests/dependency_owner_schema_3.test 
b/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
--- a/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
+++ b/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
@@ -48,7 +48,7 @@ DEP_SCHEMA
 query TTT rowsort
 SELECT t.name, v.name, 'DEP_VIEW' from sys.tables as t, sys.tables as v, 
sys.dependencies as dep where t.id = dep.id AND v.id = dep.depend_id AND 
dep.depend_type = 5 AND v.type in (1, 11, 21, 31) order by t.name, v.name
 
-564 values hashing to 2296fb6b8831002f7203b6982a75ac62
+564 values hashing to cff98513dfae81673eb5b21ca15700dc
 
 query TTT rowsort
 SELECT t.name, i.name, 'DEP_INDEX' from sys.tables as t, sys.idxs as i where 
i.table_id = t.id and i.name not in (select name from sys.keys) and t.type in 
(0, 10, 20, 30) order by t.name, i.name
@@ -126,7 +126,7 @@ DEP_FUNC
 query TTT rowsort
 SELECT c.name, v.name, 'DEP_VIEW' from sys.columns as c, sys.tables as v, 
sys.dependencies as dep where c.id = dep.id AND v.id = dep.depend_id AND 
dep.depend_type = 5 AND v.type in (1, 11, 21, 31) order by c.name, v.name
 
-2028 values hashing to e4d83e2392d2ba2271d72e36cf09a7ae
+2028 values hashing to b6e1dda84af6e29efe27713e347cf87d
 
 query TTT rowsort
 SELECT c.name, k.name, 'DEP_KEY' from sys.columns as c,  sys.objects as kc, 
sys.keys as k where kc."name" = c.name AND kc.id = k.id AND k.table_id = 
c.table_id AND k.rkey = -1 order by c.name, k.name
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - approved output

2021-03-03 Thread Niels Nes
Changeset: 2f485f04b108 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2f485f04b108
Modified Files:
sql/test/Dependencies/Tests/dependency_DBobjects.test
Branch: default
Log Message:

approved output


diffs (12 lines):

diff --git a/sql/test/Dependencies/Tests/dependency_DBobjects.test 
b/sql/test/Dependencies/Tests/dependency_DBobjects.test
--- a/sql/test/Dependencies/Tests/dependency_DBobjects.test
+++ b/sql/test/Dependencies/Tests/dependency_DBobjects.test
@@ -352,7 +352,7 @@ DEP_FUNC
 dump_functions
 dump_database
 DEP_FUNC
-dump_grant_user_priviledges
+dump_grant_user_privileges
 dump_database
 DEP_FUNC
 dump_indices
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Slight change to upgrade queries.

2021-03-03 Thread Sjoerd Mullender
Changeset: a91e3e0050c3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a91e3e0050c3
Modified Files:
sql/backends/monet5/sql_upgrades.c
Branch: default
Log Message:

Slight change to upgrade queries.


diffs (135 lines):

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
@@ -3208,36 +3208,36 @@ sql_update_default(Client c, mvc *sql, c
"(\n"
"(\n"
"type = (select 
function_type_id from sys.function_types where function_type_name = 'Function 
returning a table') AND\n"
-   "(\n"
-   "name = 'dump_database' 
OR\n"
-   "name = 
'describe_table' OR\n"
-   "name = 
'describe_columns' OR\n"
-   "name = 
'describe_function'\n"
+   "name in (\n"
+   "'dump_database',\n"
+   "'describe_table',\n"
+   "'describe_columns',\n"
+   "'describe_function'\n"
")\n"
") OR\n"
"(\n"
"type = (select 
function_type_id from sys.function_types where function_type_name = 'Scalar 
function') AND\n"
-   "(\n"
-   "name = 'sq' OR\n"
-   "name = 'dq' OR\n"
-   "name = 'fqn' OR\n"
-   "name = 'alter_table' 
OR\n"
-   "name = 'replace_first' 
OR\n"
-   "name = 'schema_guard' 
OR\n"
-   "name = 
'get_merge_table_partition_expressions' OR\n"
-   "name = 
'get_remote_table_expressions' OR\n"
-   "name = 'esc' OR\n"
-   "name = 'prepare_esc' 
OR\n"
-   "name = 
'current_size_dump_statements' OR\n"
-   "name = 
'describe_type'\n"
+   "name in (\n"
+   "'sq',\n"
+   "'dq',\n"
+   "'fqn',\n"
+   "'alter_table',\n"
+   "'replace_first',\n"
+   "'schema_guard',\n"
+   "
'get_merge_table_partition_expressions',\n"
+   "
'get_remote_table_expressions',\n"
+   "'esc',\n"
+   "'prepare_esc',\n"
+   "
'current_size_dump_statements',\n"
+   "'describe_type'\n"
")\n"
") OR\n"
"(\n"
"type = (select 
function_type_id from sys.function_types where function_type_keyword = 
'PROCEDURE') AND\n"
-   "(\n"
-   "name = 'eval' OR\n"
-   "name = 
'_dump_table_data' OR\n"
-   "name = 
'dump_table_data'\n"
+   "name in (\n"
+   "'eval',\n"
+   "'_dump_table_data',\n"
+   "'dump_table_data'\n"
")\n"
 

MonetDB: Oct2020 - Merged with Jun2020

2021-03-03 Thread Pedro Ferreira
Changeset: f9823b730e7d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f9823b730e7d
Modified Files:
sql/benchmarks/tpcds/Tests/40.stable.out
sql/benchmarks/tpcds/Tests/40.stable.out.int128
Branch: Oct2020
Log Message:

Merged with Jun2020


diffs (24 lines):

diff --git a/sql/benchmarks/tpcds/Tests/40.stable.out 
b/sql/benchmarks/tpcds/Tests/40.stable.out
--- a/sql/benchmarks/tpcds/Tests/40.stable.out
+++ b/sql/benchmarks/tpcds/Tests/40.stable.out
@@ -35,7 +35,7 @@ stdout of test '40` in directory 'sql/be
 #   END) AS sales_after
 #FROM catalog_sales
 #LEFT OUTER JOIN catalog_returns ON (cs_order_number = cr_order_number
-% sys.warehouse,   sys.item,   .,  . # table_name
+% sys.warehouse,   .item,  .,  . # table_name
 % w_state, i_item_id,  sales_before,   sales_after # name
 % char,char,   decimal,decimal # type
 % 2,   16, 20, 20 # length
diff --git a/sql/benchmarks/tpcds/Tests/40.stable.out.int128 
b/sql/benchmarks/tpcds/Tests/40.stable.out.int128
--- a/sql/benchmarks/tpcds/Tests/40.stable.out.int128
+++ b/sql/benchmarks/tpcds/Tests/40.stable.out.int128
@@ -35,7 +35,7 @@ stdout of test '40` in directory 'sql/be
 #   END) AS sales_after
 #FROM catalog_sales
 #LEFT OUTER JOIN catalog_returns ON (cs_order_number = cr_order_number
-% sys.warehouse,   sys.item,   .,  . # table_name
+% sys.warehouse,   .item,  .,  . # table_name
 % w_state, i_item_id,  sales_before,   sales_after # name
 % char,char,   decimal,decimal # type
 % 2,   16, 40, 40 # length
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - approved output

2021-03-03 Thread Niels Nes
Changeset: e350b18ca635 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e350b18ca635
Modified Files:
sql/test/Dependencies/Tests/dependency_owner_schema_3.test
Branch: default
Log Message:

approved output


diffs (12 lines):

diff --git a/sql/test/Dependencies/Tests/dependency_owner_schema_3.test 
b/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
--- a/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
+++ b/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
@@ -226,7 +226,7 @@ DEP_FUNC
 dump_functions
 dump_database
 DEP_FUNC
-dump_grant_user_priviledges
+dump_grant_user_privileges
 dump_database
 DEP_FUNC
 dump_indices
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jun2020 - Approved output

2021-03-03 Thread Pedro Ferreira
Changeset: 78498a26d715 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=78498a26d715
Modified Files:
sql/benchmarks/tpcds/Tests/40.stable.out
sql/benchmarks/tpcds/Tests/40.stable.out.int128
Branch: Jun2020
Log Message:

Approved output


diffs (24 lines):

diff --git a/sql/benchmarks/tpcds/Tests/40.stable.out 
b/sql/benchmarks/tpcds/Tests/40.stable.out
--- a/sql/benchmarks/tpcds/Tests/40.stable.out
+++ b/sql/benchmarks/tpcds/Tests/40.stable.out
@@ -35,7 +35,7 @@ stdout of test '40` in directory 'sql/be
 #   END) AS sales_after
 #FROM catalog_sales
 #LEFT OUTER JOIN catalog_returns ON (cs_order_number = cr_order_number
-% sys.warehouse,   sys.item,   sys.,   sys. # table_name
+% sys.warehouse,   .item,  sys.,   sys. # table_name
 % w_state, i_item_id,  sales_before,   sales_after # name
 % char,char,   decimal,decimal # type
 % 2,   16, 20, 20 # length
diff --git a/sql/benchmarks/tpcds/Tests/40.stable.out.int128 
b/sql/benchmarks/tpcds/Tests/40.stable.out.int128
--- a/sql/benchmarks/tpcds/Tests/40.stable.out.int128
+++ b/sql/benchmarks/tpcds/Tests/40.stable.out.int128
@@ -35,7 +35,7 @@ stdout of test '40` in directory 'sql/be
 #   END) AS sales_after
 #FROM catalog_sales
 #LEFT OUTER JOIN catalog_returns ON (cs_order_number = cr_order_number
-% sys.warehouse,   sys.item,   sys.,   sys. # table_name
+% sys.warehouse,   .item,  sys.,   sys. # table_name
 % w_state, i_item_id,  sales_before,   sales_after # name
 % char,char,   decimal,decimal # type
 % 2,   16, 40, 40 # length
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - only don't add a change too the transactions ...

2021-03-03 Thread Niels Nes
Changeset: 20b98fb8f6fe for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=20b98fb8f6fe
Modified Files:
sql/storage/bat/bat_storage.c
Branch: default
Log Message:

only don't add a change too the transactions log, if the object is already 
added with a content change (not just on the object set)


diffs (12 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -14,7 +14,7 @@
 #include "gdk_atoms.h"
 #include "matomic.h"
 
-#define inTransaction(tr,t) (isLocalTemp(t) || 
os_obj_intransaction(t->s->tables, tr, >base))
+#define inTransaction(tr,t) (isLocalTemp(t))
 
 static int log_update_col( sql_trans *tr, sql_change *c);
 static int log_update_idx( sql_trans *tr, sql_change *c);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2020 - Don't expand the cardinality on global groupi...

2021-03-03 Thread Pedro Ferreira
Changeset: 29af9dedbaf7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=29af9dedbaf7
Modified Files:
sql/server/rel_unnest.c
Branch: Oct2020
Log Message:

Don't expand the cardinality on global groupings (I will fix the merge conflict)


diffs (12 lines):

diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -1761,6 +1761,8 @@ exp_reset_card_and_freevar(visitor *v, s
}
if (is_simple_project(rel->op) && need_distinct(rel)) /* Need distinct, 
all expressions should have CARD_AGGR at max */
e->card = MIN(e->card, CARD_AGGR);
+   if (!is_groupby(rel->op) || !list_empty(rel->r)) /* global groupings 
have atomic cardinality */
+   rel->card = MAX(e->card, rel->card); /* the relation 
cardinality may get updated too */
return e;
 }
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


monetdb-java: default - Converted and added example program SQLc...

2021-03-03 Thread Martin van Dinther
Changeset: d7bac8d0fb93 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=d7bac8d0fb93
Modified Files:
tests/JDBC_API_Tester.java
Branch: default
Log Message:

Converted and added example program SQLcopyinto() to JDBC_API_Tester.java


diffs (truncated from 1283 to 300 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
@@ -94,6 +94,7 @@ final public class JDBC_API_Tester {
jt.Bug_PrepStmt_With_Errors_Jira292();
jt.BugResultSetMetaData_Bug_6183();
jt.BugSetQueryTimeout_Bug_3357();
+   jt.SQLcopyinto();
 
jt.closeConx(jt.con);
}
@@ -252,7 +253,7 @@ final public class JDBC_API_Tester {
stmt = con.createStatement();
 
// sending big script with many simple queries
-   sb.append("1. executing script").append("\n");
+   sb.append("1. executing script\n");
stmt.execute(bigq.toString());
 
int i = 1;  // we skip the first "getResultSet()"
@@ -260,12 +261,12 @@ final public class JDBC_API_Tester {
i++;
}
if (stmt.getUpdateCount() != -1) {
-   sb.append("Error: found an update count for a 
SELECT query").append("\n");
+   sb.append("Error: found an update count for a 
SELECT query\n");
}
if (i != size) {
sb.append("Error: expecting 
").append(size).append(" tuples, only got ").append(i).append("\n");
}
-   sb.append("2. queries processed").append("\n");
+   sb.append("2. queries processed\n");
} catch (SQLException e) {
sb.append("FAILED: 
").append(e.getMessage()).append("\n");
}
@@ -345,16 +346,16 @@ final public class JDBC_API_Tester {
// test commit by checking if a change is visible in 
another connection
sb.append("1. create... ");
stmt1.executeUpdate("CREATE TABLE table_Test_Creplysize 
( id int )");
-   sb.append("passed").append("\n");
+   sb.append("passed\n");
 
sb.append("2. populating with 21 records... ");
for (int i = 0; i < 21; i++)
stmt1.executeUpdate("INSERT INTO 
table_Test_Creplysize (id) values (" + (i + 1) + ")");
-   sb.append("passed").append("\n");
+   sb.append("passed\n");
 
sb.append("3. hinting the driver to use fetchsize 10... 
");
stmt1.setFetchSize(10);
-   sb.append("passed").append("\n");
+   sb.append("passed\n");
 
sb.append("4. selecting all values... ");
rs = stmt1.executeQuery("SELECT * FROM 
table_Test_Creplysize");
@@ -371,11 +372,11 @@ final public class JDBC_API_Tester {
 
sb.append("5. resetting driver fetchsize hint... ");
stmt1.setFetchSize(0);
-   sb.append("passed").append("\n");
+   sb.append("passed\n");
 
sb.append("6. instructing the driver to return at max 
10 rows...  ");
stmt1.setMaxRows(10);
-   sb.append("passed").append("\n");
+   sb.append("passed\n");
 
sb.append("7. selecting all values...  ");
rs = stmt1.executeQuery("SELECT * FROM 
table_Test_Creplysize");
@@ -392,7 +393,7 @@ final public class JDBC_API_Tester {
 
sb.append("8. hinting the driver to use fetchsize 5... 
");
stmt1.setFetchSize(5);
-   sb.append("passed").append("\n");
+   sb.append("passed\n");
 
sb.append("9. selecting all values... ");
rs = stmt1.executeQuery("SELECT * FROM 
table_Test_Creplysize");
@@ -409,7 +410,7 @@ final public class JDBC_API_Tester {
 
sb.append("10. drop... ");
stmt1.executeUpdate("DROP TABLE table_Test_Creplysize");
-   sb.append("passed").append("\n");
+   sb.append("passed\n");
 
con.rollback();
 
@@ -461,14 +462,14 @@ final public class JDBC_API_Tester {
sb.append("2. savepoint...");
/* make a savepoint, and discard it */
con.setSavepoint();
-   

MonetDB: Oct2020 - Merged with Jun2020

2021-03-03 Thread Pedro Ferreira
Changeset: 5389bf9e901d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5389bf9e901d
Modified Files:
gdk/gdk_logger.c
gdk/gdk_string.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-1join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-1join-view.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-view.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-prologue.stable.out
Branch: Oct2020
Log Message:

Merged with Jun2020


diffs (truncated from 725 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2898,7 +2898,7 @@ log_delta(logger *lg, BAT *uid, BAT *uva
fprintf(stderr, "#Logged %s " LLFMT " inserts\n", name, 
l.nr);
}
if (ok != GDK_SUCCEED)
-   TRC_CRITICAL(GDK, "write failed\n");
+   TRC_CRITICAL(GDK, "write failed for %s\n", name);
return ok;
 }
 
@@ -2946,7 +2946,7 @@ log_bat(logger *lg, BAT *b, const char *
}
 
if (ok != GDK_SUCCEED)
-   TRC_CRITICAL(GDK, "write failed\n");
+   TRC_CRITICAL(GDK, "write failed for %s\n", name);
return ok;
 }
 
diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -176,6 +176,46 @@ strLocate(Heap *h, const char *v)
return 0;
 }
 
+static inline gdk_return
+checkUTF8(const char *v)
+{
+   if (v[0] != '\200' || v[1] != '\0') {
+   /* check that string is correctly encoded UTF-8; there
+* was no need to do this earlier: if the string was
+* found above, it must have gone through here in the
+* past */
+   int nutf8 = 0;
+   int m = 0;
+   for (size_t i = 0; v[i]; i++) {
+   if (nutf8 > 0) {
+   if ((v[i] & 0xC0) != 0x80 ||
+   (m != 0 && (v[i] & m) == 0))
+   goto badutf8;
+   m = 0;
+   nutf8--;
+   } else if ((v[i] & 0xE0) == 0xC0) {
+   nutf8 = 1;
+   if ((v[i] & 0x1E) == 0)
+   goto badutf8;
+   } else if ((v[i] & 0xF0) == 0xE0) {
+   nutf8 = 2;
+   if ((v[i] & 0x0F) == 0)
+   m = 0x20;
+   } else if ((v[i] & 0xF8) == 0xF0) {
+   nutf8 = 3;
+   if ((v[i] & 0x07) == 0)
+   m = 0x30;
+   } else if ((v[i] & 0x80) != 0) {
+   goto badutf8;
+   }
+   }
+   }
+   return GDK_SUCCEED;
+
+  badutf8:
+   return GDK_FAIL;
+}
+
 var_t
 strPut(Heap *h, var_t *dst, const char *v)
 {
@@ -219,39 +259,9 @@ strPut(Heap *h, var_t *dst, const char *
}
/* the string was not found in the heap, we need to enter it */
 
-   if (v[0] != '\200' || v[1] != '\0') {
-   /* check that string is correctly encoded UTF-8; there
-* was no need to do this earlier: if the string was
-* found above, it must have gone through here in the
-* past */
-   int nutf8 = 0;
-   int m = 0;
-   for (size_t i = 0; v[i]; i++) {
-   if (nutf8 > 0) {
-   if ((v[i] & 0xC0) != 0x80 ||
-   (m != 0 && (v[i] & m) == 0)) {
- badutf8:
-   GDKerror("incorrectly encoded UTF-8");
-   return 0;
-   }
-   m = 0;
-   nutf8--;
-   } else if ((v[i] & 0xE0) == 0xC0) {
-   nutf8 = 1;
-   if ((v[i] & 0x1E) == 0)
-   goto badutf8;
-   } else if ((v[i] & 0xF0) == 0xE0) {
-   nutf8 = 2;
-   if ((v[i] & 0x0F) == 0)
-   m = 0x20;
-   } else if ((v[i] & 0xF8) == 0xF0) {
-   nutf8 = 3;
-   if ((v[i] & 0x07) == 0)
- 

MonetDB: default - Merge with Oct2020 branch.

2021-03-03 Thread Sjoerd Mullender
Changeset: 3f67a13935ea for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3f67a13935ea
Modified Files:
gdk/gdk_hash.c
Branch: default
Log Message:

Merge with Oct2020 branch.


diffs (truncated from 329 to 300 lines):

diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -740,8 +740,8 @@ BAThash_impl(BAT *restrict b, struct can
}
 
if ((h = GDKzalloc(sizeof(*h))) == NULL ||
-   (h->heaplink.farmid = BBPselectfarm(b->batRole, b->ttype, 
hashheap)) < 0 ||
-   (h->heapbckt.farmid = BBPselectfarm(b->batRole, b->ttype, 
hashheap)) < 0) {
+   (h->heaplink.farmid = BBPselectfarm(hascand ? TRANSIENT : 
b->batRole, b->ttype, hashheap)) < 0 ||
+   (h->heapbckt.farmid = BBPselectfarm(hascand ? TRANSIENT : 
b->batRole, b->ttype, hashheap)) < 0) {
GDKfree(h);
return NULL;
}
diff --git a/sql/jdbc/tests/Tests/All b/sql/jdbc/tests/Tests/All
--- a/sql/jdbc/tests/Tests/All
+++ b/sql/jdbc/tests/Tests/All
@@ -5,17 +5,5 @@ HAVE_JDBCTESTS_HGE?Test_Int128
 HAVE_JDBCCLIENT_JAR?Test_JdbcClient
 HAVE_JDBCCLIENT_JAR?bogus-auto-generated-keys
 #HAVE_JDBCTESTS?Test_PSlargeamount # scalabity test which is disabled by 
default (it takes a long time to run and does not need to be run everytime, 
only before a new release)
-HAVE_JDBCTESTS?BugConcurrent_clients_SF_1504657
-HAVE_JDBCTESTS?BugConcurrent_sequences
-HAVE_JDBCTESTS?BugExecuteUpdate_Bug_3350
-HAVE_JDBCTESTS?BugDatabaseMetaData_Bug_3356
-HAVE_JDBCTESTS?BugSetQueryTimeout_Bug_3357
-HAVE_JDBCTESTS?BugDecimalRound_Bug_3561
-HAVE_JDBCTESTS?BugResultSetMetaData_Bug_6183
-HAVE_JDBCTESTS?Bug_PrepStmtSetObject_CLOB_6349
-HAVE_JDBCTESTS?Bug_Connect_as_voc_getMetaData_Failure_Bug_6388
-HAVE_JDBCTESTS?Bug_LargeQueries_6571_6693
-HAVE_JDBCTESTS?Bug_IsValid_Timeout_Bug_6782
-HAVE_JDBCTESTS?Bug_PrepStmt_With_Errors_Jira292
 # next test should be done AFTER all the other tests have completed
 HAVE_JDBCCLIENT_JAR?ValidateSystemCatalogTables
diff --git a/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.bat 
b/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.bat
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.bat
+++ /dev/null
@@ -1,1 +0,0 @@
-@call "%TSTSRCDIR%\Test.SQL.bat" %*
diff --git a/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.sh 
b/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.sh
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-$TSTSRCDIR/Test.SQL.sh $*
diff --git a/sql/jdbc/tests/Tests/BugConcurrent_sequences.SQL.bat 
b/sql/jdbc/tests/Tests/BugConcurrent_sequences.SQL.bat
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugConcurrent_sequences.SQL.bat
+++ /dev/null
@@ -1,1 +0,0 @@
-@call "%TSTSRCDIR%\Test.SQL.bat" %*
diff --git a/sql/jdbc/tests/Tests/BugConcurrent_sequences.SQL.sh 
b/sql/jdbc/tests/Tests/BugConcurrent_sequences.SQL.sh
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugConcurrent_sequences.SQL.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-$TSTSRCDIR/Test.SQL.sh $*
diff --git a/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.SQL.bat 
b/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.SQL.bat
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.SQL.bat
+++ /dev/null
@@ -1,1 +0,0 @@
-@call "%TSTSRCDIR%\Test.SQL.bat" %*
diff --git a/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.SQL.sh 
b/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.SQL.sh
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.SQL.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-$TSTSRCDIR/Test.SQL.sh $*
diff --git a/sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.SQL.bat 
b/sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.SQL.bat
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.SQL.bat
+++ /dev/null
@@ -1,1 +0,0 @@
-@call "%TSTSRCDIR%\Test.SQL.bat" %*
diff --git a/sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.SQL.sh 
b/sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.SQL.sh
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.SQL.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-$TSTSRCDIR/Test.SQL.sh $*
diff --git a/sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.SQL.bat 
b/sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.SQL.bat
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.SQL.bat
+++ /dev/null
@@ -1,1 +0,0 @@
-@call "%TSTSRCDIR%\Test.SQL.bat" %*
diff --git a/sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.SQL.sh 
b/sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.SQL.sh
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.SQL.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-$TSTSRCDIR/Test.SQL.sh $*
diff --git a/sql/jdbc/tests/Tests/BugResultSetMetaData_Bug_6183.SQL.bat 

MonetDB: Oct2020 - Use same algorithm for determining IPv4/v6 in...

2021-03-03 Thread Sjoerd Mullender
Changeset: 8f73d344661d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f73d344661d
Modified Files:
tools/merovingian/daemon/connections.c
tools/merovingian/daemon/connections.h
tools/merovingian/daemon/merovingian.c
Branch: Oct2020
Log Message:

Use same algorithm for determining IPv4/v6 in monetdbd as in mserver5.
localhost/all is both v4 and v6 (or whichever is available).
127.0.0.1/0.0.0.0 is only v4.
::1/:: is only v6.
hostname is whatever the system (DNS) tells us.


diffs (126 lines):

diff --git a/tools/merovingian/daemon/connections.c 
b/tools/merovingian/daemon/connections.c
--- a/tools/merovingian/daemon/connections.c
+++ b/tools/merovingian/daemon/connections.c
@@ -25,7 +25,7 @@
 #include "connections.h"
 
 err
-openConnectionIP(int *socks, bool udp, bool bind_ipv6, const char *bindaddr, 
unsigned short port, FILE *log)
+openConnectionIP(int *socks, bool udp, const char *bindaddr, unsigned short 
port, FILE *log)
 {
struct addrinfo *result = NULL, *rp = NULL;
int sock = -1, check = 0;
@@ -35,9 +35,10 @@ openConnectionIP(int *socks, bool udp, b
char host[512] = "";
int e = 0;
const char *msghost = bindaddr ? bindaddr : "any"; /* for messages */
+   int ipv6_vs6only = -1;
 
struct addrinfo hints = (struct addrinfo) {
-   .ai_family = bind_ipv6 ? AF_INET6 : AF_INET,
+   .ai_family = AF_INET6,
.ai_socktype = udp ? SOCK_DGRAM : SOCK_STREAM,
.ai_flags = AI_PASSIVE | AI_NUMERICSERV,
.ai_protocol = udp ? 0 : IPPROTO_TCP,
@@ -46,6 +47,38 @@ openConnectionIP(int *socks, bool udp, b
 
socks[0] = socks[1] = -1;
 
+   if (bindaddr == NULL || strcmp(bindaddr, "localhost") == 0) {
+   hints.ai_family = AF_INET6;
+   hints.ai_flags |= AI_NUMERICHOST;
+   ipv6_vs6only = 0;
+   bindaddr = "::1";
+   strcpy_len(host, "localhost", sizeof(host));
+   } else if (strcmp(bindaddr, "all") == 0) {
+   hints.ai_family = AF_INET6;
+   ipv6_vs6only = 0;
+   bindaddr = NULL;
+   } else if (strcmp(bindaddr, "::") == 0) {
+   hints.ai_family = AF_INET6;
+   ipv6_vs6only = 1;
+   bindaddr = NULL;
+   } else if (strcmp(bindaddr, "0.0.0.0") == 0) {
+   hints.ai_family = AF_INET;
+   hints.ai_flags |= AI_NUMERICHOST;
+   bindaddr = NULL;
+   } else if (strcmp(bindaddr, "::1") == 0) {
+   hints.ai_family = AF_INET6;
+   hints.ai_flags |= AI_NUMERICHOST;
+   ipv6_vs6only = 1;
+   strcpy_len(host, "localhost", sizeof(host));
+   } else if (strcmp(bindaddr, "127.0.0.1") == 0) {
+   hints.ai_family = AF_INET;
+   hints.ai_flags |= AI_NUMERICHOST;
+   strcpy_len(host, "localhost", sizeof(host));
+   } else {
+   hints.ai_family = AF_INET6;
+   ipv6_vs6only = 0;
+   }
+
for (;;) {  /* max twice */
check = getaddrinfo(bindaddr, sport, , );
if (check != 0)
@@ -122,9 +155,12 @@ openConnectionIP(int *socks, bool udp, b
break;  /* working */
}
freeaddrinfo(result);
-   if (hints.ai_family == AF_INET6)
+   if (ipv6_vs6only == 0) {
+   ipv6_vs6only = -1;
hints.ai_family = AF_INET;
-   else
+   if (bindaddr && strcmp(bindaddr, "::1") == 0)
+   bindaddr = "127.0.0.1";
+   } else
break;
}
 
diff --git a/tools/merovingian/daemon/connections.h 
b/tools/merovingian/daemon/connections.h
--- a/tools/merovingian/daemon/connections.h
+++ b/tools/merovingian/daemon/connections.h
@@ -11,7 +11,7 @@
 
 #include "merovingian.h"
 
-err openConnectionIP(int *socks, bool udp, bool use_ipv6, const char 
*bindaddr, unsigned short port, FILE *log);
+err openConnectionIP(int *socks, bool udp, const char *bindaddr, unsigned 
short port, FILE *log);
 err openConnectionUNIX(int *ret, const char *path, int mode, FILE *log);
 
 #endif
diff --git a/tools/merovingian/daemon/merovingian.c 
b/tools/merovingian/daemon/merovingian.c
--- a/tools/merovingian/daemon/merovingian.c
+++ b/tools/merovingian/daemon/merovingian.c
@@ -350,7 +350,6 @@ main(int argc, char *argv[])
FILE *oerr = NULL;
int thret;
bool merodontfork = false;
-   bool use_ipv6 = false;
confkeyval ckv[] = {
{"logfile",   strdup("merovingian.log"), 0,
STR},
{"pidfile",   strdup("merovingian.pid"), 0,
STR},
@@ -655,12 +654,6 @@ main(int argc, char *argv[])
}
host = kv->val;
 
-  

MonetDB: Oct2020 - Temporary hash files go to TRANSIENT farm.

2021-03-03 Thread Sjoerd Mullender
Changeset: 17edd1f2dd83 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=17edd1f2dd83
Modified Files:
gdk/gdk_hash.c
Branch: Oct2020
Log Message:

Temporary hash files go to TRANSIENT farm.


diffs (14 lines):

diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -740,8 +740,8 @@ BAThash_impl(BAT *restrict b, struct can
}
 
if ((h = GDKzalloc(sizeof(*h))) == NULL ||
-   (h->heaplink.farmid = BBPselectfarm(b->batRole, b->ttype, 
hashheap)) < 0 ||
-   (h->heapbckt.farmid = BBPselectfarm(b->batRole, b->ttype, 
hashheap)) < 0) {
+   (h->heaplink.farmid = BBPselectfarm(hascand ? TRANSIENT : 
b->batRole, b->ttype, hashheap)) < 0 ||
+   (h->heapbckt.farmid = BBPselectfarm(hascand ? TRANSIENT : 
b->batRole, b->ttype, hashheap)) < 0) {
GDKfree(h);
return NULL;
}
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jun2020 - Flag changes only when they happen

2021-03-03 Thread Pedro Ferreira
Changeset: a47f90b0b1cb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a47f90b0b1cb
Modified Files:
sql/server/rel_optimizer.c
Branch: Jun2020
Log Message:

Flag changes only when they happen


diffs (35 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1850,7 +1850,6 @@ rel_simplify_project_fk_join(mvc *sql, s
return r;
}
 
-   (*changes)++;
/* rewrite, ie remove pkey side if possible */
le = (sql_exp*)je->l, re = (sql_exp*)je->l;
 
@@ -1858,6 +1857,7 @@ rel_simplify_project_fk_join(mvc *sql, s
if (is_semantics(je) && has_nil(le) && has_nil(re))
return r;
 
+   (*changes)++;
/* if the foreign key column doesn't have NULL values, then return it */
if (!has_nil(le) || is_full(r->op) || (fk_left && is_left(r->op)) || 
(!fk_left && is_right(r->op)))
return fk_left ? r->l : r->r;
@@ -1911,7 +1911,6 @@ rel_simplify_count_fk_join(mvc *sql, sql
r->r = rr;
}
 
-   (*changes)++;
/* rewrite, ie remove pkey side if possible */
le = (sql_exp*)je->l, re = (sql_exp*)je->l;
 
@@ -1919,6 +1918,7 @@ rel_simplify_count_fk_join(mvc *sql, sql
if (is_semantics(je) && has_nil(le) && has_nil(re))
return r;
 
+   (*changes)++;
/* if the foreign key column doesn't have NULL values, then return it */
if (!has_nil(le) || is_full(r->op) || (fk_left && is_left(r->op)) || 
(!fk_left && is_right(r->op)))
return fk_left ? r->l : r->r;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jun2020 - If a column of an index has NULL values, set ...

2021-03-03 Thread Pedro Ferreira
Changeset: ae6674917107 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ae6674917107
Modified Files:
sql/server/rel_optimizer.c
sql/server/rel_rel.c

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-1join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-1join-view.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-view.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-prologue.sql

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-prologue.stable.out
sql/test/xquery/Tests/q01.stable.out
Branch: Jun2020
Log Message:

If a column of an index has NULL values, set the index as nullable. At the 
foreign key join simplification, if the foreign key has NULL values and the 
other side doesn't, then filter those out


diffs (truncated from 598 to 300 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1801,12 +1801,12 @@ rel_simplify_project_fk_join(mvc *sql, s
 {
sql_rel *rl = r->l;
sql_rel *rr = r->r;
-   sql_exp *je;
+   sql_exp *je, *le, *nje, *re;
node *n;
int fk_left = 1;
 
/* check for foreign key join */
-   if (!r->exps || list_length(r->exps) != 1)
+   if (list_length(r->exps) != 1)
return r;
je = r->exps->h->data;
if (je && !find_prop(je->p, PROP_JOINIDX))
@@ -1851,10 +1851,23 @@ rel_simplify_project_fk_join(mvc *sql, s
}
 
(*changes)++;
-   /* rewrite, ie remove pkey side */
-   if (fk_left)
-   return r->l;
-   return r->r;
+   /* rewrite, ie remove pkey side if possible */
+   le = (sql_exp*)je->l, re = (sql_exp*)je->l;
+
+   /* both have NULL and there are semantics, the join cannot be removed */
+   if (is_semantics(je) && has_nil(le) && has_nil(re))
+   return r;
+
+   /* if the foreign key column doesn't have NULL values, then return it */
+   if (!has_nil(le) || is_full(r->op) || (fk_left && is_left(r->op)) || 
(!fk_left && is_right(r->op)))
+   return fk_left ? r->l : r->r;
+
+   /* remove NULL values, ie generate a select not null */
+   nje = exp_compare(sql->sa, exp_ref(sql, le), exp_atom(sql->sa, 
atom_general(sql->sa, exp_subtype(le), NULL)), cmp_equal);
+   set_anti(nje);
+   set_has_no_nil(nje);
+   set_semantics(nje);
+   return rel_select(sql->sa, fk_left ? r->l : r->r, nje);
 }
 
 static sql_rel *
@@ -1862,11 +1875,11 @@ rel_simplify_count_fk_join(mvc *sql, sql
 {
sql_rel *rl = r->l;
sql_rel *rr = r->r;
-   sql_exp *oce, *je;
+   sql_exp *je, *le, *nje, *re, *oce;
int fk_left = 1;
 
/* check for foreign key join */
-   if (!r->exps || list_length(r->exps) != 1)
+   if (list_length(r->exps) != 1)
return r;
je = r->exps->h->data;
if (je && !find_prop(je->p, PROP_JOINIDX))
@@ -1899,10 +1912,23 @@ rel_simplify_count_fk_join(mvc *sql, sql
}
 
(*changes)++;
-   /* rewrite, ie remove pkey side */
-   if (fk_left)
-   return r->l;
-   return r->r;
+   /* rewrite, ie remove pkey side if possible */
+   le = (sql_exp*)je->l, re = (sql_exp*)je->l;
+
+   /* both have NULL and there are semantics, the join cannot be removed */
+   if (is_semantics(je) && has_nil(le) && has_nil(re))
+   return r;
+
+   /* if the foreign key column doesn't have NULL values, then return it */
+   if (!has_nil(le) || is_full(r->op) || (fk_left && is_left(r->op)) || 
(!fk_left && is_right(r->op)))
+   return fk_left ? r->l : r->r;
+
+   /* remove NULL values, ie generate a select not null */
+   nje = exp_compare(sql->sa, exp_ref(sql, le), exp_atom(sql->sa, 
atom_general(sql->sa, exp_subtype(le), NULL)), cmp_equal);
+   set_anti(nje);
+   set_has_no_nil(nje);
+   set_semantics(nje);
+   return rel_select(sql->sa, fk_left ? r->l : r->r, nje);
 }
 
 /*
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -835,6 +835,7 @@ rel_basetable(mvc *sql, sql_table *t, co
sql_idx *i = cn->data;
sql_subtype *t = sql_bind_localtype("lng"); /* hash 
"lng" */
char *iname = NULL;
+   int has_nils = 0;
 
/* do not include empty indices in the plan */
if (hash_index(i->type) && list_length(i->columns) <= 1)
@@ -844,7 +845,13 @@ rel_basetable(mvc *sql, sql_table *t, co
 

MonetDB: Oct2020 - Removal of 12 JDBC Bug* tests which have been...

2021-03-03 Thread Martin van Dinther
Changeset: 7d60fafbc6c0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7d60fafbc6c0
Removed Files:
sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.bat
sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.sh
sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.stable.err
sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.stable.out
sql/jdbc/tests/Tests/BugConcurrent_sequences.SQL.bat
sql/jdbc/tests/Tests/BugConcurrent_sequences.SQL.sh
sql/jdbc/tests/Tests/BugConcurrent_sequences.stable.err
sql/jdbc/tests/Tests/BugConcurrent_sequences.stable.out
sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.SQL.bat
sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.SQL.sh
sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.stable.err
sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.stable.out
sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.SQL.bat
sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.SQL.sh
sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.stable.err
sql/jdbc/tests/Tests/BugDecimalRound_Bug_3561.stable.out
sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.SQL.bat
sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.SQL.sh
sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.stable.err
sql/jdbc/tests/Tests/BugExecuteUpdate_Bug_3350.stable.out
sql/jdbc/tests/Tests/BugResultSetMetaData_Bug_6183.SQL.bat
sql/jdbc/tests/Tests/BugResultSetMetaData_Bug_6183.SQL.sh
sql/jdbc/tests/Tests/BugResultSetMetaData_Bug_6183.stable.err
sql/jdbc/tests/Tests/BugResultSetMetaData_Bug_6183.stable.out
sql/jdbc/tests/Tests/BugSetQueryTimeout_Bug_3357.SQL.bat
sql/jdbc/tests/Tests/BugSetQueryTimeout_Bug_3357.SQL.sh
sql/jdbc/tests/Tests/BugSetQueryTimeout_Bug_3357.stable.err
sql/jdbc/tests/Tests/BugSetQueryTimeout_Bug_3357.stable.out

sql/jdbc/tests/Tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.SQL.bat

sql/jdbc/tests/Tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.SQL.sh

sql/jdbc/tests/Tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.stable.err

sql/jdbc/tests/Tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.stable.out
sql/jdbc/tests/Tests/Bug_IsValid_Timeout_Bug_6782.SQL.bat
sql/jdbc/tests/Tests/Bug_IsValid_Timeout_Bug_6782.SQL.sh
sql/jdbc/tests/Tests/Bug_IsValid_Timeout_Bug_6782.stable.err
sql/jdbc/tests/Tests/Bug_IsValid_Timeout_Bug_6782.stable.out
sql/jdbc/tests/Tests/Bug_LargeQueries_6571_6693.SQL.bat
sql/jdbc/tests/Tests/Bug_LargeQueries_6571_6693.SQL.sh
sql/jdbc/tests/Tests/Bug_LargeQueries_6571_6693.stable.err
sql/jdbc/tests/Tests/Bug_LargeQueries_6571_6693.stable.out
sql/jdbc/tests/Tests/Bug_PrepStmtSetObject_CLOB_6349.SQL.bat
sql/jdbc/tests/Tests/Bug_PrepStmtSetObject_CLOB_6349.SQL.sh
sql/jdbc/tests/Tests/Bug_PrepStmtSetObject_CLOB_6349.stable.err
sql/jdbc/tests/Tests/Bug_PrepStmtSetObject_CLOB_6349.stable.out
sql/jdbc/tests/Tests/Bug_PrepStmt_With_Errors_Jira292.SQL.bat
sql/jdbc/tests/Tests/Bug_PrepStmt_With_Errors_Jira292.SQL.sh
sql/jdbc/tests/Tests/Bug_PrepStmt_With_Errors_Jira292.stable.err
sql/jdbc/tests/Tests/Bug_PrepStmt_With_Errors_Jira292.stable.out
Modified Files:
sql/jdbc/tests/Tests/All
Branch: Oct2020
Log Message:

Removal of 12 JDBC Bug* tests which have been converted and added to 
JDBC_API_Tester.java


diffs (truncated from 1880 to 300 lines):

diff --git a/sql/jdbc/tests/Tests/All b/sql/jdbc/tests/Tests/All
--- a/sql/jdbc/tests/Tests/All
+++ b/sql/jdbc/tests/Tests/All
@@ -5,17 +5,5 @@ HAVE_JDBCTESTS_HGE?Test_Int128
 HAVE_JDBCCLIENT_JAR?Test_JdbcClient
 HAVE_JDBCCLIENT_JAR?bogus-auto-generated-keys
 #HAVE_JDBCTESTS?Test_PSlargeamount # scalabity test which is disabled by 
default (it takes a long time to run and does not need to be run everytime, 
only before a new release)
-HAVE_JDBCTESTS?BugConcurrent_clients_SF_1504657
-HAVE_JDBCTESTS?BugConcurrent_sequences
-HAVE_JDBCTESTS?BugExecuteUpdate_Bug_3350
-HAVE_JDBCTESTS?BugDatabaseMetaData_Bug_3356
-HAVE_JDBCTESTS?BugSetQueryTimeout_Bug_3357
-HAVE_JDBCTESTS?BugDecimalRound_Bug_3561
-HAVE_JDBCTESTS?BugResultSetMetaData_Bug_6183
-HAVE_JDBCTESTS?Bug_PrepStmtSetObject_CLOB_6349
-HAVE_JDBCTESTS?Bug_Connect_as_voc_getMetaData_Failure_Bug_6388
-HAVE_JDBCTESTS?Bug_LargeQueries_6571_6693
-HAVE_JDBCTESTS?Bug_IsValid_Timeout_Bug_6782
-HAVE_JDBCTESTS?Bug_PrepStmt_With_Errors_Jira292
 # next test should be done AFTER all the other tests have completed
 HAVE_JDBCCLIENT_JAR?ValidateSystemCatalogTables
diff --git a/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.bat 
b/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.bat
deleted file mode 100755
--- a/sql/jdbc/tests/Tests/BugConcurrent_clients_SF_1504657.SQL.bat
+++ /dev/null
@@ 

monetdb-java: default - Converted and added Test_Int128() to JDB...

2021-03-03 Thread Martin van Dinther
Changeset: 7147d1252828 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=7147d1252828
Modified Files:
tests/JDBC_API_Tester.java
Branch: default
Log Message:

Converted and added Test_Int128() to JDBC_API_Tester.java.
As it is dependent on the availability of support of datatype hugeint an extra 
check for hugeint is added.


diffs (108 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
@@ -10,6 +10,7 @@ import java.sql.*;
 
 import java.io.StringReader;
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.nio.charset.Charset;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -59,7 +60,7 @@ final public class JDBC_API_Tester {
jt.Test_Ctransaction();
jt.Test_Dobjects();
jt.Test_FetchSize();
-   //  jt.Test_Int128();
+   jt.Test_Int128();
jt.Test_PSgeneratedkeys();
jt.Test_PSgetObject();
jt.Test_PSlargebatchval();
@@ -808,6 +809,87 @@ final public class JDBC_API_Tester {
"ResultSet fetch size after set: 16384\n");
}
 
+   private void Test_Int128() {
+   sb.setLength(0);// clear the output log buffer
+
+   Statement stmt = null;
+   ResultSet rs = null;
+
+   // check first if datatype hugeint is supported on this server
+   boolean supportsHugeInt = false;
+   try {
+   stmt = con.createStatement();
+   // query sys.types to find out if sql datatype hugeint 
is supported
+   rs = stmt.executeQuery("SELECT sqlname from sys.types 
where sqlname = 'hugeint';");
+   if (rs != null && rs.next()) {
+   String sqlname = rs.getString(1);
+   if ("hugeint".equals(sqlname))
+   supportsHugeInt = true;
+   }
+   } catch (SQLException e) {
+   sb.append("FAILED: 
").append(e.getMessage()).append("\n");
+   }
+
+   if (!supportsHugeInt) {
+   closeStmtResSet(stmt, rs);
+   compareExpectedOutput("Test_Int128", "");
+   return; // skip the rest of the test
+   }
+
+   // test whether we can represent a full-size int128 as JDBC 
results
+   PreparedStatement insertStatement = null;
+   try {
+   stmt.executeUpdate("CREATE TABLE HUGEINTT (I HUGEINT)");
+   stmt.executeUpdate("CREATE TABLE HUGEDECT (I 
DECIMAL(38,19))");
+
+   BigInteger bi = new 
BigInteger("123456789012345678909876543210987654321");
+   BigDecimal bd = new 
BigDecimal("1234567890123456789.9876543210987654321");
+
+   insertStatement = con.prepareStatement("INSERT INTO 
HUGEINTT VALUES (?)");
+   insertStatement.setBigDecimal(1, new BigDecimal(bi));
+   insertStatement.executeUpdate();
+   insertStatement.close();
+
+   stmt.executeUpdate("INSERT INTO HUGEDECT VALUES (" + bd 
+ ");");
+
+   rs = stmt.executeQuery("SELECT I FROM HUGEINTT");
+   rs.next();
+   BigInteger biRes = rs.getBigDecimal(1).toBigInteger();
+   rs.close();
+   sb.append("Expecting " + bi + ", got " + 
biRes).append("\n");
+   if (!bi.equals(biRes)) {
+   sb.append("value of bi is NOT equal to 
biRes!").append("\n");
+   }
+
+   rs = stmt.executeQuery("SELECT I FROM HUGEDECT");
+   rs.next();
+   BigDecimal bdRes = rs.getBigDecimal(1);
+   rs.close();
+   sb.append("Expecting " + bd + ", got " + 
bdRes).append("\n");
+   if (!bd.equals(bdRes)) {
+   sb.append("value of bd is NOT equal to 
bdRes!").append("\n");
+   }
+   } catch (SQLException e) {
+   sb.append("FAILED: 
").append(e.getMessage()).append("\n");
+   }
+
+   // cleanup
+   try {
+   stmt.executeUpdate("DROP TABLE IF EXISTS HUGEINTT");
+   stmt.executeUpdate("DROP TABLE IF EXISTS HUGEDECT");
+   sb.append("SUCCESS").append("\n");
+   } catch (SQLException e) {
+   sb.append("FAILED: 
").append(e.getMessage()).append("\n");
+   }
+   closeStmtResSet(insertStatement, null);
+   

MonetDB: default - When dumping the BBP contents (BBPdump) dump ...

2021-03-03 Thread Sjoerd Mullender
Changeset: 396bfceb1a5a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=396bfceb1a5a
Modified Files:
gdk/gdk_bbp.c
gdk/gdk_private.h
Branch: default
Log Message:

When dumping the BBP contents (BBPdump) dump all bats, not just cached ones.


diffs (89 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1490,39 +1490,42 @@ BBPdump(void)
int n = 0, nc = 0;
 
for (i = 0; i < (bat) ATOMIC_GET(); i++) {
-   BAT *b = BBP_cache(i);
-   if (b == NULL)
+   if (BBP_refs(i) == 0 && BBP_lrefs(i) == 0)
continue;
+   BAT *b = BBP_desc(i);
fprintf(stderr,
-   "# %d: " ALGOBATFMT " "
+   "# %d: " ALGOOPTBATFMT " "
"refs=%d lrefs=%d "
-   "status=%u",
+   "status=%u%s",
i,
-   ALGOBATPAR(b),
+   ALGOOPTBATPAR(b),
BBP_refs(i),
BBP_lrefs(i),
-   BBP_status(i));
+   BBP_status(i),
+   BBP_cache(i) ? "" : " not cached");
if (b->batSharecnt > 0)
fprintf(stderr, " shares=%d", b->batSharecnt);
if (b->batDirtydesc)
fprintf(stderr, " DirtyDesc");
-   if (b->theap->parentid != b->batCacheid) {
-   fprintf(stderr, " Theap -> %d", b->theap->parentid);
-   } else {
-   fprintf(stderr,
-   " Theap=[%zu,%zu,f=%d]%s",
-   HEAPmemsize(b->theap),
-   HEAPvmsize(b->theap),
-   b->theap->farmid,
-   b->theap->dirty ? "(Dirty)" : "");
-   if (BBP_logical(i) && BBP_logical(i)[0] == '.') {
-   cmem += HEAPmemsize(b->theap);
-   cvm += HEAPvmsize(b->theap);
-   nc++;
+   if (b->theap) {
+   if (b->theap->parentid != b->batCacheid) {
+   fprintf(stderr, " Theap -> %d", 
b->theap->parentid);
} else {
-   mem += HEAPmemsize(b->theap);
-   vm += HEAPvmsize(b->theap);
-   n++;
+   fprintf(stderr,
+   " Theap=[%zu,%zu,f=%d]%s",
+   HEAPmemsize(b->theap),
+   HEAPvmsize(b->theap),
+   b->theap->farmid,
+   b->theap->dirty ? "(Dirty)" : "");
+   if (BBP_logical(i) && BBP_logical(i)[0] == '.') 
{
+   cmem += HEAPmemsize(b->theap);
+   cvm += HEAPvmsize(b->theap);
+   nc++;
+   } else {
+   mem += HEAPmemsize(b->theap);
+   vm += HEAPvmsize(b->theap);
+   n++;
+   }
}
}
if (b->tvheap) {
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -280,7 +280,7 @@ BAT *virtualize(BAT *bn)
b ? "[" : "",   \
b ? ATOMname(b->ttype) : "",\
b ? "]" : "",   \
-   b ? !b->batTransient ? "P" : b->theap->parentid ? "V" : b->tvheap && 
b->tvheap->parentid != b->batCacheid ? "v" : "T" : "", \
+   b ? !b->batTransient ? "P" : b->theap && b->theap->parentid ? "V" : 
b->tvheap && b->tvheap->parentid != b->batCacheid ? "v" : "T" : "", \
b ? BATtdense(b) ? "D" : b->ttype == TYPE_void && b->tvheap ? "X" : 
ATOMstorage(b->ttype) == TYPE_str && GDK_ELIMDOUBLES(b->tvheap) ? "E" : "" : 
"", \
b ? b->tsorted ? "S" : b->tnosorted ? "!s" : "" : "",   \
b ? b->trevsorted ? "R" : b->tnorevsorted ? "!r" : "" : "", \
@@ -288,7 +288,7 @@ BAT *virtualize(BAT *bn)
b && b->tnonil ? "N" : "",  \
b && b->thash ? "H" : "",   \
b && b->torderidx ? "O" : "",   \
-   b ? b->timprints ? "I" : b->theap->parentid && 
BBP_cache(b->theap->parentid)->timprints ? "(I)" : "" : ""
+   b ? b->timprints ? "I" : b->theap && b->theap->parentid && 
BBP_cache(b->theap->parentid) && 

MonetDB: default - More sys and fix type (it's "privilege", not ...

2021-03-03 Thread Sjoerd Mullender
Changeset: 06685aae3a6b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=06685aae3a6b
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/scripts/52_describe.sql
sql/scripts/76_dump.sql
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.int128
Branch: default
Log Message:

More sys and fix type (it's "privilege", not "priviledge").


diffs (truncated from 786 to 300 lines):

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
@@ -2678,11 +2678,11 @@ sql_update_default(Client c, mvc *sql, c
"WHERE c.table_id = t.id) 
col,\n"
"CASE\n"
"WHEN ts.table_type_name = 
'REMOTE TABLE' THEN\n"
-   "
get_remote_table_expressions(s.name, t.name)\n"
+   "
sys.get_remote_table_expressions(s.name, t.name)\n"
"WHEN ts.table_type_name = 
'MERGE TABLE' THEN\n"
-   "
get_merge_table_partition_expressions(t.id)\n"
+   "
sys.get_merge_table_partition_expressions(t.id)\n"
"WHEN ts.table_type_name = 
'VIEW' THEN\n"
-   "schema_guard(s.name, 
t.name, t.query)\n"
+   "
sys.schema_guard(s.name, t.name, t.query)\n"
"ELSE\n"
"''\n"
"END opt\n"
@@ -2745,7 +2745,7 @@ sql_update_default(Client c, mvc *sql, c
"CASE WHEN a.type IS NULL 
THEN\n"
"s.name || '.' || 
f.name || '()'\n"
"ELSE\n"
-   "s.name || '.' || 
f.name || '(' || group_concat(describe_type(a.type, a.type_digits, 
a.type_scale), ',') OVER (PARTITION BY f.id ORDER BY a.number)  || ')'\n"
+   "s.name || '.' || 
f.name || '(' || group_concat(sys.describe_type(a.type, a.type_digits, 
a.type_scale), ',') OVER (PARTITION BY f.id ORDER BY a.number)  || ')'\n"
"END,\n"
"a.number\n"
"FROM sys.schemas s, 
sys.function_types ft, sys.functions f LEFT JOIN sys.args a ON f.id = 
a.func_id\n"
@@ -2906,7 +2906,7 @@ sql_update_default(Client c, mvc *sql, c
"CREATE FUNCTION 
sys.describe_columns(schemaName string, tableName string)\n"
"RETURNS TABLE(name string, type 
string, digits integer, scale integer, Nulls boolean, cDefault string, number 
integer, sqltype string, remark string)\n"
"BEGIN\n"
-   "RETURN SELECT c.name, c.\"type\", 
c.type_digits, c.type_scale, c.\"null\", c.\"default\", c.number, 
describe_type(c.\"type\", c.type_digits, c.type_scale), com.remark\n"
+   "RETURN SELECT c.name, c.\"type\", 
c.type_digits, c.type_scale, c.\"null\", c.\"default\", c.number, 
sys.describe_type(c.\"type\", c.type_digits, c.type_scale), com.remark\n"
"FROM sys._tables t, 
sys.schemas s, sys._columns c\n"
"LEFT OUTER JOIN sys.comments 
com ON c.id = com.id\n"
"WHERE c.table_id = t.id\n"
@@ -2961,7 +2961,7 @@ sql_update_default(Client c, mvc *sql, c
"AND ui.name <> '.snapshot'\n"
"AND s.name <> 'sys';\n"
"\n"
-   "CREATE VIEW 
sys.dump_grant_user_priviledges AS\n"
+   "CREATE VIEW 
sys.dump_grant_user_privileges AS\n"
"SELECT\n"
"'GRANT ' || sys.dq(a2.name) || 
' ' || ifthenelse(a1.name = 'public', 'PUBLIC', sys.dq(a1.name)) || ';' stmt\n"
"FROM sys.auths a1, sys.auths a2, 
sys.user_role ur\n"
@@ -2996,7 +2996,7 @@ sql_update_default(Client c, mvc *sql, c
   

MonetDB: default - Fix some reference counting in the upgrade.

2021-03-03 Thread Sjoerd Mullender
Changeset: b746bce46c2a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b746bce46c2a
Modified Files:
gdk/gdk_logger.c
gdk/gdk_logger_old.c
sql/storage/bat/bat_logger.c
Branch: default
Log Message:

Fix some reference counting in the upgrade.


diffs (truncated from 518 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1657,6 +1657,18 @@ logger_load(int debug, const char *fn, c
GDKerror("cannot create type bats");
goto error;
}
+   strconcat_len(bak, sizeof(bak), fn, "_type_id", NULL);
+   if (BBPrename(lg->type_id->batCacheid, bak) < 0) {
+   goto error;
+   }
+   strconcat_len(bak, sizeof(bak), fn, "_type_nme", NULL);
+   if (BBPrename(lg->type_nme->batCacheid, bak) < 0) {
+   goto error;
+   }
+   strconcat_len(bak, sizeof(bak), fn, "_type_nr", NULL);
+   if (BBPrename(lg->type_nr->batCacheid, bak) < 0) {
+   goto error;
+   }
 
/* this is intentional - if catalog_bid is 0, force it to find
 * the persistent catalog */
@@ -1779,20 +1791,20 @@ logger_load(int debug, const char *fn, c
lg->catalog_bid = b;
lg->catalog_id = o;
lg->dcatalog = d;
+   const log_bid *bids = (const log_bid *) 
Tloc(lg->catalog_bid, 0);
+   BATloop(lg->catalog_bid, p, q) {
+   bat bid = bids[p];
+   oid pos = p;
+
+   if (BBPretain(bid) == 0 && /* any bid in the 
catalog_bid, needs one logical ref */
+   BUNfnd(lg->dcatalog, ) == BUN_NONE &&
+   BUNappend(lg->dcatalog, , false) != 
GDK_SUCCEED)
+   goto error;
+   }
}
BBPretain(lg->catalog_bid->batCacheid);
BBPretain(lg->catalog_id->batCacheid);
BBPretain(lg->dcatalog->batCacheid);
-   const log_bid *bids = (const log_bid *) Tloc(lg->catalog_bid, 
0);
-   BATloop(lg->catalog_bid, p, q) {
-   bat bid = bids[p];
-   oid pos = p;
-
-   if (BBPretain(bid) == 0 && /* any bid in the 
catalog_bid, needs one logical ref */
-   BUNfnd(lg->dcatalog, ) == BUN_NONE &&
-   BUNappend(lg->dcatalog, , false) != GDK_SUCCEED)
-   goto error;
-   }
}
lg->catalog_cnt = logbat_new(TYPE_lng, 1, TRANSIENT);
if (lg->catalog_cnt == NULL) {
diff --git a/gdk/gdk_logger_old.c b/gdk/gdk_logger_old.c
--- a/gdk/gdk_logger_old.c
+++ b/gdk/gdk_logger_old.c
@@ -1660,8 +1660,11 @@ logger_load(const char *fn, char filenam
goto error;
}
lg->with_ids = false;
-   } else if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
-   goto error;
+   } else {
+   if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
+   goto error;
+   BBPretain(t->batCacheid);
+   }
 
strconcat_len(bak, sizeof(bak), fn, "_catalog_oid", NULL);
catalog_oid = BBPindex(bak);
@@ -1684,8 +1687,11 @@ logger_load(const char *fn, char filenam
goto error;
}
lg->with_ids = false;
-   } else if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
-   goto error;
+   } else {
+   if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
+   goto error;
+   BBPretain(o->batCacheid);
+   }
 
strconcat_len(bak, sizeof(bak), fn, "_dcatalog", NULL);
dcatalog = BBPindex(bak);
@@ -1710,17 +1716,23 @@ logger_load(const char *fn, char filenam
BBPunfix(o->batCacheid);
goto error;
}
-   } else if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
-   goto error;
+   } else {
+   if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
+   goto error;
+   BBPretain(d->batCacheid);
+   }
 
lg->catalog_bid = b;
lg->catalog_nme = n;
lg->catalog_tpe = t;
lg->catalog_oid = o;
lg->dcatalog = d;
-   if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED ||
-   BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
+   if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
goto error;
+   BBPretain(b->batCacheid);
+   if (BUNappend(lg->del, >batCacheid, false) != GDK_SUCCEED)
+   goto error;
+   BBPretain(n->batCacheid);
 

MonetDB: default - Change declaration. It helps gdb.

2021-03-03 Thread Sjoerd Mullender
Changeset: 369fdcc59f8b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=369fdcc59f8b
Modified Files:
gdk/gdk_atoms.h
Branch: default
Log Message:

Change declaration.  It helps gdb.


diffs (23 lines):

diff --git a/gdk/gdk_atoms.h b/gdk/gdk_atoms.h
--- a/gdk/gdk_atoms.h
+++ b/gdk/gdk_atoms.h
@@ -60,7 +60,9 @@ typedef struct {
void (*atomHeap) (Heap *, size_t);
 } atomDesc;
 
-gdk_export atomDesc BATatoms[];
+#define MAXATOMS   128
+
+gdk_export atomDesc BATatoms[MAXATOMS];
 gdk_export int GDKatomcnt;
 
 gdk_export int ATOMallocate(const char *nme);
@@ -75,8 +77,6 @@ gdk_export char *ATOMformat(int id, cons
 
 gdk_export void *ATOMdup(int id, const void *val);
 
-#define MAXATOMS   128
-
 /*
  * @- maximum atomic string lengths
  */
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - add simple condition reducing optimization

2021-03-03 Thread Niels Nes
Changeset: d072d8dc1a41 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d072d8dc1a41
Modified Files:
sql/server/rel_optimizer.c
Branch: default
Log Message:

add simple condition reducing optimization


diffs (28 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -9799,11 +9799,24 @@ rel_keep_renames(mvc *sql, sql_rel *rel)
return rel;
 }
 
+static int
+need_optimization(sql_rel *rel)
+{
+   if (rel->card <= CARD_ATOM && is_simple_project(rel->op) && !rel->l)
+   return 0;
+   else if (rel->card <= CARD_ATOM && is_simple_project(rel->op))
+   return need_optimization(rel->l);
+   return 1;
+}
+
 sql_rel *
 rel_optimizer(mvc *sql, sql_rel *rel, int value_based_opt, int 
storage_based_opt)
 {
int level = 0, changes = 1;
 
+   if (!need_optimization(rel))
+   return rel;
+
rel = rel_keep_renames(sql, rel);
for( ;rel && level < 20 && changes; level++)
rel = optimize_rel(sql, rel, , level, value_based_opt, 
storage_based_opt);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - small improvement, ie use QUICK for some 'hin...

2021-03-03 Thread Niels Nes
Changeset: 0ee21813035a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0ee21813035a
Modified Files:
sql/backends/monet5/sql_statement.c
sql/include/sql_catalog.h
sql/storage/bat/bat_storage.c
sql/storage/sql_storage.h
Branch: default
Log Message:

small improvement, ie use QUICK for some 'hint' like counts


diffs (78 lines):

diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -558,7 +558,7 @@ stmt_tid(backend *be, sql_table *t, int 
if (t && (!isRemote(t) && !isMergeTable(t)) && partition) {
sql_trans *tr = be->mvc->session->tr;
sqlstore *store = tr->store;
-   BUN rows = (BUN) store->storage_api.count_col(tr, 
t->columns.set->h->data, 0);
+   BUN rows = (BUN) store->storage_api.count_col(tr, 
t->columns.set->h->data, QUICK);
setRowCnt(mb,getArg(q,0),rows);
}
 
@@ -625,7 +625,7 @@ stmt_bat(backend *be, sql_column *c, int
sqlstore *store = tr->store;
 
if (c && (!isRemote(c->t) && !isMergeTable(c->t))) {
-   BUN rows = (BUN) store->storage_api.count_col(tr, c, 0);
+   BUN rows = (BUN) store->storage_api.count_col(tr, c, 
QUICK);
setRowCnt(mb,getArg(q,0),rows);
}
}
@@ -679,7 +679,7 @@ stmt_idxbat(backend *be, sql_idx *i, int
sqlstore *store = tr->store;
 
if (i && (!isRemote(i->t) && !isMergeTable(i->t))) {
-   BUN rows = (BUN) store->storage_api.count_idx(tr, i, 0);
+   BUN rows = (BUN) store->storage_api.count_idx(tr, i, 
QUICK);
setRowCnt(mb,getArg(q,0),rows);
}
}
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
@@ -90,6 +90,7 @@ typedef enum sql_dependency {
 #define TR_NEW 1
 
 #define RDONLY 0
+#define RD_INS 1
 #define RD_UPD_ID 2
 #define RD_UPD_VAL 3
 #define QUICK  4
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -550,7 +550,7 @@ count_col(sql_trans *tr, sql_column *c, 
return ds?ds->cs.ucnt:0;
if (access == 1)
return count_inserts(d->segs->h, tr);
-   if (isTempTable(c->t))
+   if (access == QUICK || isTempTable(c->t))
return d->segs->t?d->segs->t->end:0;
return segs_end(d->segs, tr);
 }
@@ -571,7 +571,7 @@ count_idx(sql_trans *tr, sql_idx *i, int
return ds?ds->cs.ucnt:0;
if (access == 1)
return count_inserts(d->segs->h, tr);
-   if (isTempTable(i->t))
+   if (access == QUICK || isTempTable(i->t))
return d->segs->t?d->segs->t->end:0;
return segs_end(d->segs, tr);
 }
diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h
--- a/sql/storage/sql_storage.h
+++ b/sql/storage/sql_storage.h
@@ -138,9 +138,9 @@ typedef size_t (*claim_tab_fptr) (sql_tr
 -- count number of rows in column (excluding the deletes)
 -- check for sortedness
  */
-typedef size_t (*count_del_fptr) (sql_trans *tr, sql_table *t, int upd);
-typedef size_t (*count_col_fptr) (sql_trans *tr, sql_column *c, int upd);
-typedef size_t (*count_idx_fptr) (sql_trans *tr, sql_idx *i, int upd);
+typedef size_t (*count_del_fptr) (sql_trans *tr, sql_table *t, int access);
+typedef size_t (*count_col_fptr) (sql_trans *tr, sql_column *c, int access);
+typedef size_t (*count_idx_fptr) (sql_trans *tr, sql_idx *i, int access);
 typedef size_t (*dcount_col_fptr) (sql_trans *tr, sql_column *c);
 typedef int (*prop_col_fptr) (sql_trans *tr, sql_column *c);
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Redundant sql.in files are not needed anymore

2021-03-03 Thread Pedro Ferreira
Changeset: 52fdcb9cdd55 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=52fdcb9cdd55
Removed Files:
geom/sql/pg_regression/Tests/regress.sql.in
sql/benchmarks/ATIS/Tests/one.sql.in
sql/benchmarks/nobench/Tests/nobench.sql.in
sql/test/BugTracker-2009/Tests/COPY_INTO_char_NULL.SF-2560780.sql.in
sql/test/BugTracker-2009/Tests/parallel_bulk-load.SF-2771052.test.sql.in

sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_KO-1.sql.in

sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_KO-2.sql.in

sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_KO-3.sql.in

sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_OK-0.sql.in

sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_OK-4.sql.in
sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql.in
sql/test/BugTracker-2013/Tests/copy-into-compressed-bz2.Bug-3351.sql.in
sql/test/BugTracker-2013/Tests/copy-into-compressed-gz.Bug-3351.sql.in
sql/test/BugTracker-2013/Tests/copy-into-compressed.Bug-3351.sql.in
sql/test/BugTracker-2013/Tests/segfault_in_aggregation.Bug-3225.sql.in
sql/test/BugTracker-2015/Tests/copy_into.Bug-3813.sql.in
sql/test/BugTracker-2016/Tests/malformed-copy-int.Bug-3987.sql.in

sql/test/BugTracker-2016/Tests/wrong-nonil-property-with-copy-binary-into.Bug-3937.sql.in
sql/test/BugTracker-2017/Tests/heapextend.Bug-6134.sql.in
sql/test/Tests/bincopycollist.sql.in
sql/test/Tests/copy-from-compressed.sql.in
sql/test/Tests/copy-into-fwf.sql.in
sql/test/Tests/copy_into.sql.in
sql/test/bugs/Tests/redirect.sql.in
sql/test/json/Tests/load_twitter_data.sql.in
sql/test/merge-partitions/Tests/mergepart28.sql.in
sql/test/scripts/Tests/copy-into-lz4.sql.in
Branch: default
Log Message:

Redundant sql.in files are not needed anymore


diffs (truncated from 2651 to 300 lines):

diff --git a/geom/sql/pg_regression/Tests/regress.sql.in 
b/geom/sql/pg_regression/Tests/regress.sql.in
deleted file mode 100644
--- a/geom/sql/pg_regression/Tests/regress.sql.in
+++ /dev/null
@@ -1,282 +0,0 @@
 basic datatypes (correct)
-
-select '1',ST_asewkt('POINT( 1 2 )') as geom;
-select '2',ST_asewkt('POINT( 1 2 3)') as geom;
-
-select '3',ST_asewkt('LINESTRING( 0 0, 1 1, 2 2, 3 3 , 4 4)') as geom;
-select '4',ST_asewkt('LINESTRING( 0 0 0 , 1 1 1 , 2 2 2 , 3 3 3, 4 4 4)') as 
geom;
-select '5',ST_asewkt('LINESTRING( 1 2 3 , 4 5 6 , 7 8 9 , 10 11 12, 13 14 
15)') as geom;
-
-select '6',ST_asewkt('POLYGON( (0 0, 10 0, 10 10, 0 10, 0 0) )') as geom;
-select '7',ST_asewkt('POLYGON( (0 0 1 , 10 0 1, 10 10 1, 0 10 1, 0 0 1) )') as 
geom;
-select '8',ST_asewkt('POLYGON( (0 0, 10 0, 10 10, 0 10, 0 0),(5 5, 7 5, 7 7 , 
5 7, 5 5) )') as geom;
-select '9',ST_asewkt('POLYGON( (0 0, 10 0, 10 10, 0 10, 0 0),(5 5, 7 5, 7 7 , 
5 7, 5 5),(1 1,2 1, 2 2, 1 2, 1 1) )') as geom;
-select '10',ST_asewkt('POLYGON( (0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(5 5 
1, 7 5 1, 7 7 1 , 5 7 1, 5 5 1) )') as geom;
-select '11',ST_asewkt('POLYGON( (0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(5 5 
1, 7 5 1, 7 7 1, 5 7 1, 5 5 1),(1 1 1,2 1 1, 2 2 1, 1 2 1, 1 1 1) )') as geom;
-
-select '12',ST_asewkt('GEOMETRYCOLLECTION(POINT( 1 2 ))');
-select '13',ST_asewkt('GEOMETRYCOLLECTION(POINT( 1 2 3))');
-select '14',ST_asewkt('GEOMETRYCOLLECTION(LINESTRING( 0 0, 1 1, 2 2, 3 3 , 4 
4))');
-select '15',ST_asewkt('GEOMETRYCOLLECTION(LINESTRING( 1 2 3 , 4 5 6 , 7 8 9 , 
10 11 12, 13 14 15))');
-select '16',ST_asewkt('GEOMETRYCOLLECTION(POLYGON( (0 0 1, 10 0 1, 10 10 1, 0 
10 1, 0 0 1),(5 5 1, 7 5 1, 7 7 1 , 5 7 1, 5 5 1) ))');
-select '17',ST_asewkt('GEOMETRYCOLLECTION(POINT( 1 2 0),POINT( 1 2 3) )');
-select '18',ST_asewkt('GEOMETRYCOLLECTION(LINESTRING( 0 0 0, 1 1 0, 2 2 0, 3 3 
0, 4 4 0),POINT( 1 2 3) )');
-select '19',ST_asewkt('GEOMETRYCOLLECTION(POINT( 1 2 ),LINESTRING( 0 0, 1 1, 2 
2, 3 3 , 4 4) )');
-select '20',ST_asewkt('GEOMETRYCOLLECTION(POINT( 1 2 0 ),POINT( 1 2 
3),LINESTRING( 1 2 3 , 4 5 6 , 7 8 9 , 10 11 12, 13 14 15) )');
-select '21',ST_asewkt('GEOMETRYCOLLECTION(POINT( 1 2 0 ),POINT( 1 2 
3),LINESTRING( 1 2 3 , 4 5 6 , 7 8 9 , 10 11 12, 13 14 15),POLYGON( (0 0 0, 10 
0 0, 10 10 0, 0 10 0, 0 0 0) ) )');
-select '22',ST_asewkt('GEOMETRYCOLLECTION(POINT( 1 2 0),POINT( 1 2 3),POLYGON( 
(0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(5 5 1, 7 5 1, 7 7 1, 5 7 1, 5 5 1),(1 
1 1,2 1 1, 2 2 1, 1 2 1, 1 1 1) ) )');
-
-select '23',ST_asewkt('MULTIPOINT( 1 2)') as geom;
-select '24',ST_asewkt('MULTIPOINT( 1 2 3)') as geom;
-select '25',ST_asewkt('MULTIPOINT( 1 2, 3 4, 5 6)') as geom;
-select '26',ST_asewkt('MULTIPOINT( 1 2 3, 5 6 7, 8 9 10, 11 12 13)') as geom;
-select '27',ST_asewkt('MULTIPOINT( 1 2 0, 1 2 3, 4 5 0, 6 7 8)') as geom;
-select '28',ST_asewkt('MULTIPOINT( 1 2 3,4 5 0)') as geom;
-
-select 

MonetDB: qcancel - add test

2021-03-03 Thread svetlin
Changeset: 2f64b8242bb9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2f64b8242bb9
Modified Files:
sql/test/sysmon/Tests/timeout_join.maltest
Branch: qcancel
Log Message:

add test


diffs (30 lines):

diff --git a/sql/test/sysmon/Tests/timeout_join.maltest 
b/sql/test/sysmon/Tests/timeout_join.maltest
--- a/sql/test/sysmon/Tests/timeout_join.maltest
+++ b/sql/test/sysmon/Tests/timeout_join.maltest
@@ -19,3 +19,26 @@ d:=t2-t1;
 qto:= d + 1000:lng;
 clients.setQryTimeoutMicro(qto);
 (vg_a,xg_b):=algebra.join(a,b,nil:bat,nil:bat,false,nil:lng);
+
+
+statement error
+int_a:=bat.new(:int);
+int_b:=bat.new(:int);
+INT_MAX := 2147483647;
+dbgmsk_restore := mdb.getDebug();
+dbgmsk_unset := 8+8388608;
+dbgmsk_keep := calc.xor(INT_MAX,dbgmsk_unset);
+dbgmsk_set := calc.and(dbgmsk_restore,dbgmsk_keep);
+mdb.setDebug(dbgmsk_set);
+t1:= alarm.usec();
+barrier j:= 0:int;
+bat.append(int_a, j);
+   bat.append(int_b, j);
+   redo j:= iterator.next(1:int,100:int);
+exit j;
+mdb.setDebug(dbgmsk_restore);
+t2:= alarm.usec();
+d:=t2-t1;
+qto:= d + 1000:lng;
+clients.setQryTimeoutMicro(qto);
+(vg_a,xg_b):=algebra.join(int_a,int_b,nil:bat,nil:bat,false,nil:lng);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: qcancel - add cleanup callback handler

2021-03-03 Thread svetlin
Changeset: 71025861879e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=71025861879e
Modified Files:
gdk/gdk.h
gdk/gdk_cross.c
gdk/gdk_join.c
Branch: qcancel
Log Message:

add cleanup callback handler


diffs (140 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2115,19 +2115,29 @@ gdk_export BAT *BATsample_with_seed(BAT 
 
 #define CHECK_QRY_TIMEOUT_STEP 1
 
-#define GDK_CHECK_TIMEOUT(timeoffset, counter) \
+#define DEFAULT_TIMEOUT_HANDLER()  \
+   do {\
+   GDKerror("Timeout was reached!");   \
+   return GDK_FAIL;\
+   } while(0)
+
+#define GOTO_LABEL_TIMEOUT_HANDLER(label)  \
+   do {\
+   goto label; \
+   } while(0)
+
+#define GDK_CHECK_TIMEOUT(timeoffset, counter, callback)   \
do {\
if (timeoffset) {   \
if (counter > CHECK_QRY_TIMEOUT_STEP) { \
if (GDKusec() > timeoffset) {   \
-   GDKerror("Timeout was reached!");   \
-   return GDK_FAIL;\
+   callback;   \
}   \
counter = 0;\
} else {\
counter++;  \
}   \
}   \
-   } while (false)
+   } while (0)
 
 #endif /* _GDK_H_ */
diff --git a/gdk/gdk_cross.c b/gdk/gdk_cross.c
--- a/gdk/gdk_cross.c
+++ b/gdk/gdk_cross.c
@@ -56,7 +56,7 @@ BATsubcross(BAT **r1p, BAT **r2p, BAT *l
for (i = 0; i < cnt1; i++) {
oid x = canditer_next();
for (j = 0; j < cnt2; j++) {
-   GDK_CHECK_TIMEOUT(timeoffset, counter);
+   GDK_CHECK_TIMEOUT(timeoffset, counter, 
DEFAULT_TIMEOUT_HANDLER());
*p++ = x;
}
}
@@ -73,7 +73,7 @@ BATsubcross(BAT **r1p, BAT **r2p, BAT *l
counter = 0;
for (i = 0; i < cnt1; i++) {
for (j = 0; j < cnt2; j++) {
-   GDK_CHECK_TIMEOUT(timeoffset, counter);
+   GDK_CHECK_TIMEOUT(timeoffset, counter, 
DEFAULT_TIMEOUT_HANDLER());
*p++ = canditer_next();
}
canditer_reset();
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -374,7 +374,8 @@ selectjoin(BAT **r1p, BAT **r2p, BAT *l,
BUN p, q = BATcount(bn);
 
do {
-   GDK_CHECK_TIMEOUT(timeoffset, counter);
+   GDK_CHECK_TIMEOUT(timeoffset, counter,
+   DEFAULT_TIMEOUT_HANDLER());
for (p = 0; p < q; p++) {
*o1p++ = o;
}
@@ -392,7 +393,8 @@ selectjoin(BAT **r1p, BAT **r2p, BAT *l,
BUN p, q = BATcount(bn);
 
do {
-   GDK_CHECK_TIMEOUT(timeoffset, counter);
+   GDK_CHECK_TIMEOUT(timeoffset, counter,
+   DEFAULT_TIMEOUT_HANDLER());
for (p = 0; p < q; p++) {
*o1p++ = o;
}
@@ -847,7 +849,8 @@ mergejoin_int(BAT **r1p, BAT **r2p, BAT 
/* from here on we don't have to worry about nil values */
 
while (lstart < lend && rstart < rend) {
-   GDK_CHECK_TIMEOUT(timeoffset, counter);
+   GDK_CHECK_TIMEOUT(timeoffset, counter,
+   GOTO_LABEL_TIMEOUT_HANDLER(bailout));
 
v = rvals[rstart];
 
@@ -1151,7 +1154,8 @@ mergejoin_lng(BAT **r1p, BAT **r2p, BAT 
/* from here on we don't have to worry about nil values */
 
while (lstart < lend && rstart < rend) {
-   GDK_CHECK_TIMEOUT(timeoffset, counter);
+   GDK_CHECK_TIMEOUT(timeoffset, counter,
+   

MonetDB: qcancel - fix test

2021-03-03 Thread svetlin
Changeset: ecddd38a9d9c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ecddd38a9d9c
Added Files:
sql/test/sysmon/Tests/timeout_cross.SQL.py
Removed Files:
sql/test/sysmon/Tests/timeout_cp.SQL.py
Modified Files:
sql/test/sysmon/Tests/timeout_join.maltest
Branch: qcancel
Log Message:

fix test


diffs (61 lines):

diff --git a/sql/test/sysmon/Tests/timeout_cp.SQL.py 
b/sql/test/sysmon/Tests/timeout_cp.SQL.py
deleted file mode 100644
--- a/sql/test/sysmon/Tests/timeout_cp.SQL.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from MonetDBtesting.sqltest import SQLTestCase
-
-with SQLTestCase() as tc:
-tc.execute("create table foo(id bigserial, value int);").assertSucceeded()
-tc.execute("create table bar(id bigserial, value int);").assertSucceeded()
-# test cross product
-tc.execute("insert into foo(value) (select * from 
generate_series(0,1));").assertSucceeded()
-tc.execute("insert into bar(value) (select * from 
generate_series(0,1));").assertSucceeded()
-tc.execute("call sys.setquerytimeout(1); select * from foo, bar;")\
-.assertFailed(err_code="HYT00", err_message="Query aborted due to 
timeout")
-# test mergejoin_int with bigger data set
-tc.execute("insert into foo(value) (select * from 
generate_series(0,1000));").assertSucceeded()
-tc.execute("insert into bar(value) (select * from 
generate_series(0,1000));").assertSucceeded()
-tc.execute("call sys.setquerytimeout(1); select * from foo as f join bar b 
on f.value=b.value;")\
-.assertFailed(err_code="HYT00", err_message="Query aborted due to 
timeout")
diff --git a/sql/test/sysmon/Tests/timeout_cross.SQL.py 
b/sql/test/sysmon/Tests/timeout_cross.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/sysmon/Tests/timeout_cross.SQL.py
@@ -0,0 +1,10 @@
+from MonetDBtesting.sqltest import SQLTestCase
+
+with SQLTestCase() as tc:
+tc.execute("create table foo(id bigserial, value int);").assertSucceeded()
+tc.execute("create table bar(id bigserial, value int);").assertSucceeded()
+# test cross product
+tc.execute("insert into foo(value) (select * from 
generate_series(0,1));").assertSucceeded()
+tc.execute("insert into bar(value) (select * from 
generate_series(0,1));").assertSucceeded()
+tc.execute("call sys.setquerytimeout(1); select * from foo, bar;")\
+.assertFailed(err_code="HYT00", err_message="Query aborted due to 
timeout")
diff --git a/sql/test/sysmon/Tests/timeout_join.maltest 
b/sql/test/sysmon/Tests/timeout_join.maltest
--- a/sql/test/sysmon/Tests/timeout_join.maltest
+++ b/sql/test/sysmon/Tests/timeout_join.maltest
@@ -1,9 +1,21 @@
+statement error
 a:=bat.new(:lng);
 b:=bat.new(:lng);
+INT_MAX := 2147483647;
+dbgmsk_restore := mdb.getDebug();
+dbgmsk_unset := 8+8388608;
+dbgmsk_keep := calc.xor(INT_MAX,dbgmsk_unset);
+dbgmsk_set := calc.and(dbgmsk_restore,dbgmsk_keep);
+mdb.setDebug(dbgmsk_set);
+t1:= alarm.usec();
 barrier i:= 0:lng;
 bat.append(a, i);
bat.append(b, i);
redo i:= iterator.next(1:lng,100:lng);
 exit i;
-clients.setquerytimeout(1);
+mdb.setDebug(dbgmsk_restore);
+t2:= alarm.usec();
+d:=t2-t1;
+qto:= d + 1000:lng;
+clients.setQryTimeoutMicro(qto);
 (vg_a,xg_b):=algebra.join(a,b,nil:bat,nil:bat,false,nil:lng);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: qcancel - add mal timeout func in microseconds

2021-03-03 Thread svetlin
Changeset: 08e663655645 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=08e663655645
Modified Files:
monetdb5/modules/mal/clients.c
Branch: qcancel
Log Message:

add mal timeout func in microseconds


diffs (53 lines):

diff --git a/monetdb5/modules/mal/clients.c b/monetdb5/modules/mal/clients.c
--- a/monetdb5/modules/mal/clients.c
+++ b/monetdb5/modules/mal/clients.c
@@ -466,7 +466,7 @@ CLTsetTimeout(Client cntxt, MalBlkPtr mb
return msg;
 }
 
-/* set session time out based in seconds, converted into microseconds */
+/* set query timeout based in seconds, converted into microseconds */
 static str
 CLTqueryTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
@@ -509,6 +509,32 @@ CLTqueryTimeout(Client cntxt, MalBlkPtr 
return msg;
 }
 
+// set query timeout based in microseconds
+static str
+CLTqueryTimeoutMicro(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+   str msg = MAL_SUCCEED;
+   int idx = cntxt->idx;
+   lng qto = *getArgReference_lng(stk,pci,1);
+   (void) mb;
+
+   if (is_lng_nil(qto))
+   throw(MAL,"clients.queryTimeout","Query timeout cannot be 
NULL");
+   if( qto < 0)
+   throw(MAL,"clients.queryTimeout","Query timeout should be >= 
0");
+
+   MT_lock_set(_contextLock);
+   if (mal_clients[idx].mode == FREECLIENT)
+   msg = createException(MAL,"clients.queryTimeout","Session not 
active anymore");
+   else {
+   mal_clients[idx].querytimeout = qto;
+   QryCtx *qry_ctx = MT_thread_get_qry_ctx();
+   qry_ctx->querytimeout = qto;
+   }
+   MT_lock_unset(_contextLock);
+   return msg;
+}
+
 /* Set the current session timeout in seconds */
 static str
 CLTsessionTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
@@ -989,6 +1015,7 @@ mel_func clients_init_funcs[] = {
  pattern("clients", "setsession", CLTsetSessionTimeout, false, "Abort a 
session after  n seconds.", args(1,2, arg("",void),arg("n",lng))),
  pattern("clients", "settimeout", CLTsetTimeout, false, "Abort a query after  
n seconds.", args(1,2, arg("",void),arg("n",lng))),
  pattern("clients", "settimeout", CLTsetTimeout, false, "Abort a query after q 
seconds (q=0 means run undisturbed).\nThe session timeout aborts the connection 
after spending too\nmany seconds on query processing.", args(1,3, 
arg("",void),arg("q",lng),arg("s",lng))),
+ pattern("clients", "setQryTimeoutMicro", CLTqueryTimeoutMicro, false, "", 
args(1,2, arg("",void),arg("n",lng))),
  pattern("clients", "setquerytimeout", CLTqueryTimeout, false, "", args(1,2, 
arg("",void),arg("n",int))),
  pattern("clients", "setquerytimeout", CLTqueryTimeout, false, "", args(1,3, 
arg("",void),arg("sid",bte),arg("n",int))),
  pattern("clients", "setquerytimeout", CLTqueryTimeout, false, "", args(1,3, 
arg("",void),arg("sid",sht),arg("n",int))),
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list