MonetDB: Jul2021 - fixes for fits loading using the not so new c...
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...
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.
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
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...
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...
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
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
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'...
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.
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.
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
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
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
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
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...
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