MonetDB: Jul2021 - fixes for fits loading using the not so new c...

2021-07-07 Thread Niels Nes
Changeset: 80d530fb72db for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/80d530fb72db
Modified Files:
sql/backends/monet5/vaults/fits/fits.c
Branch: Jul2021
Log Message:

fixes for fits loading using the not so new claim and append apis


diffs (137 lines):

diff --git a/sql/backends/monet5/vaults/fits/fits.c 
b/sql/backends/monet5/vaults/fits/fits.c
--- a/sql/backends/monet5/vaults/fits/fits.c
+++ b/sql/backends/monet5/vaults/fits/fits.c
@@ -272,7 +272,7 @@ str FITSexportTable(Client cntxt, MalBlk
 
col = mvc_bind_column(m, tbl, colname[0]);
 
-   nrows = store->storage_api.count_col(tr, col, 1);
+   nrows = store->storage_api.count_col(tr, col, 0);
assert(nrows <= (size_t) GDK_oid_max);
 
snprintf(filename,BUFSIZ,"\n%s.fit",tname);
@@ -734,13 +734,13 @@ str FITSattach(Client cntxt, MalBlkPtr m
throw(MAL, "fits.attach", SQLSTATE(HY013) MAL_MALLOC_FAIL);
}
col = mvc_bind_column(m, fits_fl, "id");
-   fid = store->storage_api.count_col(tr, col, 1) + 1;
+   fid = store->storage_api.count_col(tr, col, 0) + 1;
store->storage_api.append_col(m->session->tr,
mvc_bind_column(m, fits_fl, "id"), offset, NULL, , 1, 
TYPE_int);
store->storage_api.append_col(m->session->tr,
-   mvc_bind_column(m, fits_fl, "name"), offset, NULL, fname, 1, 
TYPE_str);
+   mvc_bind_column(m, fits_fl, "name"), offset, NULL, , 1, 
TYPE_str);
col = mvc_bind_column(m, fits_tbl, "id");
-   tid = store->storage_api.count_col(tr, col, 1) + 1;
+   tid = store->storage_api.count_col(tr, col, 0) + 1;
 
if ((s = strrchr(fname, DIR_SEP)) == NULL)
s = fname;
@@ -817,19 +817,22 @@ str FITSattach(Client cntxt, MalBlkPtr m
store->storage_api.append_col(m->session->tr,
mvc_bind_column(m, fits_tbl, "id"), offset, NULL, , 
1, TYPE_int);
store->storage_api.append_col(m->session->tr,
-   mvc_bind_column(m, fits_tbl, "name"), offset, NULL, 
tname_low, 1, TYPE_str);
+   mvc_bind_column(m, fits_tbl, "name"), offset, NULL, 
_low, 1, TYPE_str);
store->storage_api.append_col(m->session->tr,
mvc_bind_column(m, fits_tbl, "columns"), offset, NULL, 
, 1, TYPE_int);
store->storage_api.append_col(m->session->tr,
mvc_bind_column(m, fits_tbl, "file_id"), offset, NULL, 
, 1, TYPE_int);
store->storage_api.append_col(m->session->tr,
mvc_bind_column(m, fits_tbl, "hdu"), offset, NULL, , 
1, TYPE_int);
+   char *vptr = tdate;
store->storage_api.append_col(m->session->tr,
-   mvc_bind_column(m, fits_tbl, "date"), offset, NULL, 
tdate, 1, TYPE_str);
+   mvc_bind_column(m, fits_tbl, "date"), offset, NULL, 
, 1, TYPE_str);
+   vptr = orig;
store->storage_api.append_col(m->session->tr,
-   mvc_bind_column(m, fits_tbl, "origin"), offset, NULL, 
orig, 1, TYPE_str);
+   mvc_bind_column(m, fits_tbl, "origin"), offset, NULL, 
, 1, TYPE_str);
+   vptr = comm;
store->storage_api.append_col(m->session->tr,
-   mvc_bind_column(m, fits_tbl, "comment"), offset, NULL, 
comm, 1, TYPE_str);
+   mvc_bind_column(m, fits_tbl, "comment"), offset, NULL, 
, 1, TYPE_str);
 
if (store->storage_api.claim_tab(m->session->tr, fits_tp, 1, 
, NULL) != LOG_OK) {
fits_close_file(fptr, );
@@ -841,19 +844,22 @@ str FITSattach(Client cntxt, MalBlkPtr m
}
store->storage_api.append_col(m->session->tr,
mvc_bind_column(m, fits_tp, "table_id"), offset, NULL, 
, 1, TYPE_int);
+   vptr = xtensionname;
store->storage_api.append_col(m->session->tr,
-   mvc_bind_column(m, fits_tp, "xtension"), offset, NULL, 
xtensionname, 1, TYPE_str);
+   mvc_bind_column(m, fits_tp, "xtension"), offset, NULL, 
, 1, TYPE_str);
store->storage_api.append_col(m->session->tr,
mvc_bind_column(m, fits_tp, "bitpix"), offset, NULL, 
, 1, TYPE_int);
+   vptr = stilversion;
store->storage_api.append_col(m->session->tr,
-   mvc_bind_column(m, fits_tp, "stilvers"), offset, NULL, 
stilversion, 1, TYPE_str);
+   mvc_bind_column(m, fits_tp, "stilvers"), offset, NULL, 
, 1, TYPE_str);
+   vptr = stilclass;
store->storage_api.append_col(m->session->tr,
-   mvc_bind_column(m, fits_tp, "stilclas"), offset, NULL, 
stilclass, 1, TYPE_str);
+   mvc_bind_column(m, fits_tp, "stilclas"), offset, NULL, 
, 1, TYPE_str);
 
