MonetDB: Sep2022 - merged with jan2022
Changeset: c6164990bb0c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c6164990bb0c Modified Files: monetdb5/optimizer/opt_remap.c Branch: Sep2022 Log Message: merged with jan2022 diffs (28 lines): diff --git a/monetdb5/optimizer/opt_remap.c b/monetdb5/optimizer/opt_remap.c --- a/monetdb5/optimizer/opt_remap.c +++ b/monetdb5/optimizer/opt_remap.c @@ -122,7 +122,7 @@ OPTmultiplexInline(Client cntxt, MalBlkP MalBlkPtr mq; InstrPtr q = NULL, sig; char buf[1024]; - int i,j,k,m, actions=0; + int i,j,k,m; int refbat=0, retc = p->retc; bit *upgrade; str msg; @@ -277,7 +277,6 @@ OPTmultiplexInline(Client cntxt, MalBlkP typeChecker(cntxt->usermodule,mq,q,i,TRUE); if( q->typechk== TYPE_UNKNOWN) goto terminateMX; - actions++; break; } /* handle simple upgraded assignments as well */ @@ -294,7 +293,6 @@ OPTmultiplexInline(Client cntxt, MalBlkP typeChecker(cntxt->usermodule,mq,q,i,TRUE); if( q->typechk== TYPE_UNKNOWN) goto terminateMX; - actions++; break; } } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with jan2022
Changeset: 9bbe639dfaf7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9bbe639dfaf7 Modified Files: gdk/gdk_logger.c gdk/gdk_logger_internals.h gdk/gdk_logger_old.c Branch: Sep2022 Log Message: merged with jan2022 diffs (283 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -310,12 +310,12 @@ string_reader(logger *lg, BAT *b, lng nr if (mnstr_readLng(lg->input_log, &SZ) != 1) return LOG_EOF; sz = (size_t)SZ; - char *buf = lg->buf; - if (lg->bufsize < sz) { - if (!(buf = GDKrealloc(lg->buf, sz))) + char *buf = lg->rbuf; + if (lg->rbufsize < sz) { + if (!(buf = GDKrealloc(lg->rbuf, sz))) return LOG_ERR; - lg->buf = buf; - lg->bufsize = sz; + lg->rbuf = buf; + lg->rbufsize = sz; } if (mnstr_read(lg->input_log, buf, sz, 1) != 1) @@ -419,8 +419,8 @@ log_read_updates(logger *lg, trans *tr, } // We have to read the value to update the read cursor - size_t tlen = lg->bufsize; - void *t = rt(lg->buf, &tlen, lg->input_log, 1); + size_t tlen = lg->rbufsize; + void *t = rt(lg->rbuf, &tlen, lg->input_log, 1); if (t == NULL) { res = LOG_ERR; } @@ -438,13 +438,13 @@ log_read_updates(logger *lg, trans *tr, } if (l->flag == LOG_UPDATE_CONST) { - size_t tlen = lg->bufsize; - void *t = rt(lg->buf, &tlen, lg->input_log, 1); + size_t tlen = lg->rbufsize; + void *t = rt(lg->rbuf, &tlen, lg->input_log, 1); if (t == NULL) { res = LOG_ERR; } else { - lg->buf = t; - lg->bufsize = tlen; + lg->rbuf = t; + lg->rbufsize = tlen; for(BUN p = 0; p<(BUN) nr; p++) { if (r && BUNappend(r, t, true) != GDK_SUCCEED) res = LOG_ERR; @@ -463,32 +463,32 @@ log_read_updates(logger *lg, trans *tr, else res = LOG_ERR; } else { - size_t tlen = lg->bufsize/sizeof(int); + size_t tlen = lg->rbufsize/sizeof(int); size_t cnt = 0, snr = (size_t)nr; snr = (snr+31)/32; assert(tlen); for (; res == LOG_OK && snr > 0; snr-=cnt) { cnt = snr>tlen?tlen:snr; - if (!mnstr_readIntArray(lg->input_log, lg->buf, cnt)) + if (!mnstr_readIntArray(lg->input_log, lg->rbuf, cnt)) res = LOG_ERR; } } } else { if (!ATOMvarsized(tpe)) { size_t cnt = 0, snr = (size_t)nr; - size_t tlen = lg->bufsize/ATOMsize(tpe), ntlen = lg->bufsize; + size_t tlen = lg->rbufsize/ATOMsize(tpe), ntlen = lg->rbufsize; assert(tlen); /* read in chunks of max * BUFSIZE/width rows */ for (; res == LOG_OK && snr > 0; snr-=cnt) { cnt = snr>tlen?tlen:snr; - void *t = rt(lg->buf, &ntlen, lg->input_log, cnt); + void *t = rt(lg->rbuf, &ntlen, lg->input_log, cnt); if (t == NULL) { res = LOG_EOF; break; } - assert(t == lg->buf); +
MonetDB: Sep2022 - merged with jan2022
Changeset: 1cb3ca0f39cc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1cb3ca0f39cc Modified Files: sql/backends/monet5/sql_result.c Branch: Sep2022 Log Message: merged with jan2022 diffs (12 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 @@ -1962,7 +1962,7 @@ mvc_export_result(backend *b, stream *s, b->results = res_tables_remove(b->results, t); if (res > -1) - res = mvc_export_warning(s, ""); + res = 1; return res; } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with Jan2022
Changeset: fe8032b0a7eb for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/fe8032b0a7eb Modified Files: sql/server/rel_select.c Branch: Sep2022 Log Message: merged with Jan2022 diffs (12 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -971,6 +971,8 @@ table_ref(sql_query *query, symbol *tabl list_hash_clear(exps); } } + if (temp_table && tableref->data.lval->t->type == type_symbol && tableref->data.lval->t->data.sym && tableref->data.lval->t->data.sym->data.lval->h->next->data.lval) /* AS with column aliases */ + temp_table = rel_table_optname(sql, temp_table, tableref->data.lval->h->next->data.sym, refs); if (allowed) return temp_table; return sql_error(sql, 02, SQLSTATE(42000) "SELECT: access denied for %s to table '%s'", get_string_global_var(sql, "current_user"), tname); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with jan2022
Changeset: 655e6029f35d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/655e6029f35d Modified Files: sql/server/rel_select.c Branch: Sep2022 Log Message: merged with jan2022 diffs (13 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -968,9 +968,6 @@ table_ref(sql_query *query, symbol *tabl noninternexp_setname(sql->sa, e, tname, NULL); set_basecol(e); } - if (tableref->data.lval->h->next->data.sym && tableref->data.lval->h->next->data.sym->data.lval->h->next->data.lval) { /* AS with column aliases */ - temp_table = rel_table_optname(sql, temp_table, tableref->data.lval->h->next->data.sym, refs); - } list_hash_clear(exps); } } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with Jan2022
Changeset: 7594113002f6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/7594113002f6 Modified Files: .bumpversion.cfg .hgtags MonetDB.spec clients/mapilib/mapi.rc clients/odbc/driver/driver.rc clients/odbc/winsetup/setup.rc cmake/monetdb-versions.cmake debian/changelog gdk/ChangeLog-Archive gdk/libbat.rc misc/packages/deb/changelog misc/packages/rpm/changelog monetdb5/ChangeLog-Archive monetdb5/modules/mal/tablet.c monetdb5/tools/libmonetdb5.rc sql/ChangeLog-Archive sql/server/rel_select.c sql/test/miscellaneous/Tests/All Branch: Sep2022 Log Message: merged with Jan2022 diffs (51 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -793,3 +793,5 @@ 41ca60d96bd0198ca5d74937630a442a5fbaf1cd 41ca60d96bd0198ca5d74937630a442a5fbaf1cd Sep2022_SP1_release e8b0e5558313f4d98bc48316368299decc55ed4e Sep2022_13 e8b0e5558313f4d98bc48316368299decc55ed4e Sep2022_SP2_release +8a95168e853382b9b89ac7b67e343788ea837f3a Jul2021_31 +8a95168e853382b9b89ac7b67e343788ea837f3a Jul2021_SP9_release diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c --- a/monetdb5/modules/mal/tablet.c +++ b/monetdb5/modules/mal/tablet.c @@ -974,7 +974,7 @@ SQLload_parse_row(READERtask *task, int /* eat away the column separator */ for (; *row; row++) - if (*row == '\\') { + if (*row == '\\' && task->escape) { if (row[1]) row++; } else if (*row == ch && (task->seplen == 1 || strncmp(row, task->csep, task->seplen) == 0)) { @@ -1010,7 +1010,7 @@ SQLload_parse_row(READERtask *task, int /* eat away the column separator */ for (; *row; row++) - if (*row == '\\') { + if (*row == '\\' && task->escape) { if (row[1]) row++; } else if (*row == ch) { diff --git a/sql/test/miscellaneous/Tests/All b/sql/test/miscellaneous/Tests/All --- a/sql/test/miscellaneous/Tests/All +++ b/sql/test/miscellaneous/Tests/All @@ -27,3 +27,4 @@ sequences analyze_test blobs temp_tables +table_alias_on_cte diff --git a/sql/test/miscellaneous/Tests/table_alias_on_cte.test b/sql/test/miscellaneous/Tests/table_alias_on_cte.test new file mode 100644 --- /dev/null +++ b/sql/test/miscellaneous/Tests/table_alias_on_cte.test @@ -0,0 +1,8 @@ + +query I rowsort +WITH bar(i) AS (SELECT * FROM generate_series(0, 3)) +SELECT j from bar foo(j); + +0 +1 +2 ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with jan2022
Changeset: 1846507313b0 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1846507313b0 Modified Files: sql/include/sql_catalog.h Branch: Sep2022 Log Message: merged with jan2022 diffs (12 lines): diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -321,7 +321,7 @@ typedef struct sql_trans { list *dependencies; /* list of dependencies created (list of sqlids from the objects) */ list *depchanges; /* list of dependencies changed (it would be tested for conflicts at the end of the transaction) */ - int logchanges; /* count number of changes to be applied to the wal */ + lng logchanges; /* count number of changes to be applied to the wal */ int active; /* is active transaction */ int status; /* status of the last query */ ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with Jan2022
Changeset: 37905217c4fa for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/37905217c4fa Modified Files: sql/test/prepare/Tests/sqlancer_prepare.stable.out sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 Branch: Sep2022 Log Message: merged with Jan2022 diffs (24 lines): diff --git a/sql/test/prepare/Tests/sqlancer_prepare.stable.out b/sql/test/prepare/Tests/sqlancer_prepare.stable.out --- a/sql/test/prepare/Tests/sqlancer_prepare.stable.out +++ b/sql/test/prepare/Tests/sqlancer_prepare.stable.out @@ -176,7 +176,7 @@ [ ] % .prepare,.prepare, .prepare, .prepare, .prepare, .prepare # table_name % type,digits, scale, schema, table, column # name -% varchar, int,int,str,str,str # type +% varchar, int,int,varchar,varchar,varchar # type % 6, 2, 1, 0, 2, 2 # length [ "bigint",64, 0, "", "%2", "%2"] % .%2 # table_name diff --git a/sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 b/sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 --- a/sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 +++ b/sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 @@ -176,7 +176,7 @@ [ ] % .prepare,.prepare, .prepare, .prepare, .prepare, .prepare # table_name % type,digits, scale, schema, table, column # name -% varchar, int,int,str,str,str # type +% varchar, int,int,varchar,varchar,varchar # type % 6, 2, 1, 0, 2, 2 # length [ "bigint",64, 0, "", "%2", "%2"] % .%2 # table_name ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with jan2022
Changeset: f4ee56c86c96 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f4ee56c86c96 Modified Files: monetdb5/mal/mal_session.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_scenario.c Branch: Sep2022 Log Message: merged with jan2022 diffs (206 lines): diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c --- a/monetdb5/mal/mal_session.c +++ b/monetdb5/mal/mal_session.c @@ -392,7 +392,7 @@ MSscheduleClient(str command, str challe mnstr_printf(c->fdout, "!%s\n", s); mnstr_flush(c->fdout, MNSTR_FLUSH_DATA); GDKfree(s); - c->mode = FINISHCLIENT; + MCcloseClient(c); } if (!GDKgetenv_isyes(mal_enableflag) && (strncasecmp("sql", lang, 3) != 0 && uid != 0)) { @@ -401,6 +401,7 @@ MSscheduleClient(str command, str challe "run mserver5 with --set %s=yes to change this.\n", mal_enableflag); exit_streams(fin, fout); GDKfree(command); + MCcloseClient(c); return; } } @@ -410,6 +411,7 @@ MSscheduleClient(str command, str challe exit_streams(fin, fout); freeException(msg); GDKfree(command); + MCcloseClient(c); return; } diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -324,7 +324,7 @@ static int node *n; int i, q, v, res = 0, added_to_cache = 0, *lret, *rret; size_t len = 1024, nr; - char *lname, *buf; + char *lname = NULL, *buf = NULL, *mal_session_uuid, *err = NULL; sql_rel *r = rel; if (local_tbl == NULL) { @@ -369,6 +369,7 @@ static int if( c->curprg == NULL) { GDKfree(lname); sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL); + c->curprg = backup; return -1; } lname[0] = 'l'; @@ -377,9 +378,9 @@ static int curInstr = relational_func_create_result(m, curBlk, curInstr, rel); if( curInstr == NULL) { - GDKfree(lname); sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL); - return -1; + res = -1; + goto cleanup; } /* ops */ @@ -394,9 +395,9 @@ static int sprintf(nbuf, "A%d", i++); if ((varid = newVariable(curBlk, nbuf, strlen(nbuf), type)) < 0) { - GDKfree(lname); sql_error(m, 10, SQLSTATE(42000) "Internal error while compiling statement: variable id too long"); - return -1; + res = -1; + goto cleanup; } curInstr = pushArgument(curBlk, curInstr, varid); setVarType(curBlk, varid, type); @@ -445,9 +446,9 @@ static int p = pushArgument(curBlk, p, getArg(o,0)); if (!(buf = rel2str(m, rel))) { - GDKfree(lname); sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL); - return -1; + res = -1; + goto cleanup; } o = newFcnCall(curBlk, remoteRef, putRef); o = pushArgument(curBlk, o, q); @@ -456,9 +457,9 @@ static int free(buf); if (!(buf = GDKmalloc(len))) { - GDKfree(lname); sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL); - return -1; + res = -1; + goto cleanup; } buf[0] = 0; @@ -479,10 +480,10 @@ static int len = (len + nlen) * 2; char *tmp = GDKrealloc(buf, len); if (tmp == NULL) { - GDKfree(lname); GDKfree(buf); sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL); - return -1; + res = -1; + goto cleanup; } buf = tmp; } @@ -504,11 +505,11 @@ static int str next = sql_subtype_string(m->ta, t); if (!next) { - GDKfree(lname); GDKfree(buf); sa_reset(m->ta); sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL); -
MonetDB: Sep2022 - merged with jan2022
Changeset: d9eb040fd643 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d9eb040fd643 Modified Files: .bumpversion.cfg .hgtags MonetDB.spec clients/mapilib/mapi.rc clients/odbc/driver/driver.rc clients/odbc/winsetup/setup.rc cmake/monetdb-versions.cmake debian/changelog gdk/ChangeLog-Archive gdk/gdk_bbp.c gdk/libbat.rc misc/packages/deb/changelog misc/packages/rpm/changelog monetdb5/ChangeLog-Archive monetdb5/optimizer/opt_pushselect.c monetdb5/tools/libmonetdb5.rc sql/ChangeLog-Archive sql/test/prepare/Tests/sqlancer_prepare.sql sql/test/prepare/Tests/sqlancer_prepare.stable.out sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 tools/merovingian/ChangeLog-Archive Branch: Sep2022 Log Message: merged with jan2022 diffs (77 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -787,6 +787,7 @@ 44e45c9a451f6afd933773094ec25723f713d3be 44e45c9a451f6afd933773094ec25723f713d3be Jan2022_SP5_release 43d4a717410d6f6692a16a878640fc7e0f248725 Jan2022_25 43d4a717410d6f6692a16a878640fc7e0f248725 Jan2022_SP6_release +700e099bfee85318da09aabcd78ec7ea6e8fb6ef Jul2021_29 5c50a4071c86d1621e20a885a51cc36f2f23eec4 Sep2022_9 41ca60d96bd0198ca5d74937630a442a5fbaf1cd Sep2022_11 41ca60d96bd0198ca5d74937630a442a5fbaf1cd Sep2022_SP1_release diff --git a/monetdb5/optimizer/opt_pushselect.c b/monetdb5/optimizer/opt_pushselect.c --- a/monetdb5/optimizer/opt_pushselect.c +++ b/monetdb5/optimizer/opt_pushselect.c @@ -888,7 +888,11 @@ OPTpushselectImplementation(Client cntxt getArg(u, 3) = getArg(q,2); /* update ids */ //getArg(u, 4) = getArg(s,0); p = pushArgument(mb, u, getArg(s,0)); /* push at end */ + /* make sure to resolve again */ + u->token = ASSIGNsymbol; u->typechk = TYPE_UNKNOWN; + u->fcn = NULL; + u->blk = NULL; pushInstruction(mb,u); oclean[i] = 1; continue; diff --git a/sql/test/prepare/Tests/sqlancer_prepare.sql b/sql/test/prepare/Tests/sqlancer_prepare.sql --- a/sql/test/prepare/Tests/sqlancer_prepare.sql +++ b/sql/test/prepare/Tests/sqlancer_prepare.sql @@ -96,3 +96,11 @@ ROLLBACK; PREPARE SELECT 1 FROM (SELECT ?) x(x) CROSS JOIN LATERAL (SELECT 1 FROM ((SELECT 1) INTERSECT (SELECT 2)) vx(vx) JOIN (SELECT 1) z(z) ON x.x) w(w); --error, Could not determine type for argument number 1 PREPARE SELECT 2 FROM (SELECT DISTINCT 1) z(z) LEFT OUTER JOIN LATERAL (SELECT z.z, ? WHERE TRUE) a(a,b) ON TRUE; --error, push_up_project requires a type + +START TRANSACTION; +create table deleteall (i integer, j integer); +insert into deleteall (select a,a as b from generate_series(cast(1 as integer),1) as a(a)); +set optimizer='sequential_pipe'; +prepare select count(*) from deleteall where j in (2001,2007,2016,2028,2037,2047,2053,2059,2063,2067,2076,2087,2094,2099,2110,2115,2124,2135,2142,2147); +EXEC **(); +ROLLBACK; diff --git a/sql/test/prepare/Tests/sqlancer_prepare.stable.out b/sql/test/prepare/Tests/sqlancer_prepare.stable.out --- a/sql/test/prepare/Tests/sqlancer_prepare.stable.out +++ b/sql/test/prepare/Tests/sqlancer_prepare.stable.out @@ -173,3 +173,14 @@ % char # type % 1 # length [ "b" ] +[ ] +% .prepare,.prepare, .prepare, .prepare, .prepare, .prepare # table_name +% type,digits, scale, schema, table, column # name +% varchar, int,int,str,str,str # type +% 6, 2, 1, 0, 2, 2 # length +[ "bigint",64, 0, "", "%2", "%2"] +% .%2 # table_name +% %2 # name +% bigint # type +% 2 # length +[ 20 ] diff --git a/sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 b/sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 --- a/sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 +++ b/sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 @@ -173,3 +173,14 @@ % char # type % 1 # length [ "b" ] +[ ] +% .prepare,.prepare, .prepare, .prepare, .prepare, .prepare # table_name +% type,digits, scale, schema, table, column # name +% varchar, int,int,str,str,str # type +% 6, 2, 1, 0, 2, 2 # length +[ "bigint",64, 0, "", "%2", "%2"] +% .%2 # table_name +% %2 # name +% bigint # type +% 2 # length +[ 20 ] ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with Jan2022
Changeset: aa7ef45d4f14 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/aa7ef45d4f14 Modified Files: gdk/gdk_logger.c testing/Mtest.py.in Branch: Sep2022 Log Message: merged with Jan2022 diffs (12 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -2282,7 +2282,7 @@ log_create(int debug, const char *fn, co static ulng log_next_logfile(logger *lg, ulng ts) { - int m = (GDKdebug & FORCEMITOMASK)?1000:10; + int m = (GDKdebug & FORCEMITOMASK)?1000:100; if (!lg->pending || !lg->pending->next) return 0; if (lg->pending != lg->current && lg->pending->last_ts <= ts) { ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with jan2022
Changeset: 8c84624028b0 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/8c84624028b0 Modified Files: sql/common/sql_list.c sql/include/sql_list.h sql/storage/store.c Branch: Sep2022 Log Message: merged with jan2022 diffs (83 lines): diff --git a/sql/common/sql_list.c b/sql/common/sql_list.c --- a/sql/common/sql_list.c +++ b/sql/common/sql_list.c @@ -420,6 +420,23 @@ list_check_prop_all(list *l, prop_check_ return res; } +void +list_revert(list *l) +{ + node *c = NULL; + + l->t = l->h; + for (node *o = l->h; o; ) { + node *nxt = o->next; + + o->next = c; + c = o; + + o = nxt; + } + l->h = c; +} + int list_traverse(list *l, traverse_func f, void *clientdata) { diff --git a/sql/include/sql_list.h b/sql/include/sql_list.h --- a/sql/include/sql_list.h +++ b/sql/include/sql_list.h @@ -55,7 +55,7 @@ extern node *list_remove_node(list *l, v extern void list_remove_data(list *l, void *gdata, void *data); extern void list_remove_list(list *l, void *gdata, list *data); extern list *list_move_data(list *l, list *d, void *data); - +extern void list_revert(list *l); extern int list_traverse(list *l, traverse_func f, void *clientdata); diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -3652,9 +3652,8 @@ sql_trans_rollback(sql_trans *tr, bool c } if (!list_empty(tr->changes)) { /* revert the change list */ - list *nl = SA_LIST(tr->sa, (fdestroy) NULL); - for(node *n=tr->changes->h; n; n = n->next) - list_prepend(nl, n->data); + list *nl = tr->changes; + list_revert(nl); /* rollback */ if (!commit_lock) @@ -3676,6 +3675,7 @@ sql_trans_rollback(sql_trans *tr, bool c if (!c->cleanup) { _DELETE(c); } else if (c->cleanup && !c->cleanup(store, c, oldest)) { + /* TODO change too node stealing (no allocs here) */ store->changes = sa_list_append(tr->sa, store->changes, c); } else _DELETE(c); @@ -3683,7 +3683,6 @@ sql_trans_rollback(sql_trans *tr, bool c store_unlock(store); if (!commit_lock) MT_lock_unset(&store->commit); - list_destroy(nl); list_destroy(tr->changes); tr->changes = NULL; tr->logchanges = 0; @@ -3691,10 +3690,8 @@ sql_trans_rollback(sql_trans *tr, bool c if (!commit_lock) MT_lock_set(&store->commit); store_lock(store); - if (ATOMIC_GET(&store->nr_active) == 1) { /* still just me */ - ulng oldest = store_timestamp(store); - store_pending_changes(store, oldest); - } + ulng oldest = store_oldest(store); + store_pending_changes(store, oldest); store_unlock(store); if (!commit_lock) MT_lock_unset(&store->commit); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with jan2022
Changeset: 1d07c616784e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1d07c616784e Modified Files: gdk/gdk_logger.c gdk/gdk_logger_internals.h sql/include/sql_catalog.h sql/storage/bat/bat_storage.c sql/storage/store.c Branch: Sep2022 Log Message: merged with jan2022 diffs (224 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -666,8 +666,10 @@ la_bat_updates(logger *lg, logaction *la if (bid < 0) return GDK_FAIL; - if (bid == 0) - return GDK_SUCCEED; /* ignore bats no longer in the catalog */ + if (!bid) { + GDKerror("la_bat_updates failed to find bid for object %d\n", la->cid); + return GDK_FAIL; + } if (!lg->flushing) { b = BATdescriptor(bid); @@ -760,6 +762,10 @@ la_bat_destroy(logger *lg, logaction *la if (bid < 0) return GDK_FAIL; + if (!bid) { + GDKerror("la_bat_destroy failed to find bid for object %d\n", la->cid); + return GDK_FAIL; + } if (bid && log_del_bat(lg, bid) != GDK_SUCCEED) return GDK_FAIL; return GDK_SUCCEED; @@ -1041,6 +1047,7 @@ log_open_output(logger *lg) } lg->end = 0; + lg->drops = 0; if (!LOG_DISABLED(lg)) { char id[32]; char *filename; @@ -1669,8 +1676,6 @@ bm_subcommit(logger *lg) sizes[i] = BATcount(dcatalog); n[i++] = dcatalog->batCacheid; - if (cleanup < (lg->cnt/2)) - cleanup = 0; if (cleanup && (rcnt=cleanup_and_swap(lg, r, bids, lids, cnts, catalog_bid, catalog_id, dcatalog, cleanup)) < 0) { GDKfree(n); GDKfree(r); @@ -1689,7 +1694,7 @@ bm_subcommit(logger *lg) sizes[i] = BATcount(lg->seqs_id); n[i++] = lg->seqs_val->batCacheid; } - if (!cleanup && lg->seqs_id && BATcount(lg->dseqs) > (BATcount(lg->seqs_id)/2)) { + if (!cleanup && lg->seqs_id && BATcount(lg->dseqs) > (BATcount(lg->seqs_id)/2) && BATcount(lg->dseqs) > 10 ) { BAT *tids, *ids, *vals; tids = bm_tids(lg->seqs_id, lg->dseqs); @@ -2151,6 +2156,8 @@ log_new(int debug, const char *fn, const .funcdata = funcdata, .id = 0, + .drops = 0, + .end = 0, .saved_id = getBBPlogno(), /* get saved log numer from bbp */ .saved_tid = (int)getBBPtransid(), /* get saved transaction id from bbp */ }; @@ -2304,21 +2311,18 @@ log_cleanup_range(logger *lg, ulng id) gdk_return log_activate(logger *lg) { + gdk_return res = GDK_SUCCEED; MT_lock_set(&lg->rotation_lock); log_lock(lg); - if (lg->end > 0 && lg->saved_id+1 == lg->id) { + if (lg->drops > 10 && lg->end > 0 && lg->saved_id+1 == lg->id) { lg->id++; log_close_output(lg); /* start new file */ - if (log_open_output(lg) != GDK_SUCCEED) { - log_unlock(lg); - MT_lock_unset(&lg->rotation_lock); - return GDK_FAIL; - } + res = log_open_output(lg); } log_unlock(lg); MT_lock_unset(&lg->rotation_lock); - return GDK_SUCCEED; + return res; } gdk_return @@ -2659,6 +2663,11 @@ log_bat_transient(logger *lg, log_id id) log_unlock(lg); return GDK_FAIL; } + if (!bid) { + GDKerror("log_bat_transient failed to find bid for object %d\n", id); + log_unlock(lg); + return GDK_FAIL; + } l.flag = LOG_DESTROY; l.id = id; @@ -2676,7 +2685,9 @@ log_bat_transient(logger *lg, log_id id) bid); BAT *b = BBPquickdesc(bid); assert(b); - lg->end += BATcount(b); + BUN cnt = BATcount(b); + lg->end += cnt; + lg->drops += cnt; gdk_return r = log_del_bat(lg, bid); log_unlock(lg); if (r != GDK_SUCCEED) @@ -2828,7 +2839,7 @@ new_logfile(logger *lg, stream* output_l const lng p = (lng) getfilepos(getFile(lg->output_log)); if (p == -1) return GDK_FAIL; - if (( p > log_large || (lg->end*1024) > log_large )) { + if (lg->drops > 10 || p > log_large || (lg->end*1024) > log_large) { log_lock(lg); if (ATOMIC_GET(&lg->refcount) == 1) { lg->id++; @@ -2927,6 +2938,10 @@ log_tdone(logger *lg, ulng commit_ts) if (lg->current) { lg->current->last_ts = commit_ts; } + stream* output_log = lg->output_log; + ulng id = lg->id; + if (!LOG_DISABLED(lg) && new_logfile(lg, output_log, id) != GDK_
MonetDB: Sep2022 - merged with Jan2022
Changeset: dba9b15a8bf0 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/dba9b15a8bf0 Modified Files: gdk/gdk_logger.c Branch: Sep2022 Log Message: merged with Jan2022 diffs (121 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -2273,25 +2273,30 @@ log_create(int debug, const char *fn, co static ulng log_next_logfile(logger *lg, ulng ts) { + int m = (GDKdebug & FORCEMITOMASK)?1000:10; if (!lg->pending || !lg->pending->next) return 0; - if (lg->pending->last_ts <= ts) - return lg->pending->id; + if (lg->pending != lg->current && lg->pending->last_ts <= ts) { + logged_range *p = lg->pending; + for(int i = 1; inext && p->next != lg->current && p->last_ts <= ts; i++) + p = p->next; + return p->id; + } return 0; } static void -log_cleanup_range(logger *lg) +log_cleanup_range(logger *lg, ulng id) { - if (lg->pending) { + log_lock(lg); + while (lg->pending && lg->pending->id <= id) { logged_range *p; - log_lock(lg); p = lg->pending; if (p) lg->pending = p->next; - log_unlock(lg); GDKfree(p); } + log_unlock(lg); } gdk_return @@ -2317,12 +2322,12 @@ log_activate(logger *lg) gdk_return log_flush(logger *lg, ulng ts) { - ulng lid = log_next_logfile(lg, ts); + ulng lid = log_next_logfile(lg, ts), olid = lg->saved_id; if (LOG_DISABLED(lg)) { lg->saved_id = lid; lg->saved_tid = lg->tid; if (lid) - log_cleanup_range(lg); + log_cleanup_range(lg, lg->saved_id); if (log_commit(lg) != GDK_SUCCEED) TRC_ERROR(GDK, "failed to commit"); return GDK_SUCCEED; @@ -2335,13 +2340,14 @@ log_flush(logger *lg, ulng ts) if (lg->saved_id+1 >= lgid) /* logger should first release the file */ return GDK_SUCCEED; log_return res = LOG_OK; - while(lg->saved_id < lid && res == LOG_OK) { - if (lg->saved_id >= lgid) - break; + ulng cid = olid; + if (lid > lgid) + lid = lgid; + while(cid < lid && res == LOG_OK) { if (!lg->input_log) { char *filename; char id[32]; - if (snprintf(id, sizeof(id), LLFMT, lg->saved_id+1) >= (int) sizeof(id)) { + if (snprintf(id, sizeof(id), LLFMT, cid+1) >= (int) sizeof(id)) { TRC_CRITICAL(GDK, "log_id filename is too large\n"); return GDK_FAIL; } @@ -2370,22 +2376,25 @@ log_flush(logger *lg, ulng ts) log_close_input(lg); res = LOG_OK; } + cid++; + } + if (lid > olid && res == LOG_OK) { + lg->saved_id = lid; + if (log_commit(lg) != GDK_SUCCEED) { + TRC_ERROR(GDK, "failed to commit"); + res = LOG_ERR; + lg->saved_id = olid; /* reset !! */ + } if (res != LOG_ERR) { - lg->saved_id++; - if (log_commit(lg) != GDK_SUCCEED) { - TRC_ERROR(GDK, "failed to commit"); - res = LOG_ERR; - } - - /* remove old log file */ - if (res != LOG_ERR) { - if (log_cleanup(lg, lg->saved_id) != GDK_SUCCEED) - res = LOG_ERR; + while(olid <= lid) { + /* Try to cleanup, remove old log file, continue on failure! */ + (void)log_cleanup(lg, olid); + olid++; } } + if (res == LOG_OK) + log_cleanup_range(lg, lg->saved_id); } - if (lid && res == LOG_OK) - log_cleanup_range(lg); return res == LOG_ERR ? GDK_FAIL : GDK_SUCCEED; } @@ -3163,7 +3172,7 @@ log_tstart(logger *lg, bool flushnow, ul } lg->request_rotation = false; if (flushnow) { - while (lg->saved_id+1 < lg->id) { + if (lg->saved_id+1 < lg->id) { log_unlock(lg); MT_lock_unset(&lg->rotation_lock); if (log_flush(lg, (1ULL<<63)) != GDK_SUCCEED) ___ checkin-list mailing list --
MonetDB: Sep2022 - merged with jan2022
Changeset: e8d69499a547 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/e8d69499a547 Modified Files: sql/server/rel_exp.c sql/test/BugTracker-2022/Tests/All Branch: Sep2022 Log Message: merged with jan2022 diffs (37 lines): diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -1397,7 +1397,7 @@ exp_match_exp( sql_exp *e1, sql_exp *e2) case e_atom: if (e1->l && e2->l && !atom_cmp(e1->l, e2->l)) return 1; - if (e1->f && e2->f && exp_match_list(e1->f, e2->f)) + if (e1->f && e2->f && exps_equal(e1->f, e2->f)) return 1; if (e1->r && e2->r && e1->flag == e2->flag && !subtype_cmp(&e1->tpe, &e2->tpe)) { sql_var_name *v1 = (sql_var_name*) e1->r, *v2 = (sql_var_name*) e2->r; diff --git a/sql/test/BugTracker-2022/Tests/All b/sql/test/BugTracker-2022/Tests/All --- a/sql/test/BugTracker-2022/Tests/All +++ b/sql/test/BugTracker-2022/Tests/All @@ -17,3 +17,4 @@ temp-table-create-index-drop-issue dependencies.Bug-7328 multi-column-filters-k2-unique.Bug-7303 multi-column-filters-k2-is-1.Bug-7303 +values.Bug-7336 diff --git a/sql/test/BugTracker-2022/Tests/values.Bug-7336.test b/sql/test/BugTracker-2022/Tests/values.Bug-7336.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2022/Tests/values.Bug-7336.test @@ -0,0 +1,12 @@ +query IIR nosort +select a,b,c +from (values (10, 20, 0.5), + (20, 10, 0.5) +) as (a,b,c) + +10 +20 +0.500 +20 +10 +0.500 ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Sep2022 - merged with Jan2022
Changeset: 378b8d8512fb for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/378b8d8512fb Modified Files: sql/server/rel_optimize_sel.c sql/server/rel_optimizer.c Branch: Sep2022 Log Message: merged with Jan2022 diffs (37 lines): diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c --- a/sql/server/rel_optimize_sel.c +++ b/sql/server/rel_optimize_sel.c @@ -864,7 +864,7 @@ exps_merge_select_rse( mvc *sql, list *l sql->errstr[0] = '\0'; continue; } - fnd = exp_compare2(sql->sa, le->l, mine, maxe, le->flag, 0); + fnd = exp_compare2(sql->sa, exp_copy(sql, le->l), mine, maxe, le->flag, 0); lmerged = false; } if (fnd) { diff --git a/sql/test/bugs/Tests/All b/sql/test/bugs/Tests/All --- a/sql/test/bugs/Tests/All +++ b/sql/test/bugs/Tests/All @@ -114,3 +114,4 @@ in rtrim_bug savepoint-release procedure-recompile +rse_bug diff --git a/sql/test/bugs/Tests/rse_bug.test b/sql/test/bugs/Tests/rse_bug.test new file mode 100644 --- /dev/null +++ b/sql/test/bugs/Tests/rse_bug.test @@ -0,0 +1,12 @@ +statement ok +CREATE TABLE size_test (size_field INTEGER) + +query I rowsort +SELECT COUNT(*) from size_test +WHERE ((size_field / 1024.0) > 887.443 AND (size_field / 1024.0) < 887.445) +OR((size_field / 1024.0) > 311.344 AND (size_field / 1024.0) < 311.346) + +0 + +statement ok +drop TABLE size_test; ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org