/* 

MonetDB: Jul2021 - improved robustness of bm_subcommit. We now o...

2021-07-07 Thread Niels Nes
Changeset: 2b04f77c1610 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2b04f77c1610
Modified Files:
gdk/gdk_logger.c
Branch: Jul2021
Log Message:

improved robustness of bm_subcommit. We now only cleanup break of the cleanup 
(ie compaction of the catalog bats),
but don't fail the subcommit. Cleaned bats are marked as cleaned.


diffs (278 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1437,6 +1437,116 @@ subcommit_list_add(int next, bat *n, BUN
return next;
 }
 
+static int
+cleanup_and_swap(logger *lg, const log_bid *bids, lng *lids, lng *cnts, BAT 
*catalog_bid, BAT *catalog_id, BAT *dcatalog, int cleanup)
+{
+   BAT *nbids, *noids, *ncnts, *nlids, *ndels;
+   BUN p, q;
+   int err = 0;
+
+   oid *poss = Tloc(dcatalog, 0);
+   BATloop(dcatalog, p, q) {
+   oid pos = poss[p];
+
+   if (lids[pos] == lng_nil || lids[pos] > lg->saved_tid)
+   continue;
+
+   if (lg->debug & 1) {
+   fprintf(stderr, "release %d\n", bids[pos]);
+   if (BBP_lrefs(bids[pos]) != 2)
+   fprintf(stderr, "release %d %d\n", bids[pos], 
BBP_lrefs(bids[pos]));
+   }
+   if (lids[pos] >= 0) {
+   BAT *lb;
+
+   BBPrelease(bids[pos]);
+   if ((lb = BATdescriptor(bids[pos])) == NULL ||
+   BATmode(lb, true/*transient*/) != GDK_SUCCEED) {
+   TRC_WARNING(GDK, "Failed to set bat(%d) 
transient\n", bids[pos]);
+   err++;
+   } else {
+   lids[pos] = -1; /* mark freed */
+   }
+   //assert(BBP_lrefs(bid) == lb->batSharecnt + 1 && 
BBP_refs(bid) <= lb->batSharecnt);
+   logbat_destroy(lb);
+   }
+   }
+   if (err)
+   return 0;
+   /* only project out the deleted with last id > lg->saved_tid
+* update dcatalog, ie only keep those deleted which
+* were not released ie last id <= lg->saved_tid */
+
+   BUN ocnt = BATcount(catalog_bid);
+   nbids = logbat_new(TYPE_int, ocnt-cleanup, PERSISTENT);
+   noids = logbat_new(TYPE_int, ocnt-cleanup, PERSISTENT);
+   ncnts = logbat_new(TYPE_lng, ocnt-cleanup, TRANSIENT);
+   nlids = logbat_new(TYPE_lng, ocnt-cleanup, TRANSIENT);
+   ndels = logbat_new(TYPE_oid, BATcount(dcatalog)-cleanup, PERSISTENT);
+
+   if (nbids == NULL || noids == NULL || ncnts == NULL || nlids == NULL || 
ndels == NULL) {
+   logbat_destroy(nbids);
+   logbat_destroy(noids);
+   logbat_destroy(ncnts);
+   logbat_destroy(nlids);
+   logbat_destroy(ndels);
+   return 0;
+   }
+
+   int *oids = (int*)Tloc(catalog_id, 0);
+   q = BUNlast(catalog_bid);
+   for(p = 0; psaved_tid)
+   continue; /* remove */
+
+   if (BUNappend(nbids, , false) != GDK_SUCCEED ||
+   BUNappend(noids, , false) != GDK_SUCCEED ||
+   BUNappend(nlids, , false) != GDK_SUCCEED ||
+   BUNappend(ncnts, , false) != GDK_SUCCEED)
+   err=1;
+   pos = (oid)(BATcount(nbids)-1);
+   if (lid != lng_nil && BUNappend(ndels, , false) != 
GDK_SUCCEED)
+   err=1;
+   }
+
+   if (err)
+   return 0;
+   /* point of no return */
+   if (logger_switch_bat(catalog_bid, nbids, lg->fn, "catalog_bid") != 
GDK_SUCCEED ||
+   logger_switch_bat(catalog_id, noids, lg->fn, "catalog_id") != 
GDK_SUCCEED ||
+   logger_switch_bat(dcatalog, ndels, lg->fn, "dcatalog") != 
GDK_SUCCEED) {
+   logbat_destroy(nbids);
+   logbat_destroy(noids);
+   logbat_destroy(ndels);
+   logbat_destroy(ncnts);
+   logbat_destroy(nlids);
+   return -1;
+   }
+   logbat_destroy(lg->catalog_bid);
+   logbat_destroy(lg->catalog_id);
+   logbat_destroy(lg->dcatalog);
+
+   lg->catalog_bid = nbids;
+   lg->catalog_id = noids;
+   lg->dcatalog = ndels;
+
+   BBPunfix(lg->catalog_cnt->batCacheid);
+   BBPunfix(lg->catalog_lid->batCacheid);
+
+   lg->catalog_cnt = ncnts;
+   lg->catalog_lid = nlids;
+   lg->cnt = BATcount(lg->catalog_bid);
+   lg->deleted -= cleanup;
+   assert(lg->deleted == BATcount(lg->dcatalog));
+   return 0;
+}
+
 static gdk_return
 bm_subcommit(logger *lg)
 {
@@ -1451,7 +1561,7 @@ bm_subcommit(logger *lg)
int i = 0;
gdk_return res;
const log_bid *bids;
-   const lng *cnts = NULL, *lids = NULL;
+   lng *cnts = NULL, *lids = NULL;
int cleanup = 0;
lng t0 = 0;
 
@@ -1466,9 

MonetDB: Jul2021 - Turn HASHgrowbucket into a static function.

2021-07-07 Thread Sjoerd Mullender
Changeset: d788f02f7c3b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d788f02f7c3b
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk_hash.c
gdk/gdk_hash.h
Branch: Jul2021
Log Message:

Turn HASHgrowbucket into a static function.


diffs (47 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
@@ -342,7 +342,6 @@ const char *GDKversion(void) __attribute
 size_t GDKvm_cursize(void);
 void *GDKzalloc(size_t size) __attribute__((__malloc__)) 
__attribute__((__alloc_size__(1))) __attribute__((__warn_unused_result__));
 void HASHdestroy(BAT *b);
-gdk_return HASHgrowbucket(BAT *b);
 BUN HASHlist(Hash *h, BUN i);
 BUN HASHprobe(const Hash *h, const void *v);
 void HEAP_free(Heap *heap, var_t block);
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -342,7 +342,7 @@ HASHfix(Hash *h, bool save, bool dosync)
return GDK_SUCCEED;
 }
 
-gdk_return
+static gdk_return
 HASHgrowbucket(BAT *b)
 {
Hash *h = b->thash;
@@ -352,12 +352,6 @@ HASHgrowbucket(BAT *b)
 
TRC_DEBUG_IF(ACCELERATOR) t0 = GDKusec();
 
-   if (HASHfix(h, false, true) != GDK_SUCCEED) {
-   doHASHdestroy(b, h);
-   b->thash = NULL;
-   return GDK_FAIL;
-   }
-
/* only needed to fix hash tables built before this fix was
 * introduced */
if (h->width < SIZEOF_BUN &&
diff --git a/gdk/gdk_hash.h b/gdk/gdk_hash.h
--- a/gdk/gdk_hash.h
+++ b/gdk/gdk_hash.h
@@ -33,7 +33,6 @@ gdk_export gdk_return BAThash(BAT *b);
 gdk_export void HASHdestroy(BAT *b);
 gdk_export BUN HASHprobe(const Hash *h, const void *v);
 gdk_export BUN HASHlist(Hash *h, BUN i);
-gdk_export gdk_return HASHgrowbucket(BAT *b);
 
 #define BUN2 2
 #define BUN4 4
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Merge heads

2021-07-07 Thread Panagiotis Koutsourakis
Changeset: 2f44594a914e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2f44594a914e
Modified Files:
sql/server/sql_scan.c
Branch: Jul2021
Log Message:

Merge heads


diffs (truncated from 5186 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
@@ -9170,6 +9170,7 @@ stdout of test 'MAL-signatures` in direc
 [ "rapi",  "eval_aggr","pattern rapi.eval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ", "RAPIevalAggr;",""  ]
 [ "rapi",  "prelude",  "command rapi.prelude():void ", "RAPIprelude;", 
""  ]
 [ "rapi",  "subeval_aggr", "pattern rapi.subeval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ",  "RAPIevalAggr;",""  ]
+[ "remote","assert",   "pattern remote.assert(X_0:bit, X_1:str):void 
","RMTassert;",   ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy():bat[:any] ",   
"RMTbincopyfrom;",  ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy(X_0:bat[:any]):void 
",   "RMTbincopyto;",""  ]
 [ "remote","batload",  "pattern remote.batload(X_0:any_1, 
X_1:int):bat[:any_1] ",  "RMTbatload;",  ""  ]
@@ -9271,6 +9272,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str) 
(X_2:bat[:int], X_3:bat[:lng], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], 
X_7:bat[:lng], X_8:bat[:int]) ",  "mvc_delta_values;",""  ]
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str, X_2:str) 
(X_3:bat[:int], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], 
X_8:bat[:lng], X_9:bat[:int]) ", "mvc_delta_values;",""  ]
 [ "sql",   "dense_rank",   "pattern sql.dense_rank(X_0:any_1, X_1:bit, 
X_2:bit):int ", "SQLdense_rank;",   ""  ]
+[ "sql",   "deregister",   "pattern sql.deregister():int ",
"RAstatementEnd;",  ""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:any_1):bit ", "SQLdiff;", 
""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:bit, X_1:any_1):bit ",
"SQLdiff;", ""  ]
 [ "sql",   "drop_hash","unsafe pattern sql.drop_hash(X_0:str, 
X_1:str):void ", "SQLdrop_hash;",""  ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -12471,6 +12471,7 @@ stdout of test 'MAL-signatures` in direc
 [ "rapi",  "eval_aggr","pattern rapi.eval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ", "RAPIevalAggr;",""  ]
 [ "rapi",  "prelude",  "command rapi.prelude():void ", "RAPIprelude;", 
""  ]
 [ "rapi",  "subeval_aggr", "pattern rapi.subeval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ",  "RAPIevalAggr;",""  ]
+[ "remote","assert",   "pattern remote.assert(X_0:bit, X_1:str):void 
","RMTassert;",   ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy():bat[:any] ",   
"RMTbincopyfrom;",  ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy(X_0:bat[:any]):void 
",   "RMTbincopyto;",""  ]
 [ "remote","batload",  "pattern remote.batload(X_0:any_1, 
X_1:int):bat[:any_1] ",  "RMTbatload;",  ""  ]
@@ -12577,6 +12578,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str) 
(X_2:bat[:int], X_3:bat[:lng], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], 
X_7:bat[:lng], X_8:bat[:int]) ",  "mvc_delta_values;",""  ]
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str, X_2:str) 
(X_3:bat[:int], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], 
X_8:bat[:lng], X_9:bat[:int]) ", "mvc_delta_values;",""  ]
 [ "sql",   "dense_rank",   "pattern sql.dense_rank(X_0:any_1, X_1:bit, 
X_2:bit):int ", "SQLdense_rank;",   ""  ]
+[ "sql",   "deregister",   "pattern sql.deregister():int ",
"RAstatementEnd;",  ""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:any_1):bit ", "SQLdiff;", 
""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:bit, X_1:any_1):bit ",
"SQLdiff;", ""  ]
 [ "sql",   "drop_hash","unsafe pattern sql.drop_hash(X_0:str, 
X_1:str):void ", "SQLdrop_hash;",""  ]
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
@@ -937,6 +937,7 @@ const char *deleteRef;
 void deleteSymbol(Module scope, Symbol prg);
 const char *deltaRef;
 const char *dense_rankRef;
+const char *deregisterRef;
 malType destinationType(MalBlkPtr mb, InstrPtr p);
 const char *diffRef;
 const char *diffcandRef;
diff --git 

MonetDB: Jul2021 - Avoid looking up raw_strings variable on ever...

2021-07-07 Thread Panagiotis Koutsourakis
Changeset: 119723724e8a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/119723724e8a
Modified Files:
sql/server/sql_scan.c
sql/server/sql_scan.h
Branch: Jul2021
Log Message:

Avoid looking up raw_strings variable on every read

We keep a bit in the sql scanner that controls whether it reads raw
strings or not. It is initialized using the raw_strings
setting/property.


diffs (149 lines):

diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -528,6 +528,7 @@ scanner_init(struct scanner *s, bstream 
.rs = rs,
.ws = ws,
.mode = LINE_N,
+   .raw_string_mode = GDKgetenv_istrue("raw_strings"),
};
 }
 
@@ -985,11 +986,9 @@ int scanner_symbol(mvc * c, int cur)
return cur;
return tokenize(c, cur);
case '\'':
-#ifdef SQL_STRINGS_USE_ESCAPES
-   if (lc->next_string_is_raw || GDKgetenv_istrue("raw_strings"))
+   if (lc->raw_string_mode || lc->next_string_is_raw)
return scanner_string(c, cur, false);
return scanner_string(c, cur, true);
-#endif
case '"':
return scanner_string(c, cur, false);
case '{':
@@ -1272,9 +1271,7 @@ sql_get_next_token(YYSTYPE *yylval, void
if (token == IDENT || token == COMPARISON ||
token == RANK || token == aTYPE || token == ALIAS) {
yylval->sval = sa_strndup(c->sa, yylval->sval, 
lc->yycur-lc->yysval);
-#ifdef SQL_STRINGS_USE_ESCAPES
lc->next_string_is_raw = false;
-#endif
} else if (token == STRING) {
char quote = *yylval->sval;
char *str = sa_alloc( c->sa, (lc->yycur-lc->yysval-2)*2 + 1 );
@@ -1307,9 +1304,7 @@ sql_get_next_token(YYSTYPE *yylval, void
strcpy(str, yylval->sval + 3);
token = yylval->sval[2] == '\'' ? USTRING : UIDENT;
quote = yylval->sval[2];
-#ifdef SQL_STRINGS_USE_ESCAPES
lc->next_string_is_raw = true;
-#endif
break;
case 'x':
case 'X':
@@ -1321,9 +1316,7 @@ sql_get_next_token(YYSTYPE *yylval, void
*dst = 0;
quote = '\'';
token = XSTRING;
-#ifdef SQL_STRINGS_USE_ESCAPES
lc->next_string_is_raw = true;
-#endif
break;
case 'r':
case 'R':
@@ -1336,9 +1329,7 @@ sql_get_next_token(YYSTYPE *yylval, void
*dst = 0;
break;
default:
-#ifdef SQL_STRINGS_USE_ESCAPES
-   if (GDKgetenv_istrue("raw_strings") ||
-   lc->next_string_is_raw) {
+   if (lc->raw_string_mode || lc->next_string_is_raw) {
dst = str;
for (char *src = yylval->sval + 1; *src; dst++)
if ((*dst = *src++) == '\'' && *src == 
'\'')
@@ -1349,23 +1340,14 @@ sql_get_next_token(YYSTYPE *yylval, void
  (unsigned char *)yylval->sval + 1,
  lc->yycur - lc->yysval - 1);
}
-#else
-   dst = str;
-   for (char *src = yylval->sval + 1; *src; dst++)
-   if ((*dst = *src++) == '\'' && *src == '\'')
-   src++;
-   *dst = 0;
-#endif
break;
}
yylval->sval = str;
 
/* reset original */
lc->rs->buf[lc->rs->pos+lc->yycur- 1] = quote;
-#ifdef SQL_STRINGS_USE_ESCAPES
} else {
lc->next_string_is_raw = false;
-#endif
}
 
return(token);
diff --git a/sql/server/sql_scan.h b/sql/server/sql_scan.h
--- a/sql/server/sql_scan.h
+++ b/sql/server/sql_scan.h
@@ -15,11 +15,6 @@
 
 typedef enum { LINE_1, LINE_N } prot;
 
-/* Currently, MonetDB interprets \ specially in strings.  This is
- * contrary to the SQL standard.  Remove this define to revert to the
- * standard interpretation. */
-#define SQL_STRINGS_USE_ESCAPES 1
-
 struct scanner {
bstream *rs;
stream *ws;
@@ -36,15 +31,31 @@ struct scanner {
prot mode;  /* which mode (line (1,N), blocked) */
char *schema;   /* Keep schema name of create statement, needed 
AUTO_INCREMENT, SERIAL */
char *errstr;   /* error message from the bowels of the scanner */
-#ifdef SQL_STRINGS_USE_ESCAPES
-   /* because we interpret \ in strings, we need state in the
-* scanner so that we Do The Right Thing (TM) when we get a
-* unicode string split up in multiple parts (i.e. 

MonetDB: Jul2021 - Be more careful when to remove the hash-is-up...

2021-07-07 Thread Sjoerd Mullender
Changeset: 8b5ad812921b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8b5ad812921b
Modified Files:
gdk/gdk_hash.c
Branch: Jul2021
Log Message:

Be more careful when to remove the hash-is-uptodate bit.


diffs (198 lines):

diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -291,6 +291,57 @@ HASHupgradehashheap(BAT *b)
return GDK_SUCCEED;
 }
 
+/* write/remove the bit into/from the hash file that indicates the hash
+ * is good to go; the bit is the last part to be written and the first
+ * to be removed */
+static inline gdk_return
+HASHfix(Hash *h, bool save, bool dosync)
+{
+   if (!h->heapbckt.dirty && !h->heaplink.dirty) {
+   const size_t mask = (size_t) 1 << 24;
+   if (((size_t *) h->heapbckt.base)[0] & mask) {
+   if (save)
+   return GDK_SUCCEED;
+   ((size_t *) h->heapbckt.base)[0] &= ~mask;
+   } else {
+   if (!save)
+   return GDK_SUCCEED;
+   ((size_t *) h->heapbckt.base)[0] |= mask;
+   }
+   if (h->heapbckt.storage == STORE_MEM) {
+   gdk_return rc = GDK_FAIL;
+   int fd = GDKfdlocate(h->heapbckt.farmid, 
h->heapbckt.filename, "rb+", NULL);
+   if (fd >= 0) {
+   if (write(fd, h->heapbckt.base, SIZEOF_SIZE_T) 
== SIZEOF_SIZE_T) {
+   if (dosync &&
+   !(GDKdebug & NOSYNCMASK)) {
+#if defined(NATIVE_WIN32)
+   _commit(fd);
+#elif defined(HAVE_FDATASYNC)
+   fdatasync(fd);
+#elif defined(HAVE_FSYNC)
+   fsync(fd);
+#endif
+   }
+   rc = GDK_SUCCEED;
+   }
+   close(fd);
+   }
+   if (rc != GDK_SUCCEED)
+   ((size_t *) h->heapbckt.base)[0] &= ~mask;
+   return rc;
+   } else {
+   if (dosync &&
+   !(GDKdebug & NOSYNCMASK) &&
+   MT_msync(h->heapbckt.base, SIZEOF_SIZE_T) < 0) {
+   ((size_t *) h->heapbckt.base)[0] &= ~mask;
+   return GDK_FAIL;
+   }
+   }
+   }
+   return GDK_SUCCEED;
+}
+
 gdk_return
 HASHgrowbucket(BAT *b)
 {
@@ -301,17 +352,10 @@ HASHgrowbucket(BAT *b)
 
TRC_DEBUG_IF(ACCELERATOR) t0 = GDKusec();
 
-   if (!h->heapbckt.dirty && !h->heaplink.dirty &&
-   ((size_t *) h->heapbckt.base)[0] & ((size_t) 1 << 24)) {
-   ((size_t *) h->heapbckt.base)[0] &= ~((size_t) 1 << 24);
-   if (h->heapbckt.storage != STORE_MEM) {
-   if (!(GDKdebug & NOSYNCMASK) &&
-   MT_msync(h->heapbckt.base, SIZEOF_SIZE_T) < 0) {
-   doHASHdestroy(b, h);
-   b->thash = NULL;
-   return GDK_FAIL;
-   }
-   }
+   if (HASHfix(h, false, true) != GDK_SUCCEED) {
+   doHASHdestroy(b, h);
+   b->thash = NULL;
+   return GDK_FAIL;
}
 
/* only needed to fix hash tables built before this fix was
@@ -548,7 +592,6 @@ BATcheckhash(BAT *b)
 static gdk_return
 BAThashsave_intern(BAT *b, bool dosync)
 {
-   int fd;
gdk_return rc = GDK_SUCCEED;
Hash *h;
lng t0 = 0;
@@ -571,38 +614,8 @@ BAThashsave_intern(BAT *b, bool dosync)
HEAPsave(>heaplink, h->heaplink.filename, NULL, dosync) 
== GDK_SUCCEED &&
HEAPsave(hp, hp->filename, NULL, dosync) == GDK_SUCCEED) {
h->heaplink.dirty = false;
-   if (hp->storage == STORE_MEM) {
-   if ((fd = GDKfdlocate(hp->farmid, hp->filename, 
"rb+", NULL)) >= 0) {
-   ((size_t *) hp->base)[0] |= (size_t) 1 
<< 24;
-   if (write(fd, hp->base, SIZEOF_SIZE_T) 
>= 0) {
-   rc = GDK_SUCCEED;
-   if (dosync &&
-   !(GDKdebug & NOSYNCMASK)) {
-#if defined(NATIVE_WIN32)
-   _commit(fd);
-#elif defined(HAVE_FDATASYNC)
-   fdatasync(fd);
-#elif defined(HAVE_FSYNC)
-   fsync(fd);
-#endif
-  

MonetDB: Jul2021 - merged

2021-07-07 Thread Niels Nes
Changeset: 5b0bfb489fb0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5b0bfb489fb0
Branch: Jul2021
Log Message:

merged


diffs (129 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1300,7 +1300,10 @@ BATappend_or_update(BAT *b, BAT *p, cons
 #endif
}
if (ATOMreplaceVAR(b, , new) != GDK_SUCCEED) {
+   Hash *h = b->thash;
+   b->thash = NULL;
MT_rwlock_wrunlock(>thashlock);
+   doHASHdestroy(b, h);
bat_iterator_end();
return GDK_FAIL;
}
@@ -1308,7 +1311,10 @@ BATappend_or_update(BAT *b, BAT *p, cons
(b->twidth <= 2 ? d - GDK_VAROFFSET : d) >= 
((size_t) 1 << (8 << b->tshift))) {
/* doesn't fit in current heap, upgrade it */
if (GDKupgradevarheap(b, d, 0, false) != 
GDK_SUCCEED) {
+   Hash *h = b->thash;
+   b->thash = NULL;
MT_rwlock_wrunlock(>thashlock);
+   doHASHdestroy(b, h);
bat_iterator_end();
return GDK_FAIL;
}
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1012,6 +1012,58 @@ movestrbats(void)
 }
 #endif
 
+static void
+BBPmanager(void *dummy)
+{
+   (void) dummy;
+
+   for (;;) {
+   int n = 0;
+   for (bat bid = 1; bid < (bat) ATOMIC_GET(); bid++) {
+   MT_lock_set((bid));
+   if (BBP_refs(bid) == 0 && BBP_lrefs(bid) != 0) {
+   BBP_status_off(bid, BBPHOT);
+   n++;
+   }
+   MT_lock_unset((bid));
+   }
+   TRC_DEBUG(BAT_, "cleared HOT bit from %d bats\n", n);
+   for (int i = 0; i < 100; i++) {
+   MT_sleep_ms(100);
+   if (GDKexiting())
+   return;
+   }
+   n = 0;
+   for (bat bid = 1; bid < (bat) ATOMIC_GET(); bid++) {
+   MT_lock_set((bid));
+   BAT *b = NULL;
+   bool swap = false;
+   if (BBP_refs(bid) == 0 &&
+   BBP_lrefs(bid) != 0 &&
+   (b = BBP_cache(bid)) != NULL &&
+   b->batSharecnt == 0 &&
+   !BATdirty(b) &&
+   !(BBP_status(bid) & (BBPHOT | BBPUNLOADING)) &&
+   (BBP_status(bid) & BBPPERSISTENT)) {
+   BBP_status_on(bid, BBPUNLOADING);
+   swap = true;
+   }
+   MT_lock_unset((bid));
+   if (swap) {
+   TRC_DEBUG(BAT_, "unload and free bat %d\n", 
bid);
+   if (BBPfree(b) != GDK_SUCCEED)
+   GDKerror("unload failed for bat %d", 
bid);
+   n++;
+   }
+   }
+   TRC_DEBUG(BAT_, "unloaded %d bats\n", n);
+   if (GDKexiting())
+   return;
+   }
+}
+
+static MT_Id manager;
+
 gdk_return
 BBPinit(void)
 {
@@ -1199,6 +1251,8 @@ BBPinit(void)
return GDK_FAIL;
}
 #endif
+
+   manager = THRcreate(BBPmanager, NULL, MT_THR_DETACHED, "BBPmanager");
return GDK_SUCCEED;
 
   bailout:
@@ -2371,7 +2425,7 @@ decref(bat i, bool logical, bool release
 * while locked so no other thread thinks it's
 * available anymore */
assert((BBP_status(i) & BBPUNLOADING) == 0);
-   TRC_DEBUG(BAT_, "%s set to unloading BAT %d (status %u)\n", 
func, i, BBP_status(i));
+   TRC_DEBUG(BAT_, "%s set to unloading BAT %d (status %u, lrefs 
%d)\n", func, i, BBP_status(i), BBP_lrefs(i));
BBP_status_on(i, BBPUNLOADING);
swap = true;
}
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -105,7 +105,7 @@ HASHclear(Hash *h)
 #define HASH_VERSION_NOUUID3
 #define HASH_HEADER_SIZE   7   /* nr of size_t fields in header */
 
-static void
+void
 doHASHdestroy(BAT *b, Hash *hs)
 {
if (hs == (Hash *) 1) {
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -128,6 +128,8 @@ BAT *COLnew_intern(oid hseq, int tt, BUN

MonetDB: Jul2021 - small cleanup

2021-07-07 Thread Niels Nes
Changeset: b75436bf1300 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b75436bf1300
Modified Files:
gdk/gdk_logger.c
Branch: Jul2021
Log Message:

small cleanup


diffs (30 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1479,7 +1479,6 @@ bm_subcommit(logger *lg)
assert(col);
sizes[i] = cnts?(BUN)cnts[p]:0;
n[i++] = col;
-
}
/* now commit catalog, so it's also up to date on disk */
sizes[i] = lg->cnt;
@@ -1594,6 +1593,9 @@ bm_subcommit(logger *lg)
 
lg->catalog_cnt = ncnts;
lg->catalog_lid = nlids;
+   lg->cnt = BATcount(lg->catalog_bid);
+   lg->deleted -= cleanup;
+   assert(lg->deleted == BATcount(lg->dcatalog));
}
if (lg->seqs_id) {
sizes[i] = BATcount(lg->seqs_id);
@@ -2836,7 +2838,7 @@ logger_del_bat(logger *lg, log_bid bid)
if (BUNreplace(lg->catalog_lid, p, , false) != GDK_SUCCEED)
return GDK_FAIL;
if (BUNappend(lg->dcatalog, , false) == GDK_SUCCEED) {
-   lg->cnt--;
+   lg->deleted++;
return GDK_SUCCEED;
}
return GDK_FAIL;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - In a separate thread, unload bats that haven'...

2021-07-07 Thread Sjoerd Mullender
Changeset: bb227615634f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bb227615634f
Modified Files:
gdk/gdk_bbp.c
Branch: Jul2021
Log Message:

In a separate thread, unload bats that haven't been used in a while.


diffs (80 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1012,6 +1012,58 @@ movestrbats(void)
 }
 #endif
 
+static void
+BBPmanager(void *dummy)
+{
+   (void) dummy;
+
+   for (;;) {
+   int n = 0;
+   for (bat bid = 1; bid < (bat) ATOMIC_GET(); bid++) {
+   MT_lock_set((bid));
+   if (BBP_refs(bid) == 0 && BBP_lrefs(bid) != 0) {
+   BBP_status_off(bid, BBPHOT);
+   n++;
+   }
+   MT_lock_unset((bid));
+   }
+   TRC_DEBUG(BAT_, "cleared HOT bit from %d bats\n", n);
+   for (int i = 0; i < 100; i++) {
+   MT_sleep_ms(100);
+   if (GDKexiting())
+   return;
+   }
+   n = 0;
+   for (bat bid = 1; bid < (bat) ATOMIC_GET(); bid++) {
+   MT_lock_set((bid));
+   BAT *b = NULL;
+   bool swap = false;
+   if (BBP_refs(bid) == 0 &&
+   BBP_lrefs(bid) != 0 &&
+   (b = BBP_cache(bid)) != NULL &&
+   b->batSharecnt == 0 &&
+   !BATdirty(b) &&
+   !(BBP_status(bid) & (BBPHOT | BBPUNLOADING)) &&
+   (BBP_status(bid) & BBPPERSISTENT)) {
+   BBP_status_on(bid, BBPUNLOADING);
+   swap = true;
+   }
+   MT_lock_unset((bid));
+   if (swap) {
+   TRC_DEBUG(BAT_, "unload and free bat %d\n", 
bid);
+   if (BBPfree(b) != GDK_SUCCEED)
+   GDKerror("unload failed for bat %d", 
bid);
+   n++;
+   }
+   }
+   TRC_DEBUG(BAT_, "unloaded %d bats\n", n);
+   if (GDKexiting())
+   return;
+   }
+}
+
+static MT_Id manager;
+
 gdk_return
 BBPinit(void)
 {
@@ -1199,6 +1251,8 @@ BBPinit(void)
return GDK_FAIL;
}
 #endif
+
+   manager = THRcreate(BBPmanager, NULL, MT_THR_DETACHED, "BBPmanager");
return GDK_SUCCEED;
 
   bailout:
@@ -2371,7 +2425,7 @@ decref(bat i, bool logical, bool release
 * while locked so no other thread thinks it's
 * available anymore */
assert((BBP_status(i) & BBPUNLOADING) == 0);
-   TRC_DEBUG(BAT_, "%s set to unloading BAT %d (status %u)\n", 
func, i, BBP_status(i));
+   TRC_DEBUG(BAT_, "%s set to unloading BAT %d (status %u, lrefs 
%d)\n", func, i, BBP_status(i), BBP_lrefs(i));
BBP_status_on(i, BBPUNLOADING);
swap = true;
}
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Destroy hash after failed update.

2021-07-07 Thread Sjoerd Mullender
Changeset: 1febf8a266a5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1febf8a266a5
Modified Files:
gdk/gdk_batop.c
gdk/gdk_hash.c
gdk/gdk_private.h
Branch: Jul2021
Log Message:

Destroy hash after failed update.


diffs (49 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1300,7 +1300,10 @@ BATappend_or_update(BAT *b, BAT *p, cons
 #endif
}
if (ATOMreplaceVAR(b, , new) != GDK_SUCCEED) {
+   Hash *h = b->thash;
+   b->thash = NULL;
MT_rwlock_wrunlock(>thashlock);
+   doHASHdestroy(b, h);
bat_iterator_end();
return GDK_FAIL;
}
@@ -1308,7 +1311,10 @@ BATappend_or_update(BAT *b, BAT *p, cons
(b->twidth <= 2 ? d - GDK_VAROFFSET : d) >= 
((size_t) 1 << (8 << b->tshift))) {
/* doesn't fit in current heap, upgrade it */
if (GDKupgradevarheap(b, d, 0, false) != 
GDK_SUCCEED) {
+   Hash *h = b->thash;
+   b->thash = NULL;
MT_rwlock_wrunlock(>thashlock);
+   doHASHdestroy(b, h);
bat_iterator_end();
return GDK_FAIL;
}
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -105,7 +105,7 @@ HASHclear(Hash *h)
 #define HASH_VERSION_NOUUID3
 #define HASH_HEADER_SIZE   7   /* nr of size_t fields in header */
 
-static void
+void
 doHASHdestroy(BAT *b, Hash *hs)
 {
if (hs == (Hash *) 1) {
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -128,6 +128,8 @@ BAT *COLnew_intern(oid hseq, int tt, BUN
__attribute__((__visibility__("hidden")));
 Heap *createOIDXheap(BAT *b, bool stable)
__attribute__((__visibility__("hidden")));
+void doHASHdestroy(BAT *b, Hash *hs)
+   __attribute__((__visibility__("hidden")));
 void gdk_bbp_reset(void)
__attribute__((__visibility__("hidden")));
 gdk_return GDKextend(const char *fn, size_t size)
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: monetdbe_prepare - Improving error handling.

2021-07-07 Thread Aris Koning
Changeset: 5679d5bc4ed3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5679d5bc4ed3
Modified Files:
sql/backends/monet5/sql_result.c
tools/monetdbe/monetdbe.c
Branch: monetdbe_prepare
Log Message:

Improving error handling.


diffs (145 lines):

diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -960,15 +960,16 @@ create_prepare_result(backend *b, cq *q,
}
}
 
+   // A little hack to inform the result receiver of the name of the 
compiled mal program.
if (b->client->protocol == PROTOCOL_COLUMNAR) {
-   if (BUNappend(btype,_nil, 
false) != GDK_SUCCEED ||
-   BUNappend(bimpl,str_nil 
, false) != GDK_SUCCEED ||
-   BUNappend(bdigits,  _nil
, false) != GDK_SUCCEED ||
-   BUNappend(bscale,   _nil
, false) != GDK_SUCCEED ||
-   BUNappend(bschema,  str_nil 
, false) != GDK_SUCCEED ||
-   BUNappend(btable,   q->f->imp   
, false) != GDK_SUCCEED ||
-   BUNappend(bcolumn,  str_nil 
, false) != GDK_SUCCEED)
-   goto wrapup;
+   if (BUNappend(btype,_nil, false) != 
GDK_SUCCEED ||
+   BUNappend(bimpl,str_nil , 
false) != GDK_SUCCEED ||
+   BUNappend(bdigits,  _nil, 
false) != GDK_SUCCEED ||
+   BUNappend(bscale,   _nil, 
false) != GDK_SUCCEED ||
+   BUNappend(bschema,  str_nil , 
false) != GDK_SUCCEED ||
+   BUNappend(btable,   q->f->imp   , 
false) != GDK_SUCCEED ||
+   BUNappend(bcolumn,  str_nil , 
false) != GDK_SUCCEED)
+   goto wrapup;
}
 
order = BATdense(0, 0, BATcount(btype));
diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -1050,48 +1050,74 @@ struct callback_context {
 };
 
 static str
-monetdbe_result_cb(void* context, char* tblname, columnar_result* results, 
size_t nr_results) {
-   monetdbe_database_internal *mdbe = ((struct callback_context*) 
context)->mdbe;
+monetdbe_set_remote_results(backend *be, char* tblname, columnar_result* 
results, size_t nr_results) {
+
+   char* error = NULL;
 
if (nr_results == 0)
return MAL_SUCCEED; // No work to do.
 
-   backend *be = NULL;
-   if ((mdbe->msg = getBackendContext(mdbe->c, )) != NULL)
-   return mdbe->msg;
-
-   BAT* order = BATdescriptor(results[0].id);
-   if (!order) {
-   mdbe->msg = 
createException(MAL,"monetdbe.monetdbe_result_cb",SQLSTATE(HY005) "Cannot 
access column descriptor ");
-   return mdbe->msg;
+   BAT* b_0 = BATdescriptor(results[0].id); // Fetch the first column to 
get the count.
+   if (!b_0) {
+   error = 
createException(MAL,"monetdbe.monetdbe_set_remote_results",SQLSTATE(HY005) 
"Cannot access column descriptor ");
+   return error;
}
 
-   mvc_result_table(be, 0, (int) nr_results, Q_TABLE, order);
-
-   for (unsigned  i = 0; i < nr_results; i++) {
+   BAT* order = BATdense(0, 0, BATcount(b_0));
+   if (mvc_result_table(be, 0, (int) nr_results, Q_TABLE, order)) {
+   BBPreclaim(order);
+   BBPunfix(b_0->batCacheid);
+   error = 
createException(MAL,"monetdbe.monetdbe_set_remote_results",SQLSTATE(HY005) 
"Cannot create result table");
+   return error;
+   }
+
+   unsigned  i = 0;
+   for (i = 0; i < nr_results; i++) {
BAT *b = NULL;
if (i > 0) {
b = BATdescriptor(results[i].id);
}
else
-   b = order; // We already fetched this first column
+   b = b_0; // We already fetched this first column
 
char* colname   = results[i].colname;
char* tpename   = results[i].tpename;
int digits  = results[i].digits;
int scale   = results[i].scale;
 
-   if ( b == NULL)
-   mdbe->msg= 
createException(MAL,"monetdbe.monetdbe_result_cb",SQLSTATE(HY005) "Cannot 
access column descriptor ");
-   else if (mvc_result_column(be, tblname, colname, tpename, 
digits, scale, b))
-   mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_result_cb", SQLSTATE(42000) "Cannot access column 

MonetDB: default - Merged with Jul2021

2021-07-07 Thread Pedro Ferreira
Changeset: e77bac9062d2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e77bac9062d2
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_batop.c
gdk/gdk_bbp.c
monetdb5/modules/mal/mal_io.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_upgrades.c
tools/monetdbe/monetdbe.c
Branch: default
Log Message:

Merged with Jul2021


diffs (truncated from 5245 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
@@ -9171,6 +9171,7 @@ stdout of test 'MAL-signatures` in direc
 [ "rapi",  "eval_aggr","pattern rapi.eval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ", "RAPIevalAggr;",""  ]
 [ "rapi",  "prelude",  "command rapi.prelude():void ", "RAPIprelude;", 
""  ]
 [ "rapi",  "subeval_aggr", "pattern rapi.subeval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ",  "RAPIevalAggr;",""  ]
+[ "remote","assert",   "pattern remote.assert(X_0:bit, X_1:str):void 
","RMTassert;",   ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy():bat[:any] ",   
"RMTbincopyfrom;",  ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy(X_0:bat[:any]):void 
",   "RMTbincopyto;",""  ]
 [ "remote","batload",  "pattern remote.batload(X_0:any_1, 
X_1:int):bat[:any_1] ",  "RMTbatload;",  ""  ]
@@ -9272,6 +9273,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str) 
(X_2:bat[:int], X_3:bat[:lng], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], 
X_7:bat[:lng], X_8:bat[:int]) ",  "mvc_delta_values;",""  ]
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str, X_2:str) 
(X_3:bat[:int], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], 
X_8:bat[:lng], X_9:bat[:int]) ", "mvc_delta_values;",""  ]
 [ "sql",   "dense_rank",   "pattern sql.dense_rank(X_0:any_1, X_1:bit, 
X_2:bit):int ", "SQLdense_rank;",   ""  ]
+[ "sql",   "deregister",   "pattern sql.deregister():int ",
"RAstatementEnd;",  ""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:any_1):bit ", "SQLdiff;", 
""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:bit, X_1:any_1):bit ",
"SQLdiff;", ""  ]
 [ "sql",   "drop_hash","unsafe pattern sql.drop_hash(X_0:str, 
X_1:str):void ", "SQLdrop_hash;",""  ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -12472,6 +12472,7 @@ stdout of test 'MAL-signatures` in direc
 [ "rapi",  "eval_aggr","pattern rapi.eval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ", "RAPIevalAggr;",""  ]
 [ "rapi",  "prelude",  "command rapi.prelude():void ", "RAPIprelude;", 
""  ]
 [ "rapi",  "subeval_aggr", "pattern rapi.subeval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ",  "RAPIevalAggr;",""  ]
+[ "remote","assert",   "pattern remote.assert(X_0:bit, X_1:str):void 
","RMTassert;",   ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy():bat[:any] ",   
"RMTbincopyfrom;",  ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy(X_0:bat[:any]):void 
",   "RMTbincopyto;",""  ]
 [ "remote","batload",  "pattern remote.batload(X_0:any_1, 
X_1:int):bat[:any_1] ",  "RMTbatload;",  ""  ]
@@ -12578,6 +12579,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str) 
(X_2:bat[:int], X_3:bat[:lng], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], 
X_7:bat[:lng], X_8:bat[:int]) ",  "mvc_delta_values;",""  ]
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str, X_2:str) 
(X_3:bat[:int], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], 
X_8:bat[:lng], X_9:bat[:int]) ", "mvc_delta_values;",""  ]
 [ "sql",   "dense_rank",   "pattern sql.dense_rank(X_0:any_1, X_1:bit, 
X_2:bit):int ", "SQLdense_rank;",   ""  ]
+[ "sql",   "deregister",   "pattern sql.deregister():int ",
"RAstatementEnd;",  ""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:any_1):bit ", "SQLdiff;", 
""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:bit, X_1:any_1):bit ",
"SQLdiff;", ""  ]
 [ "sql",   "drop_hash","unsafe pattern sql.drop_hash(X_0:str, 
X_1:str):void ", "SQLdrop_hash;",""  ]
diff --git a/clients/Tests/exports.stable.out 

MonetDB: iso - Closed iso branch once merged into Jul2021

2021-07-07 Thread Pedro Ferreira
Changeset: 61072d3f56bb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/61072d3f56bb
Branch: iso
Log Message:

Closed iso branch once merged into Jul2021

___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Not so big one, merged iso into Jul2021

2021-07-07 Thread Pedro Ferreira
Changeset: 670fa61d6ce5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/670fa61d6ce5
Branch: Jul2021
Log Message:

Not so big one, merged iso into Jul2021


diffs (truncated from 4832 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
@@ -9170,6 +9170,7 @@ stdout of test 'MAL-signatures` in direc
 [ "rapi",  "eval_aggr","pattern rapi.eval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ", "RAPIevalAggr;",""  ]
 [ "rapi",  "prelude",  "command rapi.prelude():void ", "RAPIprelude;", 
""  ]
 [ "rapi",  "subeval_aggr", "pattern rapi.subeval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ",  "RAPIevalAggr;",""  ]
+[ "remote","assert",   "pattern remote.assert(X_0:bit, X_1:str):void 
","RMTassert;",   ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy():bat[:any] ",   
"RMTbincopyfrom;",  ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy(X_0:bat[:any]):void 
",   "RMTbincopyto;",""  ]
 [ "remote","batload",  "pattern remote.batload(X_0:any_1, 
X_1:int):bat[:any_1] ",  "RMTbatload;",  ""  ]
@@ -9271,6 +9272,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str) 
(X_2:bat[:int], X_3:bat[:lng], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], 
X_7:bat[:lng], X_8:bat[:int]) ",  "mvc_delta_values;",""  ]
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str, X_2:str) 
(X_3:bat[:int], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], 
X_8:bat[:lng], X_9:bat[:int]) ", "mvc_delta_values;",""  ]
 [ "sql",   "dense_rank",   "pattern sql.dense_rank(X_0:any_1, X_1:bit, 
X_2:bit):int ", "SQLdense_rank;",   ""  ]
+[ "sql",   "deregister",   "pattern sql.deregister():int ",
"RAstatementEnd;",  ""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:any_1):bit ", "SQLdiff;", 
""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:bit, X_1:any_1):bit ",
"SQLdiff;", ""  ]
 [ "sql",   "drop_hash","unsafe pattern sql.drop_hash(X_0:str, 
X_1:str):void ", "SQLdrop_hash;",""  ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -12471,6 +12471,7 @@ stdout of test 'MAL-signatures` in direc
 [ "rapi",  "eval_aggr","pattern rapi.eval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ", "RAPIevalAggr;",""  ]
 [ "rapi",  "prelude",  "command rapi.prelude():void ", "RAPIprelude;", 
""  ]
 [ "rapi",  "subeval_aggr", "pattern rapi.subeval_aggr(X_0:ptr, X_1:str, 
X_2:any...):any... ",  "RAPIevalAggr;",""  ]
+[ "remote","assert",   "pattern remote.assert(X_0:bit, X_1:str):void 
","RMTassert;",   ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy():bat[:any] ",   
"RMTbincopyfrom;",  ""  ]
 [ "remote","batbincopy",   "pattern remote.batbincopy(X_0:bat[:any]):void 
",   "RMTbincopyto;",""  ]
 [ "remote","batload",  "pattern remote.batload(X_0:any_1, 
X_1:int):bat[:any_1] ",  "RMTbatload;",  ""  ]
@@ -12577,6 +12578,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str) 
(X_2:bat[:int], X_3:bat[:lng], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], 
X_7:bat[:lng], X_8:bat[:int]) ",  "mvc_delta_values;",""  ]
 [ "sql",   "deltas",   "pattern sql.deltas(X_0:str, X_1:str, X_2:str) 
(X_3:bat[:int], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], 
X_8:bat[:lng], X_9:bat[:int]) ", "mvc_delta_values;",""  ]
 [ "sql",   "dense_rank",   "pattern sql.dense_rank(X_0:any_1, X_1:bit, 
X_2:bit):int ", "SQLdense_rank;",   ""  ]
+[ "sql",   "deregister",   "pattern sql.deregister():int ",
"RAstatementEnd;",  ""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:any_1):bit ", "SQLdiff;", 
""  ]
 [ "sql",   "diff", "pattern sql.diff(X_0:bit, X_1:any_1):bit ",
"SQLdiff;", ""  ]
 [ "sql",   "drop_hash","unsafe pattern sql.drop_hash(X_0:str, 
X_1:str):void ", "SQLdrop_hash;",""  ]
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
@@ -937,6 +937,7 @@ const char *deleteRef;
 void deleteSymbol(Module scope, Symbol prg);
 const char *deltaRef;
 const char *dense_rankRef;
+const char *deregisterRef;
 malType destinationType(MalBlkPtr mb, InstrPtr p);
 const char *diffRef;
 const char *diffcandRef;
diff --git 

MonetDB: iso - Merged with Jul2021

2021-07-07 Thread Pedro Ferreira
Changeset: 6b48b7e30b70 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6b48b7e30b70
Branch: iso
Log Message:

Merged with Jul2021


diffs (truncated from 413 to 300 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1559,10 +1559,10 @@ gdk_export BBPrec *BBP[N_BBPINIT];
 #define BBPvalid(i)(BBP_logical(i) != NULL && *BBP_logical(i) != '.')
 
 /* macros that nicely check parameters */
-#define BBPstatus(i)   (BBPcheck((i),"BBPstatus")?BBP_status(i):0)
-#define BBPrefs(i) (BBPcheck((i),"BBPrefs")?BBP_refs(i):-1)
-#define BBPcache(i)(BBPcheck((i),"BBPcache")?BBP_cache(i):(BAT*) NULL)
-#define BBPname(i) (BBPcheck((i), "BBPname") ? BBP_logical(i) : "")
+#define BBPstatus(i)   (BBPcheck(i) ? BBP_status(i) : 0)
+#define BBPrefs(i) (BBPcheck(i) ? BBP_refs(i) : -1)
+#define BBPcache(i)(BBPcheck(i) ? BBP_cache(i) : (BAT*) NULL)
+#define BBPname(i) (BBPcheck(i) ? BBP_logical(i) : "")
 
 #define BBPRENAME_ALREADY  (-1)
 #define BBPRENAME_ILLEGAL  (-2)
@@ -1966,13 +1966,13 @@ gdk_export void *THRdata[THREADDATA];
 #define THRset_errbuf(t,b) (t->data[2] = b)
 
 static inline bat
-BBPcheck(bat x, const char *y)
+BBPcheck(bat x)
 {
if (!is_bat_nil(x)) {
assert(x > 0);
 
if (x < 0 || x >= getBBPsize() || BBP_logical(x) == NULL) {
-   TRC_DEBUG(CHECK_, "%s: range error %d\n", y, (int) x);
+   TRC_DEBUG(CHECK_, "range error %d\n", (int) x);
} else {
return x;
}
@@ -1985,7 +1985,7 @@ BATdescriptor(bat i)
 {
BAT *b = NULL;
 
-   if (BBPcheck(i, "BATdescriptor")) {
+   if (BBPcheck(i)) {
if (BBPfix(i) <= 0)
return NULL;
b = BBP_cache(i);
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -595,7 +595,7 @@ batToStr(char **dst, size_t *len, const 
size_t i;
str s;
 
-   if (is_bat_nil(b) || (s = BBPname(b)) == NULL || *s == 0) {
+   if (is_bat_nil(b) || !BBPcheck(b) || (s = BBP_logical(b)) == NULL || *s 
== 0) {
atommem(4);
if (external) {
strcpy(*dst, "nil");
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1644,8 +1644,8 @@ BATappend_or_update(BAT *b, BAT *p, cons
}
bat_iterator_end();
TRC_DEBUG(ALGO,
- "BATreplace(" ALGOBATFMT "," ALGOBATFMT "," ALGOBATFMT ") " 
LLFMT " usec\n",
- ALGOBATPAR(b), ALGOBATPAR(p), ALGOBATPAR(n),
+ "BATreplace(" ALGOBATFMT "," ALGOOPTBATFMT "," ALGOBATFMT ") 
" LLFMT " usec\n",
+ ALGOBATPAR(b), ALGOOPTBATPAR(p), ALGOBATPAR(n),
  GDKusec() - t0);
return GDK_SUCCEED;
 }
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1570,12 +1570,11 @@ BBPdir_init(void)
 void
 BBPdump(void)
 {
-   bat i;
size_t mem = 0, vm = 0;
size_t cmem = 0, cvm = 0;
int n = 0, nc = 0;
 
-   for (i = 0; i < (bat) ATOMIC_GET(); i++) {
+   for (bat i = 0; i < (bat) ATOMIC_GET(); i++) {
if (BBP_refs(i) == 0 && BBP_lrefs(i) == 0)
continue;
BAT *b = BBP_desc(i);
@@ -1590,6 +1589,10 @@ BBPdump(void)
BBP_lrefs(i),
status,
BBP_cache(i) ? "" : " not cached");
+   if (b == NULL) {
+   fprintf(stderr, ", no descriptor\n");
+   continue;
+   }
if (b->batSharecnt > 0)
fprintf(stderr, " shares=%d", b->batSharecnt);
if (b->batDirtydesc)
@@ -1888,7 +1891,7 @@ BBPinsert(BAT *bn)
if (len == -1 || len >= FILENAME_MAX)
return 0;
 
-   TRC_DEBUG(BAT_, "%d = new %s(%s)\n", (int) i, BBPname(i), 
ATOMname(bn->ttype));
+   TRC_DEBUG(BAT_, "%d = new %s(%s)\n", (int) i, BBP_logical(i), 
ATOMname(bn->ttype));
}
 
return i;
@@ -1941,14 +1944,14 @@ BBPuncacheit(bat i, bool unloaddesc)
 {
if (i < 0)
i = -i;
-   if (BBPcheck(i, "BBPuncacheit")) {
+   if (BBPcheck(i)) {
BAT *b = BBP_desc(i);
 
assert(unloaddesc || BBP_refs(i) == 0);
 
if (b) {
if (BBP_cache(i)) {
-   TRC_DEBUG(BAT_, "uncache %d (%s)\n", (int) i, 
BBPname(i));
+   TRC_DEBUG(BAT_, "uncache %d (%s)\n", (int) i, 
BBP_logical(i));
 
BBP_cache(i) = NULL;
 
@@ -1970,7 +1973,7 @@ BBPuncacheit(bat i, bool unloaddesc)
 static inline void
 bbpclear(bat i, int idx, bool lock)
 {
-   TRC_DEBUG(BAT_, "clear %d (%s)\n", (int) i, BBPname(i));
+   TRC_DEBUG(BAT_, 

MonetDB: Jul2021 - Bat p is optional: don't crash with debug tra...

2021-07-07 Thread Sjoerd Mullender
Changeset: 210fa748cd4a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/210fa748cd4a
Modified Files:
gdk/gdk_batop.c
Branch: Jul2021
Log Message:

Bat p is optional: don't crash with debug tracing.


diffs (14 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1644,8 +1644,8 @@ BATappend_or_update(BAT *b, BAT *p, cons
}
bat_iterator_end();
TRC_DEBUG(ALGO,
- "BATreplace(" ALGOBATFMT "," ALGOBATFMT "," ALGOBATFMT ") " 
LLFMT " usec\n",
- ALGOBATPAR(b), ALGOBATPAR(p), ALGOBATPAR(n),
+ "BATreplace(" ALGOBATFMT "," ALGOOPTBATFMT "," ALGOBATFMT ") 
" LLFMT " usec\n",
+ ALGOBATPAR(b), ALGOOPTBATPAR(p), ALGOBATPAR(n),
  GDKusec() - t0);
return GDK_SUCCEED;
 }
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list