MonetDB: default - use new thetaselect for 'is distinct from'
Changeset: b18f217ca6c1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/b18f217ca6c1 Modified Files: sql/backends/monet5/sql_statement.c sql/server/rel_select.c sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.test sql/test/miscellaneous/Tests/anti_join_plan.test Branch: default Log Message: use new thetaselect for 'is distinct from' Simply use is-semantics diffs (191 lines): diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -1728,64 +1728,49 @@ stmt_uselect(backend *be, stmt *op1, stm k = getDestVar(q); } else { assert (cmptype != cmp_filter); - if (is_semantics) { - assert(cmptype == cmp_equal || cmptype == cmp_notequal); - if (cmptype == cmp_notequal) - anti = !anti; - q = newStmtArgs(mb, algebraRef, selectRef, 9); - if (q == NULL) - goto bailout; - q = pushArgument(mb, q, l); - if (sub && !op1->cand) { - q = pushArgument(mb, q, sub->nr); - } else { - assert(!sub || op1->cand == sub); - sub = NULL; - } - q = pushArgument(mb, q, r); - q = pushArgument(mb, q, r); - q = pushBit(mb, q, TRUE); - q = pushBit(mb, q, TRUE); - q = pushBit(mb, q, anti); + q = newStmt(mb, algebraRef, thetaselectRef); + if (q == NULL) + goto bailout; + q = pushArgument(mb, q, l); + if (sub && !op1->cand) { + q = pushArgument(mb, q, sub->nr); } else { - q = newStmt(mb, algebraRef, thetaselectRef); - if (q == NULL) - goto bailout; - q = pushArgument(mb, q, l); - if (sub && !op1->cand) { - q = pushArgument(mb, q, sub->nr); - } else { - assert(!sub || op1->cand == sub); - q = pushNilBat(mb, q); - sub = NULL; - } - q = pushArgument(mb, q, r); - switch (cmptype) { - case cmp_equal: + assert(!sub || op1->cand == sub); + q = pushNilBat(mb, q); + sub = NULL; + } + q = pushArgument(mb, q, r); + switch (cmptype) { + case cmp_equal: + if (is_semantics) + q = pushStr(mb, q, anti?"ne":"eq"); + else q = pushStr(mb, q, anti?"!=":"=="); - break; - case cmp_notequal: + break; + case cmp_notequal: + if (is_semantics) + q = pushStr(mb, q, anti?"eq":"ne"); + else q = pushStr(mb, q, anti?"==":"!="); - break; - case cmp_lt: - q = pushStr(mb, q, anti?">=":"<"); - break; - case cmp_lte: - q = pushStr(mb, q, anti?">":"<="); - break; - case cmp_gt: - q = pushStr(mb, q, anti?"<=":">"); - break; - case cmp_gte: - q = pushStr(mb, q, anti?"<":">="); - break; - default: - TRC_ERROR(SQL_EXECUTION, "Impossible select compare\n"); - if (q) - freeInstruction(q); - q = NULL; - goto bailout; - } + break; + case cmp_lt: + q = pushStr(mb, q, anti?">=":"<"); + break; + case cmp_lte: + q = pushStr(mb, q, anti?">":"<="); + break; + case cmp_gt: + q = pushStr(mb, q, anti?"<=":">"); + break; + case cmp_gte: + q = pushStr(mb, q, anti?"<":">="); +
MonetDB: default - merged
Changeset: ab4f55107eab for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/ab4f55107eab Modified Files: sql/backends/monet5/sql.c sql/storage/bat/bat_storage.c Branch: default Log Message: merged diffs (truncated from 1274 to 300 lines): diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -38365,8 +38365,13 @@ SQLstr_auto_vacuum; auto vacuum string column with interval(sec) sql vacuum +unsafe pattern sql.vacuum(X_0:str, X_1:str):void +SQLstr_vacuum; +vacuum a string column +sql +vacuum unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str):void -SQLstr_column_vacuum; +SQLstr_vacuum; vacuum a string column sql variance 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 @@ -188,7 +188,7 @@ gdk_return BATrtree(BAT *wkb, BAT *mbr); BAT *BATsample(BAT *b, BUN n); BAT *BATsample_with_seed(BAT *b, BUN n, uint64_t seed); gdk_return BATsave(BAT *b) __attribute__((__warn_unused_result__)); -BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, bool li, bool hi, bool anti); +BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, bool li, bool hi, bool anti, bool nil_matches); gdk_return BATsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, bool nil_matches, bool max_one, BUN estimate) __attribute__((__warn_unused_result__)); BAT *BATsetaccess(BAT *b, restrict_t mode) __attribute__((__warn_unused_result__)); void BATsetcapacity(BAT *b, BUN cnt); diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -2265,7 +2265,7 @@ gdk_export ValPtr BATsetprop_nolock(BAT #define JOIN_BAND 3 #define JOIN_NE(-3) -gdk_export BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, bool li, bool hi, bool anti); +gdk_export BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, bool li, bool hi, bool anti, bool nil_matches); gdk_export BAT *BATthetaselect(BAT *b, BAT *s, const void *val, const char *op); gdk_export BAT *BATconstant(oid hseq, int tt, const void *val, BUN cnt, role_t role); diff --git a/gdk/gdk_firstn.c b/gdk/gdk_firstn.c --- a/gdk/gdk_firstn.c +++ b/gdk/gdk_firstn.c @@ -1067,7 +1067,7 @@ BATfirstn_grouped(BAT **topn, BAT **gids BAT *bn1, *bn2; bn1 = bn; - bn2 = BATselect(bi->b, s, BUNtail(*bi, last - bi->b->hseqbase), NULL, true, false, false); + bn2 = BATselect(bi->b, s, BUNtail(*bi, last - bi->b->hseqbase), NULL, true, false, false, false); if (bn2 == NULL) { BBPunfix(bn1->batCacheid); return GDK_FAIL; @@ -1193,7 +1193,7 @@ BATfirstn_grouped_with_groups(BAT **topn BAT *bn1, *bn2, *bn3, *bn4; bn1 = bn; - bn2 = BATselect(g, NULL, , NULL, true, false, false); + bn2 = BATselect(g, NULL, , NULL, true, false, false, false); if (bn2 == NULL) { BBPunfix(bn1->batCacheid); return GDK_FAIL; @@ -1204,7 +1204,7 @@ BATfirstn_grouped_with_groups(BAT **topn BBPunfix(bn1->batCacheid); return GDK_FAIL; } - bn4 = BATselect(bi->b, bn3, BUNtail(*bi, last - hseq), NULL, true, false, false); + bn4 = BATselect(bi->b, bn3, BUNtail(*bi, last - hseq), NULL, true, false, false, false); BBPunfix(bn3->batCacheid); if (bn4 == NULL) { BBPunfix(bn1->batCacheid); diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -391,7 +391,7 @@ selectjoin(BAT **r1p, BAT **r2p, BAT **r return rc; } - bn = BATselect(r, rci->s, v, NULL, true, true, false); + bn = BATselect(r, rci->s, v, NULL, true, true, false, false); bat_iterator_end(); if (bn == NULL) { return GDK_FAIL; @@ -518,7 +518,7 @@ selectjoin(BAT **r1p, BAT **r2p, BAT **r mark = 0; } else { /* no match, search for NIL in r */ - BAT *n = BATselect(r, rci->s, ATOMnilptr(r->ttype), NULL, true, true, false); + BAT *n = BATselect(r, rci->s, ATOMnilptr(r->ttype), NULL, true, true, false, false); if (n == NULL) goto bailout; mark = BATcount(n) == 0 ? 0 : bit_nil; @@ -605,12 +605,12 @@ mergejoin_void(BAT **r1p, BAT **r2p, BAT /* at this point, the matchable values in r are [lo..hi) */ if (!nil_on_miss) { assert(r3p == NULL); - r1 = BATselect(l, lci->s, , , true, false,
MonetDB: default - direct calls to vacuum will no always renew t...
Changeset: 8d0d7838c869 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/8d0d7838c869 Modified Files: sql/backends/monet5/sql.c sql/storage/bat/bat_storage.c sql/storage/sql_storage.h Branch: default Log Message: direct calls to vacuum will no always renew the bat. diffs (116 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -4928,13 +4928,13 @@ finalize: } static str -do_str_column_vacuum(sql_trans *tr, sql_column *c) +do_str_column_vacuum(sql_trans *tr, sql_column *c, bool force) { if (ATOMvarsized(c->type.type->localtype)) { int res = 0; sqlstore *store = tr->store; - if ((res = (int) store->storage_api.vacuum_col(tr, c)) != LOG_OK) { + if ((res = (int) store->storage_api.vacuum_col(tr, c, force)) != LOG_OK) { if (res == LOG_CONFLICT) throw(SQL, "do_str_column_vacuum", SQLSTATE(25S01) "TRANSACTION CONFLICT in storage_api.vacuum_col %s.%s.%s", c->t->s->base.name, c->t->base.name, c->base.name); if (res == LOG_ERR) @@ -4946,12 +4946,12 @@ do_str_column_vacuum(sql_trans *tr, sql_ } static str -do_str_table_vacuum(sql_trans *tr, sql_table *t) +do_str_table_vacuum(sql_trans *tr, sql_table *t, bool force) { int res = 0; sqlstore *store = tr->store; - if ((res = (int) store->storage_api.vacuum_tab(tr, t)) != LOG_OK) { + if ((res = (int) store->storage_api.vacuum_tab(tr, t, force)) != LOG_OK) { if (res == LOG_CONFLICT) throw(SQL, "do_str_table_vacuum", SQLSTATE(25S01) "TRANSACTION CONFLICT in storage_api.vacuum_col %s.%s", t->s->base.name, t->base.name); if (res == LOG_ERR) @@ -5005,9 +5005,9 @@ SQLstr_vacuum(Client cntxt, MalBlkPtr mb } if (c) - return do_str_column_vacuum(tr, c); + return do_str_column_vacuum(tr, c, true); else - return do_str_table_vacuum(tr, t); + return do_str_table_vacuum(tr, t, true); } @@ -5065,12 +5065,12 @@ str_vacuum_callback(int argc, void *argv break; } - if((msg=do_str_column_vacuum(session->tr, c)) != MAL_SUCCEED) { + if((msg=do_str_column_vacuum(session->tr, c, false)) != MAL_SUCCEED) { TRC_ERROR((component_t) SQL, "[str_vacuum_callback] -- %s", msg); res = GDK_FAIL; } } else { - if((msg=do_str_table_vacuum(session->tr, t)) != MAL_SUCCEED) { + if((msg=do_str_table_vacuum(session->tr, t, false)) != MAL_SUCCEED) { TRC_ERROR((component_t) SQL, "[str_vacuum_callback] -- %s", msg); res = GDK_FAIL; } diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c --- a/sql/storage/bat/bat_storage.c +++ b/sql/storage/bat/bat_storage.c @@ -5032,7 +5032,7 @@ swap_bats(sql_trans *tr, sql_column *col } static int -vacuum_col(sql_trans *tr, sql_column *c) +vacuum_col(sql_trans *tr, sql_column *c, bool force) { if (segments_in_transaction(tr, c->t)) return LOG_CONFLICT; @@ -5044,7 +5044,7 @@ vacuum_col(sql_trans *tr, sql_column *c) return LOG_CONFLICT; /* do we have enough to clean */ - if ((d->nr_updates) < 1024) + if (!force && (d->nr_updates) < 1024) return LOG_OK; BAT *b = NULL, *bn = NULL;; @@ -5062,7 +5062,7 @@ vacuum_col(sql_trans *tr, sql_column *c) } static int -vacuum_tab(sql_trans *tr, sql_table *t) +vacuum_tab(sql_trans *tr, sql_table *t, bool force) { if (segments_in_transaction(tr, t)) return LOG_CONFLICT; @@ -5083,8 +5083,8 @@ vacuum_tab(sql_trans *tr, sql_table *t) return LOG_CONFLICT; /* do we have enough to clean */ - if ((d->nr_updates + s->segs->nr_reused) < 1024) - return LOG_OK; + if (!force && (d->nr_updates + s->segs->nr_reused) < 1024) + continue; BAT *b = NULL, *bn = NULL;; if ((b = bind_col(tr, c, 0)) == NULL) diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h --- a/sql/storage/sql_storage.h +++ b/sql/storage/sql_storage.h @@ -188,8 +188,8 @@ typedef void *(*del_dup_fptr) (sql_table typedef int (*upgrade_col_fptr) (sql_trans *tr, sql_column *c); typedef int (*upgrade_idx_fptr) (sql_trans *tr, sql_idx *i); typedef int (*upgrade_del_fptr) (sql_trans *tr, sql_table *t); -typedef int (*vacuum_col_fptr) (sql_trans *tr, sql_column *c); -typedef int (*vacuum_tab_fptr) (sql_trans
MonetDB: default - make sure we skip tests for 'cname' for the t...
Changeset: 6378c2afc433 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/6378c2afc433 Modified Files: sql/backends/monet5/sql.c Branch: default Log Message: make sure we skip tests for 'cname' for the table vacuum case. diffs (12 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -4986,7 +4986,7 @@ SQLstr_vacuum(Client cntxt, MalBlkPtr mb throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Schema name cannot be NULL"); if (strNil(tname)) throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Table name cannot be NULL"); - if (strNil(cname)) + if (cname && strNil(cname)) throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Column name cannot be NULL"); if ((s = mvc_bind_schema(m, sname)) == NULL) throw(SQL, "sql.str_vacuum", SQLSTATE(3F000) "Invalid or missing schema %s",sname); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - merged with Aug2024
Changeset: d78523603c5f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d78523603c5f Branch: default Log Message: merged with Aug2024 diffs (28 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -2176,7 +2176,7 @@ BBPinit(bool allow_hge_upgrade) } } - if (MT_create_thread(, BBPmanager, NULL, MT_THR_DETACHED, "BBPmanager") < 0) { + if (!GDKinmemory(0) && MT_create_thread(, BBPmanager, NULL, MT_THR_DETACHED, "BBPmanager") < 0) { TRC_CRITICAL(GDK, "Could not start BBPmanager thread."); return GDK_FAIL; } diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c --- a/sql/storage/objectset.c +++ b/sql/storage/objectset.c @@ -643,9 +643,9 @@ tc_commit_objectversion(sql_trans *tr, s (void)oldest; if (!tr->parent) change->obj->new = 0; - ATOMIC_INC(>cat->schema_version); - } - else { + if (!ov->os->temporary) + ATOMIC_INC(>cat->schema_version); + } else { os_rollback(ov, tr->store); } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - merged with dec2023
Changeset: c0e9aa9e45d2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c0e9aa9e45d2 Modified Files: gdk/gdk_bbp.c sql/storage/objectset.c Branch: Aug2024 Log Message: merged with dec2023 diffs (28 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -2176,7 +2176,7 @@ BBPinit(bool allow_hge_upgrade) } } - if (MT_create_thread(, BBPmanager, NULL, MT_THR_DETACHED, "BBPmanager") < 0) { + if (!GDKinmemory(0) && MT_create_thread(, BBPmanager, NULL, MT_THR_DETACHED, "BBPmanager") < 0) { TRC_CRITICAL(GDK, "Could not start BBPmanager thread."); return GDK_FAIL; } diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c --- a/sql/storage/objectset.c +++ b/sql/storage/objectset.c @@ -643,9 +643,9 @@ tc_commit_objectversion(sql_trans *tr, s (void)oldest; if (!tr->parent) change->obj->new = 0; - ATOMIC_INC(>cat->schema_version); - } - else { + if (!ov->os->temporary) + ATOMIC_INC(>cat->schema_version); + } else { os_rollback(ov, tr->store); } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Dec2023 - only change the schema number on persistent c...
Changeset: 29ee3247e96f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/29ee3247e96f Modified Files: gdk/gdk_bbp.c sql/storage/objectset.c Branch: Dec2023 Log Message: only change the schema number on persistent changes diffs (28 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -2155,7 +2155,7 @@ BBPinit(bool allow_hge_upgrade) } } - if (MT_create_thread(, BBPmanager, NULL, MT_THR_DETACHED, "BBPmanager") < 0) { + if (!GDKinmemory(0) && MT_create_thread(, BBPmanager, NULL, MT_THR_DETACHED, "BBPmanager") < 0) { TRC_CRITICAL(GDK, "Could not start BBPmanager thread."); return GDK_FAIL; } diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c --- a/sql/storage/objectset.c +++ b/sql/storage/objectset.c @@ -643,9 +643,9 @@ tc_commit_objectversion(sql_trans *tr, s (void)oldest; if (!tr->parent) change->obj->new = 0; - ATOMIC_INC(>cat->schema_version); - } - else { + if (!ov->os->temporary) + ATOMIC_INC(>cat->schema_version); + } else { os_rollback(ov, tr->store); } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: nilmask - merged with default
Changeset: f016580a6ce2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f016580a6ce2 Modified Files: clients/Tests/MAL-signatures-hge.test clients/Tests/MAL-signatures.test gdk/gdk.h gdk/gdk_batop.c sql/backends/monet5/sql.c sql/include/sql_catalog.h sql/storage/bat/bat_storage.c sql/storage/bat/bat_storage.h sql/storage/sql_storage.h sql/storage/store.c Branch: nilmask Log Message: merged with default diffs (truncated from 3864 to 300 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -49815,8 +49815,13 @@ SQLstddev_pop; return the standard deviation population of groups sql stop_vacuum +unsafe pattern sql.stop_vacuum(X_0:str, X_1:str):void +SQLstr_stop_vacuum; +stop auto vacuum +sql +stop_vacuum unsafe pattern sql.stop_vacuum(X_0:str, X_1:str, X_2:str):void -SQLstr_column_stop_vacuum; +SQLstr_stop_vacuum; stop auto vacuum sql storage @@ -49975,13 +49980,23 @@ SYSupdate_tables; Procedure triggered on update of the sys._tables table sql vacuum +unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:int):void +SQLstr_auto_vacuum; +auto vacuum string column of given table with interval(sec) +sql +vacuum unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str, X_3:int):void -SQLstr_column_auto_vacuum; +SQLstr_auto_vacuum; auto vacuum string column with interval(sec) sql vacuum +unsafe pattern sql.vacuum(X_0:str, X_1:str):void +SQLstr_vacuum; +vacuum a string column +sql +vacuum unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str):void -SQLstr_column_vacuum; +SQLstr_vacuum; vacuum a string column sql variance diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -38225,8 +38225,13 @@ SQLstddev_pop; return the standard deviation population of groups sql stop_vacuum +unsafe pattern sql.stop_vacuum(X_0:str, X_1:str):void +SQLstr_stop_vacuum; +stop auto vacuum +sql +stop_vacuum unsafe pattern sql.stop_vacuum(X_0:str, X_1:str, X_2:str):void -SQLstr_column_stop_vacuum; +SQLstr_stop_vacuum; stop auto vacuum sql storage @@ -38360,8 +38365,13 @@ SYSupdate_tables; Procedure triggered on update of the sys._tables table sql vacuum +unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:int):void +SQLstr_auto_vacuum; +auto vacuum string column of given table with interval(sec) +sql +vacuum unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str, X_3:int):void -SQLstr_column_auto_vacuum; +SQLstr_auto_vacuum; auto vacuum string column with interval(sec) sql vacuum diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3879,6 +3879,8 @@ main(int argc, char **argv) } mapi_destroy(mid); + if (toConsole != stdout_stream && toConsole != stderr_stream) + close_stream(toConsole); mnstr_destroy(stdout_stream); mnstr_destroy(stderr_stream); if (priv.buf != NULL) diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c --- a/clients/mapiclient/mhelp.c +++ b/clients/mapiclient/mhelp.c @@ -88,7 +88,7 @@ SQLhelp sqlhelp1[] = { "ALTER USER ident\n" "[WITH [ENCRYPTED | UNENCRYPTED] PASSWORD string]\n" "[SET SCHEMA ident] [SCHEMA PATH string] [DEFAULT ROLE ident]\n" -"[MAX_MEMORY posbytes | NO MAX_MEMORY] [MAX_WORKERS poscount | NO MAX_WORKERS]", +"[MAX_MEMORY posbytes | MAX_MEMORY sizestr | NO MAX_MEMORY] [MAX_WORKERS poscount | NO MAX_WORKERS]", "ident", "See also https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/privileges/"}, {"ANALYZE", @@ -252,7 +252,7 @@ SQLhelp sqlhelp1[] = { {"CREATE USER", "Create a new database user", "CREATE USER ident WITH [ENCRYPTED | UNENCRYPTED] PASSWORD string NAME string [SCHEMA ident] [SCHEMA PATH string]\n" -"[MAX_MEMORY posbytes | NO MAX_MEMORY] [MAX_WORKERS poscount | NO MAX_WORKERS]\n" +"[MAX_MEMORY posbytes | MAX_MEMORY sizestr | NO MAX_MEMORY] [MAX_WORKERS poscount | NO MAX_WORKERS]\n" "[OPTIMIZER string] [DEFAULT ROLE ident]", "ident", "See also https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/privileges/"}, diff --git a/clients/mapilib/Tests/tlssecurity.py b/clients/mapilib/Tests/tlssecurity.py --- a/clients/mapilib/Tests/tlssecurity.py +++ b/clients/mapilib/Tests/tlssecurity.py @@ -14,10 +14,8 @@ import os import re import subprocess import sys -import threading -sys.path.append(os.environ.get('TSTSRCDIR','.')) -import tlstester +from MonetDBtesting.tlstester import TLSTesterClient level = logging.WARNING # if sys.platform == 'win32': @@ -27,45 +25,20 @@ if '-v' in
MonetDB: nilmask - small steps towards unsigned types
Changeset: 8f85d1dd4e0f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/8f85d1dd4e0f Modified Files: gdk/gdk.h gdk/gdk_atoms.c sql/common/sql_types.c Branch: nilmask Log Message: small steps towards unsigned types diffs (152 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -431,15 +431,20 @@ enum { TYPE_msk, /* bit mask */ TYPE_bit, /* TRUE, FALSE, or nil */ TYPE_bte, + TYPE_ubte, TYPE_sht, + TYPE_usht, TYPE_int, + TYPE_uint, TYPE_oid, TYPE_ptr, /* C pointer! */ TYPE_flt, TYPE_dbl, TYPE_lng, + TYPE_ulng, #ifdef HAVE_HGE TYPE_hge, + TYPE_uhge, #endif TYPE_date, TYPE_daytime, @@ -718,6 +723,7 @@ typedef struct { bool key:1, /* no duplicate values present */ nonil:1,/* there are no nils in the column */ nil:1, /* there is a nil in the column */ + nilmask:1, /* bat has nils seperated */ sorted:1, /* column is sorted in ascending order */ revsorted:1,/* column is sorted in descending order */ ascii:1;/* string column is fully ASCII (7 bit) */ diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c --- a/gdk/gdk_atoms.c +++ b/gdk/gdk_atoms.c @@ -1691,6 +1691,19 @@ atomDesc BATatoms[MAXATOMS] = { .atomCmp = (int (*)(const void *, const void *)) bteCmp, .atomHash = (BUN (*)(const void *)) bteHash, }, + [TYPE_ubte] = { + .name = "ubte", + .storage = TYPE_bte, + .linear = true, + .size = sizeof(bte), + .atomNull = NULL, + .atomFromStr = (ssize_t (*)(const char *, size_t *, void **, bool)) bteFromStr, + .atomToStr = (ssize_t (*)(char **, size_t *, const void *, bool)) bteToStr, + .atomRead = (void *(*)(void *, size_t *, stream *, size_t)) bteRead, + .atomWrite = (gdk_return (*)(const void *, stream *, size_t)) bteWrite, + .atomCmp = (int (*)(const void *, const void *)) bteCmp, + .atomHash = (BUN (*)(const void *)) bteHash, + }, [TYPE_sht] = { .name = "sht", .storage = TYPE_sht, @@ -1704,6 +1717,19 @@ atomDesc BATatoms[MAXATOMS] = { .atomCmp = (int (*)(const void *, const void *)) shtCmp, .atomHash = (BUN (*)(const void *)) shtHash, }, + [TYPE_usht] = { + .name = "usht", + .storage = TYPE_sht, + .linear = true, + .size = sizeof(sht), + .atomNull = NULL, + .atomFromStr = (ssize_t (*)(const char *, size_t *, void **, bool)) shtFromStr, + .atomToStr = (ssize_t (*)(char **, size_t *, const void *, bool)) shtToStr, + .atomRead = (void *(*)(void *, size_t *, stream *, size_t)) shtRead, + .atomWrite = (gdk_return (*)(const void *, stream *, size_t)) shtWrite, + .atomCmp = (int (*)(const void *, const void *)) shtCmp, + .atomHash = (BUN (*)(const void *)) shtHash, + }, [TYPE_int] = { .name = "int", .storage = TYPE_int, @@ -1717,6 +1743,19 @@ atomDesc BATatoms[MAXATOMS] = { .atomCmp = (int (*)(const void *, const void *)) intCmp, .atomHash = (BUN (*)(const void *)) intHash, }, + [TYPE_uint] = { + .name = "uint", + .storage = TYPE_int, + .linear = true, + .size = sizeof(int), + .atomNull = NULL, + .atomFromStr = (ssize_t (*)(const char *, size_t *, void **, bool)) intFromStr, + .atomToStr = (ssize_t (*)(char **, size_t *, const void *, bool)) intToStr, + .atomRead = (void *(*)(void *, size_t *, stream *, size_t)) intRead, + .atomWrite = (gdk_return (*)(const void *, stream *, size_t)) intWrite, + .atomCmp = (int (*)(const void *, const void *)) intCmp, + .atomHash = (BUN (*)(const void *)) intHash, + }, [TYPE_oid] = { .name = "oid", .linear = true, @@ -1796,6 +1835,19 @@ atomDesc BATatoms[MAXATOMS] = { .atomCmp = (int (*)(const void *, const void *)) lngCmp, .atomHash = (BUN (*)(const void *)) lngHash, }, + [TYPE_ulng] = { + .name = "ulng", + .storage = TYPE_lng, + .linear = true, + .size = sizeof(lng), + .atomNull = NULL, + .atomFromStr = (ssize_t (*)(const char *, size_t *, void **, bool)) lngFromStr, + .atomToStr = (ssize_t (*)(char **, size_t *, const void *,
MonetDB: Aug2024 - fixed issue #7539, ie properly test on result...
Changeset: 35f46bda076a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/35f46bda076a Added Files: sql/test/BugTracker-2024/Tests/7539-is-distinct-from.test Modified Files: sql/server/rel_select.c sql/test/BugTracker-2024/Tests/All Branch: Aug2024 Log Message: fixed issue #7539, ie properly test on results of left and right relations. diffs (41 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 @@ -2863,6 +2863,8 @@ rel_logical_exp(sql_query *query, sql_re if (ls_is_non_null_atom || rs_is_non_null_atom) { sql_rel *r = rel_dup(rel); sql_rel* l = rel_compare(query, rel, sc, lo, ro, compare_op, f | sql_or, ek, quantifier, 0); + if (!l) + return NULL; sql_subtype *t; if (!(t = exp_subtype(rs_is_non_null_atom?ls:rs))) return sql_error(sql, 01, SQLSTATE(42000) "Cannot have a parameter for IS NULL operator"); @@ -2871,7 +2873,8 @@ rel_logical_exp(sql_query *query, sql_re set_semantics(e); r = rel_select_push_compare_exp_down(sql, r, e, e->l, e->r, NULL, f | sql_or); - + if (!r) + return NULL; return rel_or(sql, rel, l, r, NULL, NULL, NULL); } } diff --git a/sql/test/BugTracker-2024/Tests/7539-is-distinct-from.test b/sql/test/BugTracker-2024/Tests/7539-is-distinct-from.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7539-is-distinct-from.test @@ -0,0 +1,6 @@ + +statement ok +CREATE TABLE t0 (c0 INT) + +statement error +SELECT * FROM t0 WHERE (SIN(1) IS DISTINCT FROM NOT 1) diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -65,3 +65,4 @@ 7534-is-distinct-from 7535-create-view-groupby-func 7536-mclient-forgets-to-flush 7538-reduce-cast +7539-is-distinct-from ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - fixed issue #7538, ie only reduce cast (ie re...
Changeset: 5fea409a9091 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/5fea409a9091 Added Files: sql/test/BugTracker-2024/Tests/7538-reduce-cast.test Modified Files: sql/server/rel_optimize_exps.c sql/server/rel_optimize_proj.c sql/test/BugTracker-2024/Tests/All Branch: Aug2024 Log Message: fixed issue #7538, ie only reduce cast (ie reduce scale handling) if the type has a scale diffs (47 lines): diff --git a/sql/server/rel_optimize_exps.c b/sql/server/rel_optimize_exps.c --- a/sql/server/rel_optimize_exps.c +++ b/sql/server/rel_optimize_exps.c @@ -422,6 +422,8 @@ reduce_scale(mvc *sql, atom *a) na = atom_int(sql->sa, >tpe, nval); if (na->tpe.scale) na->tpe.scale -= i; + else + return NULL; } return na; } diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -950,7 +950,7 @@ rel_project_reduce_casts(visitor *v, glo atom *a = ha ? ha : ta; atom *na = reduce_scale(v->sql, a); - if (na != a) { + if (na && na != a) { int rs = a->tpe.scale - na->tpe.scale; res->scale -= rs; if (ha) { diff --git a/sql/test/BugTracker-2024/Tests/7538-reduce-cast.test b/sql/test/BugTracker-2024/Tests/7538-reduce-cast.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7538-reduce-cast.test @@ -0,0 +1,10 @@ +query R +select 37.000 /(37.0+65)*100 c1 +- +36.200 + + +query R +select 37.000 /(37.0+65)*100 c1 limit 2 +- +36.200 diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -64,3 +64,4 @@ 7528-jarowinkler-null 7534-is-distinct-from 7535-create-view-groupby-func 7536-mclient-forgets-to-flush +7538-reduce-cast ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - fall back to type STRING on only NULL's
Changeset: 6b8fe0152645 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/6b8fe0152645 Modified Files: sql/backends/monet5/vaults/csv/csv.c Branch: Aug2024 Log Message: fall back to type STRING on only NULL's diffs (16 lines): diff --git a/sql/backends/monet5/vaults/csv/csv.c b/sql/backends/monet5/vaults/csv/csv.c --- a/sql/backends/monet5/vaults/csv/csv.c +++ b/sql/backends/monet5/vaults/csv/csv.c @@ -344,6 +344,12 @@ detect_types(const char *buf, char delim types = ntypes; nr_lines++; } + if (types) { /* NULL -> STRING */ + for(int i = 0; i
MonetDB: Aug2024 - merged with dec2023
Changeset: 50a123e080b0 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/50a123e080b0 Modified Files: gdk/gdk.h gdk/gdk_utils.c monetdb5/modules/mal/txtsim.c sql/storage/store.c Branch: Aug2024 Log Message: merged with dec2023 diffs (120 lines): diff --git a/clients/odbc/driver/ODBCError.c b/clients/odbc/driver/ODBCError.c --- a/clients/odbc/driver/ODBCError.c +++ b/clients/odbc/driver/ODBCError.c @@ -373,27 +373,6 @@ appendODBCError(ODBCError **head, ODBCEr } -#if 0 /* unused */ -/* - * Prepends a valid ODBCError object 'err' to the front of the list - * of a valid ODBCError object 'head' and return the new head. - * - * Precondition: both head and err must be valid (non NULL) - * Returns: the new head (which is the same as the prepended 'err'). - */ -void -prependODBCError(ODBCError **head, ODBCError *err) -{ - assert(head); - assert(err); - assert(err->next == NULL); - - err->next = *head; - *head = err; -} -#endif - - /* * Frees the ODBCError object including its linked ODBCError objects. * diff --git a/clients/odbc/driver/ODBCError.h b/clients/odbc/driver/ODBCError.h --- a/clients/odbc/driver/ODBCError.h +++ b/clients/odbc/driver/ODBCError.h @@ -110,18 +110,6 @@ int getErrorRecCount(ODBCError *error); void appendODBCError(ODBCError **head, ODBCError *err); -#if 0 /* unused */ -/* - * Prepends a valid ODBCError object 'this' to the front of the list - * of a valid ODBCError object 'head' and return the new head. - * - * Precondition: both head and this must be valid (non NULL) - * Returns: the new head (which is the same as the prepended 'this'). - */ -void prependODBCError(ODBCError **head, ODBCError *err); -#endif - - /* * Frees the ODBCError object including its linked ODBCError objects. * diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1087,7 +1087,7 @@ bat_iterator_nolock(BAT *b) { /* does not get matched by bat_iterator_end */ if (b) { - bool isview = VIEWtparent(b); + const bool isview = VIEWtparent(b) != 0; return (BATiter) { .b = b, .h = b->theap, diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -378,19 +378,7 @@ GDKlog(FILE *lockFile, const char *forma /* * @+ Interrupt handling - * The current version simply catches signals and prints a warning. - * It should be extended to cope with the specifics of the interrupt - * received. */ -#if 0 /* these are unused */ -static void -BATSIGignore(int nr) -{ - (void) nr; - GDKsyserror("! ERROR signal %d caught by thread %zu\n", nr, (size_t) MT_getpid()); -} -#endif - #ifdef WIN32 static void BATSIGabort(int nr) diff --git a/monetdb5/modules/mal/txtsim.c b/monetdb5/modules/mal/txtsim.c --- a/monetdb5/modules/mal/txtsim.c +++ b/monetdb5/modules/mal/txtsim.c @@ -247,7 +247,7 @@ levenshtein(int *res, const char *x, con throw(MAL, "txtsim.levenshtein", "Illegal unicode code point"); } -/* Levenshtein OP but with column externaly allocated */ +/* Levenshtein OP but with column externally allocated */ static inline int levenshtein2(const char *x, const char *y, const size_t xlen, const size_t ylen, unsigned int *column, const int insdel_cost, diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -6330,6 +6330,7 @@ sql_trans_alter_null(sql_trans *tr, sql_ if ((res = new_column(tr, col, ))) return res; + col = dup; dup->null = isnull; /* disallow concurrent updates on the column if not null is set */ @@ -6340,7 +6341,7 @@ sql_trans_alter_null(sql_trans *tr, sql_ return res; if ((res = store_reset_sql_functions(tr, col->t->base.id))) /* reset sql functions depending on the table */ return res; - if (isNew(col) || isnull) + if (isNew(col) || isnull) /* new ie can still change, or persistent only widen semantics */ store->storage_api.col_not_null(tr, col, !isnull); } return res; ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Dec2023 - small cleanup/comment added
Changeset: 9b75c288d86c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9b75c288d86c Modified Files: sql/storage/store.c Branch: Dec2023 Log Message: small cleanup/comment added diffs (20 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -6286,6 +6286,7 @@ sql_trans_alter_null(sql_trans *tr, sql_ if ((res = new_column(tr, col, ))) return res; + col = dup; dup->null = isnull; /* disallow concurrent updates on the column if not null is set */ @@ -6296,7 +6297,7 @@ sql_trans_alter_null(sql_trans *tr, sql_ return res; if ((res = store_reset_sql_functions(tr, col->t->base.id))) /* reset sql functions depending on the table */ return res; - if (isNew(col) || isnull) + if (isNew(col) || isnull) /* new ie can still change, or persistent only widen semantics */ store->storage_api.col_not_null(tr, col, !isnull); } return res; ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - add direct interface for table vacuum
Changeset: 2af293dc3d14 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/2af293dc3d14 Modified Files: clients/Tests/MAL-signatures-hge.test sql/backends/monet5/sql.c sql/scripts/26_sysmon.sql Branch: default Log Message: add direct interface for table vacuum diffs (108 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -49980,8 +49980,13 @@ SQLstr_auto_vacuum; auto vacuum string column with interval(sec) sql vacuum +unsafe pattern sql.vacuum(X_0:str, X_1:str):void +SQLstr_vacuum; +vacuum a string column +sql +vacuum unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str):void -SQLstr_column_vacuum; +SQLstr_vacuum; vacuum a string column sql variance diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -4962,13 +4962,15 @@ do_str_table_vacuum(sql_trans *tr, sql_t } static str -SQLstr_column_vacuum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +SQLstr_vacuum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { mvc *m = NULL; str msg = NULL; char *sname = *getArgReference_str(stk, pci, 1); char *tname = *getArgReference_str(stk, pci, 2); - char *cname = *getArgReference_str(stk, pci, 3); + char *cname = NULL; + if (pci->argc == 4) + cname = *getArgReference_str(stk, pci, 3); if ((msg = getSQLContext(cntxt, mb, , NULL)) != NULL) return msg; @@ -4981,26 +4983,31 @@ SQLstr_column_vacuum(Client cntxt, MalBl sql_column *c = NULL; if (strNil(sname)) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Schema name cannot be NULL"); + throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Schema name cannot be NULL"); if (strNil(tname)) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Table name cannot be NULL"); + throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Table name cannot be NULL"); if (strNil(cname)) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Column name cannot be NULL"); + throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Column name cannot be NULL"); if ((s = mvc_bind_schema(m, sname)) == NULL) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(3F000) "Invalid or missing schema %s",sname); + throw(SQL, "sql.str_vacuum", SQLSTATE(3F000) "Invalid or missing schema %s",sname); if ((t = mvc_bind_table(m, s, tname)) == NULL) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(42S02) "Invalid or missing table %s.%s",sname,tname); + throw(SQL, "sql.str_vacuum", SQLSTATE(42S02) "Invalid or missing table %s.%s",sname,tname); if (!isTable(t)) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "%s '%s' is not persistent", + throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "%s '%s' is not persistent", TABLE_TYPE_DESCRIPTION(t->type, t->properties), t->base.name); if (isTempTable(t)) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Cannot vacuum column from temporary table"); - if ((c = mvc_bind_column(m, t, cname)) == NULL) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(42S22) "Column not found in %s.%s.%s",sname,tname,cname); - if (c->storage_type) - throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Cannot vacuum compressed column"); - - return do_str_column_vacuum(tr, c); + throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Cannot vacuum column from temporary table"); + if (cname) { + if ((c = mvc_bind_column(m, t, cname)) == NULL) + throw(SQL, "sql.str_vacuum", SQLSTATE(42S22) "Column not found in %s.%s.%s",sname,tname,cname); + if (c->storage_type) + throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Cannot vacuum compressed column"); + } + + if (c) + return do_str_column_vacuum(tr, c); + else + return do_str_table_vacuum(tr, t); } @@ -6223,9 +6230,10 @@ static mel_func sql_init_funcs[] = { pattern("sql", "corr", SQLcorr, false, "return the correlation value of groups", args(1,8, arg("",dbl),arg("b",hge),arg("c",hge),arg("p",bit),arg("o",bit),arg("t",int),arg("s",oid),arg("e",oid))), pattern("batsql", "corr", SQLcorr, false, "return the correlation value of groups", args(1,8, batarg("",dbl),optbatarg("b",hge),optbatarg("c",hge),optbatarg("p",bit),optbatarg("o",bit),arg("t",int),optbatarg("s",oid),optbatarg("e",oid))), #endif - pattern("sql", "vacuum", SQLstr_column_vacuum, true, "vacuum a string column", args(0,3, arg("sname",str),arg("tname",str),arg("cname",str))), +
MonetDB: default - add missing sql interfaces
Changeset: d74cd175f7f1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d74cd175f7f1 Modified Files: sql/scripts/26_sysmon.sql Branch: default Log Message: add missing sql interfaces diffs (12 lines): diff --git a/sql/scripts/26_sysmon.sql b/sql/scripts/26_sysmon.sql --- a/sql/scripts/26_sysmon.sql +++ b/sql/scripts/26_sysmon.sql @@ -79,3 +79,8 @@ create procedure sys.vacuum(sname string external name sql.vacuum; create procedure sys.stop_vacuum(sname string, tname string, cname string) external name sql.stop_vacuum; + +create procedure sys.vacuum(sname string, tname string, interval int) +external name sql.vacuum; +create procedure sys.stop_vacuum(sname string, tname string) +external name sql.stop_vacuum; ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - introduced vacuum_tab/vacuum_col for variable...
Changeset: 960fa2655454 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/960fa2655454 Modified Files: clients/Tests/MAL-signatures-hge.test clients/Tests/MAL-signatures.test sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/server/sql_parser.y sql/storage/bat/bat_storage.c sql/storage/bat/bat_storage.h sql/storage/sql_storage.h sql/storage/store.c sql/test/sysmon/vacuum/Tests/test_vacuum.SQL.py Branch: default Log Message: introduced vacuum_tab/vacuum_col for variable size data types diffs (truncated from 803 to 300 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -49805,8 +49805,13 @@ SQLstddev_pop; return the standard deviation population of groups sql stop_vacuum +unsafe pattern sql.stop_vacuum(X_0:str, X_1:str):void +SQLstr_stop_vacuum; +stop auto vacuum +sql +stop_vacuum unsafe pattern sql.stop_vacuum(X_0:str, X_1:str, X_2:str):void -SQLstr_column_stop_vacuum; +SQLstr_stop_vacuum; stop auto vacuum sql storage @@ -49965,8 +49970,13 @@ SYSupdate_tables; Procedure triggered on update of the sys._tables table sql vacuum +unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:int):void +SQLstr_auto_vacuum; +auto vacuum string column of given table with interval(sec) +sql +vacuum unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str, X_3:int):void -SQLstr_column_auto_vacuum; +SQLstr_auto_vacuum; auto vacuum string column with interval(sec) sql vacuum diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -38215,8 +38215,13 @@ SQLstddev_pop; return the standard deviation population of groups sql stop_vacuum +unsafe pattern sql.stop_vacuum(X_0:str, X_1:str):void +SQLstr_stop_vacuum; +stop auto vacuum +sql +stop_vacuum unsafe pattern sql.stop_vacuum(X_0:str, X_1:str, X_2:str):void -SQLstr_column_stop_vacuum; +SQLstr_stop_vacuum; stop auto vacuum sql storage @@ -38350,8 +38355,13 @@ SYSupdate_tables; Procedure triggered on update of the sys._tables table sql vacuum +unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:int):void +SQLstr_auto_vacuum; +auto vacuum string column of given table with interval(sec) +sql +vacuum unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str, X_3:int):void -SQLstr_column_auto_vacuum; +SQLstr_auto_vacuum; auto vacuum string column with interval(sec) sql vacuum diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -4928,40 +4928,40 @@ finalize: } static str -do_str_column_vacuum(sql_trans *tr, sql_column *c, char *sname, char *tname, char *cname) +do_str_column_vacuum(sql_trans *tr, sql_column *c) { - int res; - int access = 0; - BAT* b = NULL; - BAT* bn = NULL; - sqlstore *store = tr->store; - - if ((b = store->storage_api.bind_col(tr, c, access)) == NULL) - throw(SQL, "do_str_column_vacuum", SQLSTATE(42S22) "storage_api.bind_col failed for %s.%s.%s", sname, tname, cname); - // vacuum varsized bats if (ATOMvarsized(c->type.type->localtype)) { - // TODO check for num of updates on the BAT against some threshold - // and decide whether to proceed - if ((bn = COLcopy(b, b->ttype, true, PERSISTENT)) == NULL) { - BBPunfix(b->batCacheid); - throw(SQL, "do_str_column_vacuum", SQLSTATE(42S22) "COLcopy failed for %s.%s.%s", sname, tname, cname); + int res = 0; + sqlstore *store = tr->store; + + if ((res = (int) store->storage_api.vacuum_col(tr, c)) != LOG_OK) { + if (res == LOG_CONFLICT) + throw(SQL, "do_str_column_vacuum", SQLSTATE(25S01) "TRANSACTION CONFLICT in storage_api.vacuum_col %s.%s.%s", c->t->s->base.name, c->t->base.name, c->base.name); + if (res == LOG_ERR) + throw(SQL, "do_str_column_vacuum", SQLSTATE(HY000) "LOG ERROR in storage_api.vacuum_col %s.%s.%s", c->t->s->base.name, c->t->base.name, c->base.name); + throw(SQL, "do_str_column_vacuum", SQLSTATE(HY000) "ERROR in storage_api.vacuum_col %s.%s.%s", c->t->s->base.name, c->t->base.name, c->base.name); } - if ((res = (int) store->storage_api.swap_bats(tr, c, bn)) != LOG_OK) { - BBPreclaim(bn); - BBPunfix(b->batCacheid); - if (res == LOG_CONFLICT) - throw(SQL, "do_str_column_vacuum", SQLSTATE(25S01) "TRANSACTION CONFLICT in storage_api.swap_bats %s.%s.%s", sname, tname, cname); - if (res == LOG_ERR) -
MonetDB: default - merged with aug2024
Changeset: 24f8685ce20c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/24f8685ce20c Modified Files: sql/server/rel_select.c Branch: default Log Message: merged with aug2024 diffs (71 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 @@ -2842,8 +2842,10 @@ rel_logical_exp(sql_query *query, sql_re assert(quantifier == 0 || quantifier == 1 || quantifier == 2 || quantifier == 3 || quantifier == 4); if (quantifier >= 3) { - if (quantifier == 4) + if (quantifier == 4) { is_distinct_from = true; + compare_op = "<>"; + } quantifier = 0; is_semantics = 1; } @@ -2859,6 +2861,7 @@ rel_logical_exp(sql_query *query, sql_re bool rs_is_non_null_atom = exp_is_atom(rs) && exp_is_not_null(rs); if (ls_is_non_null_atom || rs_is_non_null_atom) { + sql_rel *r = rel_dup(rel); sql_rel* l = rel_compare(query, rel, sc, lo, ro, compare_op, f | sql_or, ek, quantifier, 0); sql_subtype *t; if (!(t = exp_subtype(rs_is_non_null_atom?ls:rs))) @@ -2866,9 +2869,10 @@ rel_logical_exp(sql_query *query, sql_re sql_exp* e = exp_compare(sql->sa, rs_is_non_null_atom?ls:rs, exp_atom(sql->sa, atom_general(sql->sa, t, NULL, 0)), cmp_equal); set_has_no_nil(e); set_semantics(e); - sql_rel* r = rel_select_push_compare_exp_down(sql, rel, e, e->l, e->r, NULL, f | sql_or); - - return rel_or(sql, rel_dup(rel), l, r, NULL, NULL, NULL); + + r = rel_select_push_compare_exp_down(sql, r, e, e->l, e->r, NULL, f | sql_or); + + return rel_or(sql, rel, l, r, NULL, NULL, NULL); } } diff --git a/sql/test/BugTracker-2024/Tests/7534-is-distinct-from.test b/sql/test/BugTracker-2024/Tests/7534-is-distinct-from.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7534-is-distinct-from.test @@ -0,0 +1,20 @@ +statement ok +CREATE TABLE t0(c0 VARCHAR) + +statement ok +INSERT INTO t0 (c0) VALUES ('a'); + +query T +SELECT t0.c0 FROM t0 + +a + +query T +SELECT (1 AND ('' IS DISTINCT FROM t0.c0)) FROM t0 + +True + +query T +SELECT t0.c0 FROM t0 WHERE (1 AND ('' IS DISTINCT FROM t0.c0)) + +a diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -61,4 +61,5 @@ 7513-uri-authority-parse-issue 7514-wrong-window-function 7524-right-outer-join 7528-jarowinkler-null +7534-is-distinct-from 7535-create-view-groupby-func ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - fixed bug in is_distinct. Later we need to fi...
Changeset: ca36bc8ab40e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/ca36bc8ab40e Added Files: sql/test/BugTracker-2024/Tests/7534-is-distinct-from.test Modified Files: sql/server/rel_select.c sql/test/BugTracker-2024/Tests/All Branch: Aug2024 Log Message: fixed bug in is_distinct. Later we need to fix the implementation on the mal layer. diffs (71 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 @@ -2842,8 +2842,10 @@ rel_logical_exp(sql_query *query, sql_re assert(quantifier == 0 || quantifier == 1 || quantifier == 2 || quantifier == 3 || quantifier == 4); if (quantifier >= 3) { - if (quantifier == 4) + if (quantifier == 4) { is_distinct_from = true; + compare_op = "<>"; + } quantifier = 0; is_semantics = 1; } @@ -2859,6 +2861,7 @@ rel_logical_exp(sql_query *query, sql_re bool rs_is_non_null_atom = exp_is_atom(rs) && exp_is_not_null(rs); if (ls_is_non_null_atom || rs_is_non_null_atom) { + sql_rel *r = rel_dup(rel); sql_rel* l = rel_compare(query, rel, sc, lo, ro, compare_op, f | sql_or, ek, quantifier, 0); sql_subtype *t; if (!(t = exp_subtype(rs_is_non_null_atom?ls:rs))) @@ -2866,9 +2869,10 @@ rel_logical_exp(sql_query *query, sql_re sql_exp* e = exp_compare(sql->sa, rs_is_non_null_atom?ls:rs, exp_atom(sql->sa, atom_general(sql->sa, t, NULL, 0)), cmp_equal); set_has_no_nil(e); set_semantics(e); - sql_rel* r = rel_select_push_compare_exp_down(sql, rel, e, e->l, e->r, NULL, f | sql_or); - - return rel_or(sql, rel_dup(rel), l, r, NULL, NULL, NULL); + + r = rel_select_push_compare_exp_down(sql, r, e, e->l, e->r, NULL, f | sql_or); + + return rel_or(sql, rel, l, r, NULL, NULL, NULL); } } diff --git a/sql/test/BugTracker-2024/Tests/7534-is-distinct-from.test b/sql/test/BugTracker-2024/Tests/7534-is-distinct-from.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7534-is-distinct-from.test @@ -0,0 +1,20 @@ +statement ok +CREATE TABLE t0(c0 VARCHAR) + +statement ok +INSERT INTO t0 (c0) VALUES ('a'); + +query T +SELECT t0.c0 FROM t0 + +a + +query T +SELECT (1 AND ('' IS DISTINCT FROM t0.c0)) FROM t0 + +True + +query T +SELECT t0.c0 FROM t0 WHERE (1 AND ('' IS DISTINCT FROM t0.c0)) + +a diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -61,4 +61,5 @@ 7513-uri-authority-parse-issue 7514-wrong-window-function 7524-right-outer-join 7528-jarowinkler-null +7534-is-distinct-from 7535-create-view-groupby-func ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - also set the estimate of the unique values in...
Changeset: 3dbe2dc6934f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3dbe2dc6934f Modified Files: monetdb5/modules/mal/mat.c Branch: default Log Message: also set the estimate of the unique values in mat.pack diffs (19 lines): diff --git a/monetdb5/modules/mal/mat.c b/monetdb5/modules/mal/mat.c --- a/monetdb5/modules/mal/mat.c +++ b/monetdb5/modules/mal/mat.c @@ -172,6 +172,7 @@ MATpackIncrement(Client cntxt, MalBlkPtr BBPunfix(b->batCacheid); throw(MAL, "mat.pack", GDK_EXCEPTION); } + bn->tunique_est = b->tunique_est; bn->unused = (pieces - 1); /* misuse "unused" field */ BBPunfix(b->batCacheid); if (bn->tnil && bn->tnonil) { @@ -208,6 +209,7 @@ MATpackIncrement(Client cntxt, MalBlkPtr throw(MAL, "mat.pack", GDK_EXCEPTION); } BBPunfix(bb->batCacheid); + b->tunique_est += bb->tunique_est; b->unused--; if (b->unused == 0 && (b = BATsetaccess(b, BAT_READ)) == NULL) throw(MAL, "mat.pack", GDK_EXCEPTION); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - one more cast
Changeset: fa592e7aa971 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/fa592e7aa971 Modified Files: sql/backends/monet5/sql.c Branch: default Log Message: one more cast diffs (12 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -2430,7 +2430,7 @@ SQLtid(Client cntxt, MalBlkPtr mb, MalSt nr_parts = *getArgReference_int(stk, pci, 5); } BAT *b = store->storage_api.bind_cands(tr, t, nr_parts, part_nr); - b->tunique_est = BATcount(b); + b->tunique_est = (double)BATcount(b); if (b) { *res = b->batCacheid; BBPkeepref(b); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - some compilation fixes for windows
Changeset: f6ffa4af73a7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f6ffa4af73a7 Modified Files: gdk/gdk_batop.c gdk/gdk_group.c Branch: default Log Message: some compilation fixes for windows diffs (37 lines): diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -127,7 +127,7 @@ insert_string_bat(BAT *b, BATiter *ni, s * double-eliminated area */ BUN ecnt = ci->ncand; if (ni->b->tunique_est > 0 && ecnt > ni->b->tunique_est) - ecnt = ni->b->tunique_est; + ecnt = (BUN)ni->b->tunique_est; if (r < ecnt) len = GDK_ELIMLIMIT + (ecnt - r) * len; else diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c --- a/gdk/gdk_group.c +++ b/gdk/gdk_group.c @@ -1282,7 +1282,7 @@ BATgroup_internal(BAT **groups, BAT **ex en->trevsorted = ngrp == 1; en->tnonil = true; en->tnil = false; - en->tunique_est = ngrp; + en->tunique_est = (double)ngrp; *extents = virtualize(en); } if (histo) { @@ -1305,10 +1305,10 @@ BATgroup_internal(BAT **groups, BAT **ex gn->tnonil = true; gn->tnil = false; gn->tmaxpos = maxgrppos; - gn->tunique_est = ngrp; + gn->tunique_est = (double)ngrp; *groups = gn; if (!g && !e && !s) { - b->tunique_est = ngrp; + b->tunique_est = (double)ngrp; } TRC_DEBUG(ALGO, "b=" ALGOBATFMT ",s=" ALGOOPTBATFMT ",g=" ALGOOPTBATFMT ",e=" ALGOOPTBATFMT ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - propagate the tunique_est a bit more and use ...
Changeset: 155b1ef95b0e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/155b1ef95b0e Modified Files: gdk/gdk_batop.c gdk/gdk_group.c gdk/gdk_join.c gdk/gdk_project.c sql/backends/monet5/sql.c Branch: default Log Message: propagate the tunique_est a bit more and use this in append (strings). When we know only a limited number of (unique) strings is expected, don't reuse the (largish) vheap. In group by set the tunique_est based on the group result. diffs (118 lines): diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -125,10 +125,13 @@ insert_string_bat(BAT *b, BATiter *ni, s r = (GDK_ELIMLIMIT - GDK_STRHASHSIZE) / (len + 12); /* r is estimate of number of strings in * double-eliminated area */ - if (r < ci->ncand) - len = GDK_ELIMLIMIT + (ci->ncand - r) * len; + BUN ecnt = ci->ncand; + if (ni->b->tunique_est > 0 && ecnt > ni->b->tunique_est) + ecnt = ni->b->tunique_est; + if (r < ecnt) + len = GDK_ELIMLIMIT + (ecnt - r) * len; else - len = GDK_STRHASHSIZE + ci->ncand * (len + 12); + len = GDK_STRHASHSIZE + ecnt * (len + 12); /* len is total estimated expected size of vheap */ if (len > ni->vhfree / 2) { diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c --- a/gdk/gdk_group.c +++ b/gdk/gdk_group.c @@ -1282,6 +1282,7 @@ BATgroup_internal(BAT **groups, BAT **ex en->trevsorted = ngrp == 1; en->tnonil = true; en->tnil = false; + en->tunique_est = ngrp; *extents = virtualize(en); } if (histo) { @@ -1304,7 +1305,11 @@ BATgroup_internal(BAT **groups, BAT **ex gn->tnonil = true; gn->tnil = false; gn->tmaxpos = maxgrppos; + gn->tunique_est = ngrp; *groups = gn; + if (!g && !e && !s) { + b->tunique_est = ngrp; + } TRC_DEBUG(ALGO, "b=" ALGOBATFMT ",s=" ALGOOPTBATFMT ",g=" ALGOOPTBATFMT ",e=" ALGOOPTBATFMT ",h=" ALGOOPTBATFMT ",subsorted=%s -> groups=" diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -3259,6 +3259,7 @@ hashjoin(BAT **r1p, BAT **r2p, BAT **r3p } /* also set other bits of heap to correct value to indicate size */ BATsetcount(r1, BATcount(r1)); + r1->tunique_est = MIN(l->tunique_est, r->tunique_est); if (BATcount(r1) <= 1) { r1->tsorted = true; r1->trevsorted = true; @@ -3274,11 +3275,13 @@ hashjoin(BAT **r1p, BAT **r2p, BAT **r3p r2->tkey = true; r2->tseqbase = 0; } + r2->tunique_est = MIN(l->tunique_est, r->tunique_est); } if (r3) { r3->tnonil = !r3->tnil; BATsetcount(r3, BATcount(r3)); assert(BATcount(r1) == BATcount(r3)); + r3->tunique_est = MIN(l->tunique_est, r->tunique_est); } if (BATcount(r1) > 0) { if (BATtdense(r1)) diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c --- a/gdk/gdk_project.c +++ b/gdk/gdk_project.c @@ -571,6 +571,9 @@ project_str(BATiter *restrict li, struct bn->tnil = false; bn->tnonil = r1i->nonil & r2i->nonil; bn->tkey = false; + bn->tunique_est = + MIN(li->b->tunique_est?li->b->tunique_est:BATcount(li->b), + r1i->b->tunique_est?r1i->b->tunique_est:BATcount(r1i->b)); TRC_DEBUG(ALGO, "l=" ALGOBATFMT " r1=" ALGOBATFMT " r2=" ALGOBATFMT " -> " ALGOBATFMT "%s " LLFMT "us\n", ALGOBATPAR(li->b), ALGOBATPAR(r1i->b), ALGOBATPAR(r2i->b), @@ -820,6 +823,9 @@ BATproject2(BAT *restrict l, BAT *restri bn->tascii = r1i.ascii; } + bn->tunique_est = + MIN(li.b->tunique_est?li.b->tunique_est:BATcount(li.b), + r1i.b->tunique_est?r1i.b->tunique_est:BATcount(r1i.b)); if (!BATtdensebi() || (r2 && !BATtdensebi())) BATtseqbase(bn, oid_nil); @@ -1138,6 +1144,15 @@ BATprojectchain(BAT **bats) bn->tnonil = nonil & b->tnonil; bn->tseqbase = oid_nil; bn->tkey = (ba[0].cnt <= 1); + double est = 0; + for (int i = 0; i < n; i++) { + double nest = ba[i].b->tunique_est?ba[i].b->tunique_est:BATcount(ba[i].b); + if (est) + est = MIN(est, nest); + else + est = nest; + } + bn->tunique_est = est; /* note, b may point to one
MonetDB: nilmask - small improvements to the nil-mask.
Changeset: 706f6a5145f4 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/706f6a5145f4 Modified Files: gdk/gdk_bat.c gdk/gdk_batop.c gdk/gdk_select.c sql/backends/monet5/sql.c sql/backends/monet5/sql_statement.c sql/server/sql_atom.c sql/storage/bat/bat_storage.c Branch: nilmask Log Message: small improvements to the nil-mask. diffs (227 lines): diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -1224,7 +1224,7 @@ BUNappendmulti(BAT *b, const void *value if (b->thash) { HASHappend_locked(b, p, t); } - if (atomcmp(t, atomnil) != 0) { + if (atomnil && atomcmp(t, atomnil) != 0) { if (p == 0) { bi.minpos = bi.maxpos = 0; minvalp = maxvalp = t; diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -2814,7 +2814,7 @@ BATconstant(oid hseq, int tailtype, cons lng t0 = 0; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); - if (v == NULL) + if (n && v == NULL) return NULL; bn = COLnew(hseq, tailtype, n, role); if (bn != NULL && n > 0) { diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -1198,10 +1198,11 @@ BATrange(BATiter *bi, const void *tl, co BAT *pb = NULL; int c; int (*atomcmp) (const void *, const void *) = ATOMcompare(bi->type); + const void *nilp = ATOMnilptr(bi->type); - if (tl && (*atomcmp)(tl, ATOMnilptr(bi->type)) == 0) + if (tl && nilp && (*atomcmp)(tl, nilp) == 0) tl = NULL; - if (th && (*atomcmp)(th, ATOMnilptr(bi->type)) == 0) + if (th && nilp && (*atomcmp)(th, nilp) == 0) th = NULL; if (tl == NULL && th == NULL) return range_contains; /* looking for everything */ @@ -1522,7 +1523,7 @@ BATselect(BAT *b, BAT *s, const void *tl ti = lval; lval = hval; hval = ti; - lnil = ATOMcmp(t, tl, nil) == 0; + lnil = nil && ATOMcmp(t, tl, nil) == 0; anti = false; TRC_DEBUG(ALGO, "b=" ALGOBATFMT ",s=" ALGOOPTBATFMT ",anti=%d " @@ -1754,7 +1755,7 @@ BATselect(BAT *b, BAT *s, const void *tl * persistent and the total size wouldn't be too large; check * for existence of hash last since that may involve I/O */ if (equi) { - double cost = joincost(b, 1, , , , NULL); + double cost = (b->ttype > TYPE_msk)?joincost(b, 1, , , , NULL):0; if (cost > 0 && cost < ci.ncand) { wanthash = true; if (havehash) { @@ -2213,7 +2214,7 @@ BATthetaselect(BAT *b, BAT *s, const voi BATcheck(op, NULL); nil = ATOMnilptr(b->ttype); - if (ATOMcmp(b->ttype, val, nil) == 0) + if (nil && ATOMcmp(b->ttype, val, nil) == 0) return BATdense(0, 0, 0); if (op[0] == '=' && ((op[1] == '=' && op[2] == 0) || op[1] == 0)) { /* "=" or "==" */ diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -2511,7 +2511,7 @@ mvc_result_set_wrap( Client cntxt, MalBl colname = BUNtvar(iteratr,o); tpename = BUNtvar(itertpe,o); b = BATdescriptor(bid); - if (b && b->ttype == TYPE_msk) { + if (b && (b->ttype == TYPE_msk || (b->ttype == TYPE_void && strcmp(tpename, "oid") != 0))) { /* expect mask before value */ bid = *getArgReference_bat(stk,pci,++i); cand = b; b = BATdescriptor(bid); diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -1762,21 +1762,40 @@ stmt_uselect(backend *be, stmt *op1, stm assert(cmptype == cmp_equal || cmptype == cmp_notequal); if (cmptype == cmp_notequal) anti = !anti; - q = newStmtArgs(mb, algebraRef, selectRef, 9); - if (q == NULL) - goto bailout; - q = pushArgument(mb, q, l); - if (sub && !op1->cand) { - q = pushArgument(mb, q, sub->nr); - } else { - assert(!sub || op1->cand == sub); -
MonetDB: nilmask - merged with default
Changeset: 9fbf6dda9468 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9fbf6dda9468 Modified Files: clients/Tests/MAL-signatures-hge.test clients/Tests/MAL-signatures.test clients/Tests/exports.stable.out clients/odbc/tests/ODBCmetadata.c monetdb5/modules/atoms/CMakeLists.txt monetdb5/modules/mal/tablet.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/storage/bat/bat_storage.c sql/storage/store.c Branch: nilmask Log Message: merged with default diffs (truncated from 18988 to 300 lines): diff --git a/.bumpversion.cfg b/.bumpversion.cfg --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 11.50.0 +current_version = 11.52.0 commit = False tag = False diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -44,6 +44,7 @@ GPATH GRTAGS TAGS tags +cscope.* *.pyo *.rej *.orig diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -827,3 +827,4 @@ d656785f49ee62c19705722aa6b7c171904c64d5 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_SP2_release 9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_9 9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_SP3_release +e1e9e22bf3d734dc50b56151c657a57c18f56561 Aug2024_root diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,8 +118,14 @@ if(WIN32) ${CMAKE_CURRENT_BINARY_DIR}/unistd.h) endif() -add_library(monetdb_config_header - INTERFACE) +add_library(monetdb_config_header INTERFACE) + +if (CTAGS_PATH) + add_dependencies(monetdb_config_header tags) +endif() +if (CSCOPE_PATH) + add_dependencies(monetdb_config_header cscope) +endif() target_include_directories(monetdb_config_header INTERFACE diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,14 +1,3 @@ # ChangeLog file for devel # This file is updated with Maddlog -* Wed May 8 2024 Sjoerd Mullender -- The shared library (.dll aka .so files) now have the version number - as part of the name. This should allow the building of compatibility - versions that can be installed in parallel to the latest version. -- Some of the Debian/Ubuntu packages have been renamed. The old monetdb5 - names have been changed to plain monetdb, and libmonetdb5-server-* - packages have been renamed monetdb-*. -- The names of some of the provided RPM files have been changed. - References to the old MonetDB5 name have been removed. All packages - are now just MonetDB. - diff --git a/ChangeLog b/ChangeLog.Aug2024 copy from ChangeLog copy to ChangeLog.Aug2024 diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -8,7 +8,7 @@ # Copyright August 2008 - 2023 MonetDB B.V.; # Copyright 1997 - July 2008 CWI. -%global version 11.50.0 +%global version 11.52.0 %bcond_with compat @@ -417,6 +417,7 @@ developer. %{_bindir}/arraytest %{_bindir}/bincopydata %{_bindir}/murltest +%{_bindir}/odbcconnect %{_bindir}/odbcsample1 %{_bindir}/sample0 %{_bindir}/sample1 @@ -914,62 +915,62 @@ sed -i 's/1\.2/1.1/' misc/selinux/monetd %cmake3_build %install -mkdir -p "%{buildroot}/usr" -for d in etc var; do mkdir "%{buildroot}/$d"; ln -s ../$d "%{buildroot}/usr/$d"; done +mkdir -p "${RPM_BUILD_ROOT}"/usr +for d in etc var; do mkdir "${RPM_BUILD_ROOT}"/$d; ln -s ../$d "${RPM_BUILD_ROOT}"/usr/$d; done %cmake3_install -rm "%{buildroot}/usr/var" "%{buildroot}/usr/etc" +rm "${RPM_BUILD_ROOT}"/usr/var "${RPM_BUILD_ROOT}"/usr/etc # move file to correct location -mkdir -p %{buildroot}%{_tmpfilesdir} %{buildroot}%{_sysusersdir} -mv %{buildroot}%{_sysconfdir}/tmpfiles.d/monetdbd.conf %{buildroot}%{_tmpfilesdir} -cat > %{buildroot}%{_sysusersdir}/monetdb.conf << EOF +mkdir -p "${RPM_BUILD_ROOT}"%{_tmpfilesdir} "${RPM_BUILD_ROOT}"%{_sysusersdir} +mv "${RPM_BUILD_ROOT}"%{_sysconfdir}/tmpfiles.d/monetdbd.conf "${RPM_BUILD_ROOT}"%{_tmpfilesdir} +cat > "${RPM_BUILD_ROOT}"%{_sysusersdir}/monetdb.conf << EOF u monetdb - "MonetDB Server" /var/lib/monetdb EOF -rmdir %{buildroot}%{_sysconfdir}/tmpfiles.d +rmdir "${RPM_BUILD_ROOT}"%{_sysconfdir}/tmpfiles.d -install -d -m 0750 %{buildroot}%{_localstatedir}/lib/monetdb -install -d -m 0770 %{buildroot}%{_localstatedir}/monetdb5/dbfarm -install -d -m 0775 %{buildroot}%{_localstatedir}/log/monetdb -install -d -m 0775 %{buildroot}%{_rundir}/monetdb +install -d -m 0750 "${RPM_BUILD_ROOT}"%{_localstatedir}/lib/monetdb +install -d -m 0770 "${RPM_BUILD_ROOT}"%{_localstatedir}/monetdb5/dbfarm +install -d -m 0775 "${RPM_BUILD_ROOT}"%{_localstatedir}/log/monetdb +install -d -m 0775 "${RPM_BUILD_ROOT}"%{_rundir}/monetdb # remove unwanted stuff -rm -f %{buildroot}%{_libdir}/monetdb5*/lib_opt_sql_append.so -rm -f %{buildroot}%{_libdir}/monetdb5*/lib_microbenchmark*.so -rm -f %{buildroot}%{_libdir}/monetdb5*/lib_udf*.so -rm -f
MonetDB: default - merged with aug2024
Changeset: d48164e0e4d4 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d48164e0e4d4 Modified Files: sql/server/rel_select.c Branch: default Log Message: merged with aug2024 diffs (32 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 @@ -1337,9 +1337,8 @@ bool group_by_pk_project_uk_cond(mvc* sq if (pki && pki->columns->cnt == 1 && inner->r && ((list*) inner->r)->cnt == 1) { /* for now only check simple case where primary key and group by expression is a single column*/ sql_exp* gbe = ((list*) inner->r)->h->data; - assert(gbe->type == e_column); sql_column* pkc = ((sql_kc *)pki->columns->h->data)->c; - if (strcmp(gbe->alias.name, pkc->base.name) == 0) { + if (gbe->type == e_column && strcmp(gbe->alias.name, pkc->base.name) == 0) { node *n; for (n = ukil->h; n; n = n->next){ sql_idx* uki = n->data; diff --git a/sql/test/BugTracker-2024/Tests/7535-create-view-groupby-func.test b/sql/test/BugTracker-2024/Tests/7535-create-view-groupby-func.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7535-create-view-groupby-func.test @@ -0,0 +1,5 @@ +statement ok +CREATE TABLE t0(c0 VARCHAR, c1 INTEGER, PRIMARY KEY(c0)) + +statement error 42000!SELECT: cannot use non GROUP BY column 't0.c0' in query results without an aggregate function +CREATE VIEW v0(c0) AS SELECT ('a'||t0.c0) FROM t0 GROUP BY (CASE t0.c1 WHEN t0.c1 THEN 'a' END ) diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -61,3 +61,4 @@ 7513-uri-authority-parse-issue 7514-wrong-window-function 7524-right-outer-join 7528-jarowinkler-null +7535-create-view-groupby-func ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - add test for issue #7535
Changeset: e7db29291532 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/e7db29291532 Added Files: sql/test/BugTracker-2024/Tests/7535-create-view-groupby-func.test Modified Files: sql/server/rel_select.c sql/test/BugTracker-2024/Tests/All Branch: Aug2024 Log Message: add test for issue #7535 fixed assert. diffs (32 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 @@ -1337,9 +1337,8 @@ bool group_by_pk_project_uk_cond(mvc* sq if (pki && pki->columns->cnt == 1 && inner->r && ((list*) inner->r)->cnt == 1) { /* for now only check simple case where primary key and group by expression is a single column*/ sql_exp* gbe = ((list*) inner->r)->h->data; - assert(gbe->type == e_column); sql_column* pkc = ((sql_kc *)pki->columns->h->data)->c; - if (strcmp(gbe->alias.name, pkc->base.name) == 0) { + if (gbe->type == e_column && strcmp(gbe->alias.name, pkc->base.name) == 0) { node *n; for (n = ukil->h; n; n = n->next){ sql_idx* uki = n->data; diff --git a/sql/test/BugTracker-2024/Tests/7535-create-view-groupby-func.test b/sql/test/BugTracker-2024/Tests/7535-create-view-groupby-func.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7535-create-view-groupby-func.test @@ -0,0 +1,5 @@ +statement ok +CREATE TABLE t0(c0 VARCHAR, c1 INTEGER, PRIMARY KEY(c0)) + +statement error 42000!SELECT: cannot use non GROUP BY column 't0.c0' in query results without an aggregate function +CREATE VIEW v0(c0) AS SELECT ('a'||t0.c0) FROM t0 GROUP BY (CASE t0.c1 WHEN t0.c1 THEN 'a' END ) diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -61,3 +61,4 @@ 7513-uri-authority-parse-issue 7514-wrong-window-function 7524-right-outer-join 7528-jarowinkler-null +7535-create-view-groupby-func ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - merged with aug2024
Changeset: a207071d3ec8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/a207071d3ec8 Modified Files: sql/server/rel_dump.c Branch: default Log Message: merged with aug2024 diffs (78 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -2555,21 +2555,25 @@ exp2sql_dquoted(stream *fout, const char /* only simple expressions, ie recursive no psm */ static void -exp2sql_print(mvc *sql, stream *fout, sql_exp *e) +exp2sql_print(mvc *sql, stream *fout, sql_exp *e, int depth) { switch (e->type) { case e_func: { sql_subfunc *sf = e->f; list *args = e->l; if (list_length(args) == 2 && is_infix(sf->func)) { - exp2sql_print(sql, fout, args->h->data); + if (depth) + mnstr_printf(fout, "( " ); + exp2sql_print(sql, fout, args->h->data, depth+1); mnstr_printf(fout, " %s ", sf->func->base.name); - exp2sql_print(sql, fout, args->h->next->data); + exp2sql_print(sql, fout, args->h->next->data, depth+1); + if (depth) + mnstr_printf(fout, " )" ); } else { exp2sql_dquoted(fout, NULL, sf->func->base.name, "("); if (args) for (node *n = args->h; n; n = n->next) { - exp2sql_print(sql, fout, n->data); + exp2sql_print(sql, fout, n->data, depth+1); if (n->next) mnstr_printf(fout, ", "); } @@ -2581,7 +2585,7 @@ exp2sql_print(mvc *sql, stream *fout, sq break; case e_convert: mnstr_printf(fout, "CAST (" ); - exp2sql_print(sql, fout, e->l); + exp2sql_print(sql, fout, e->l, depth+1); mnstr_printf(fout, "AS %s)", sql_subtype_string(sql->sa, exp_subtype(e))); break; case e_atom: @@ -2609,7 +2613,7 @@ exp2sql( mvc *sql, sql_exp *exp) if(s == NULL) goto cleanup; - exp2sql_print(sql, s, exp); + exp2sql_print(sql, s, exp, 0); res = buffer_get_buf(b); diff --git a/sql/test/subquery/Tests/subquery3.test b/sql/test/subquery/Tests/subquery3.test --- a/sql/test/subquery/Tests/subquery3.test +++ b/sql/test/subquery/Tests/subquery3.test @@ -624,19 +624,19 @@ query I rowsort SELECT col1 FROM another_T WHERE (col2, col3) IN (SELECT 1,2) -statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' or VALUES or WITH in: "select (1,2) in (1" +statement error 42000! SELECT (1,2) IN (1,2) -statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' or VALUES or WITH in: "select (1,2) in (1" +statement error 42000! SELECT (1,2) IN (1) statement error 42000!Subquery has too few columns SELECT (col1, col2) IN (VALUES (1)) FROM another_T -statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' or VALUES or WITH in: "select (col1, col2) in (1" +statement error 42000! SELECT (col1, col2) IN (1) FROM another_T -statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' or VALUES or WITH in: "select col1 from another_t where (col2, col3) in (1" +statement error 42000! SELECT col1 FROM another_T WHERE (col2, col3) IN (1,2,3) statement error 42000!Subquery has too few columns ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - backport or/and handling and added brackets f...
Changeset: 4800f138bea5 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/4800f138bea5 Modified Files: sql/server/rel_dump.c Branch: Aug2024 Log Message: backport or/and handling and added brackets for nested infix operators in exp2sql. diffs (63 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -2521,6 +2521,11 @@ is_infix(sql_func *f) return true; if (f->base.name[0] == '|' && f->base.name[1] == '|') return true; + if (f->base.name[0] == 'o' && f->base.name[1] == 'r') + return true; + } else if (strlen(f->base.name) == 3) { + if (f->base.name[0] == 'a' && f->base.name[1] == 'n' && f->base.name[2] == 'd') + return true; } return false; } @@ -2550,21 +2555,25 @@ exp2sql_dquoted(stream *fout, const char /* only simple expressions, ie recursive no psm */ static void -exp2sql_print(mvc *sql, stream *fout, sql_exp *e) +exp2sql_print(mvc *sql, stream *fout, sql_exp *e, int depth) { switch (e->type) { case e_func: { sql_subfunc *sf = e->f; list *args = e->l; if (list_length(args) == 2 && is_infix(sf->func)) { - exp2sql_print(sql, fout, args->h->data); + if (depth) + mnstr_printf(fout, "( " ); + exp2sql_print(sql, fout, args->h->data, depth+1); mnstr_printf(fout, " %s ", sf->func->base.name); - exp2sql_print(sql, fout, args->h->next->data); + exp2sql_print(sql, fout, args->h->next->data, depth+1); + if (depth) + mnstr_printf(fout, " )" ); } else { exp2sql_dquoted(fout, NULL, sf->func->base.name, "("); if (args) for (node *n = args->h; n; n = n->next) { - exp2sql_print(sql, fout, n->data); + exp2sql_print(sql, fout, n->data, depth+1); if (n->next) mnstr_printf(fout, ", "); } @@ -2576,7 +2585,7 @@ exp2sql_print(mvc *sql, stream *fout, sq break; case e_convert: mnstr_printf(fout, "CAST (" ); - exp2sql_print(sql, fout, e->l); + exp2sql_print(sql, fout, e->l, depth+1); mnstr_printf(fout, "AS %s)", sql_subtype_string(sql->sa, exp_subtype(e))); break; case e_atom: @@ -2604,7 +2613,7 @@ exp2sql( mvc *sql, sql_exp *exp) if(s == NULL) goto cleanup; - exp2sql_print(sql, s, exp); + exp2sql_print(sql, s, exp, 0); res = buffer_get_buf(b); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - reduce error statement to just error code! Be...
Changeset: 7eb5a7a19c80 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/7eb5a7a19c80 Modified Files: sql/test/subquery/Tests/subquery3.test Branch: Aug2024 Log Message: reduce error statement to just error code! Because bison changes the order a bit diffs (27 lines): diff --git a/sql/test/subquery/Tests/subquery3.test b/sql/test/subquery/Tests/subquery3.test --- a/sql/test/subquery/Tests/subquery3.test +++ b/sql/test/subquery/Tests/subquery3.test @@ -624,19 +624,19 @@ query I rowsort SELECT col1 FROM another_T WHERE (col2, col3) IN (SELECT 1,2) -statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' or VALUES or WITH in: "select (1,2) in (1" +statement error 42000! SELECT (1,2) IN (1,2) -statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' or VALUES or WITH in: "select (1,2) in (1" +statement error 42000! SELECT (1,2) IN (1) statement error 42000!Subquery has too few columns SELECT (col1, col2) IN (VALUES (1)) FROM another_T -statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' or VALUES or WITH in: "select (col1, col2) in (1" +statement error 42000! SELECT (col1, col2) IN (1) FROM another_T -statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' or VALUES or WITH in: "select col1 from another_t where (col2, col3) in (1" +statement error 42000! SELECT col1 FROM another_T WHERE (col2, col3) IN (1,2,3) statement error 42000!Subquery has too few columns ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - merged with aug2024
Changeset: acc24cd4639d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/acc24cd4639d Modified Files: MonetDB.spec clients/odbc/winsetup/setup.rc sql/backends/monet5/sql.c Branch: default Log Message: merged with aug2024 diffs (truncated from 2480 to 300 lines): diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -44,6 +44,7 @@ GPATH GRTAGS TAGS tags +cscope.* *.pyo *.rej *.orig diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,8 +118,14 @@ if(WIN32) ${CMAKE_CURRENT_BINARY_DIR}/unistd.h) endif() -add_library(monetdb_config_header - INTERFACE) +add_library(monetdb_config_header INTERFACE) + +if (CTAGS_PATH) + add_dependencies(monetdb_config_header tags) +endif() +if (CSCOPE_PATH) + add_dependencies(monetdb_config_header cscope) +endif() target_include_directories(monetdb_config_header INTERFACE diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -417,6 +417,7 @@ developer. %{_bindir}/arraytest %{_bindir}/bincopydata %{_bindir}/murltest +%{_bindir}/odbcconnect %{_bindir}/odbcsample1 %{_bindir}/sample0 %{_bindir}/sample1 diff --git a/clients/odbc/winsetup/resource.h b/clients/odbc/winsetup/resource.h --- a/clients/odbc/winsetup/resource.h +++ b/clients/odbc/winsetup/resource.h @@ -24,21 +24,21 @@ #define IDC_EDIT_PORT 2006 #define IDC_EDIT_DATABASE 2007 -// Advanced settings (new from Jun2024) -#define IDC_EDIT_SCHEMA 2011 -#define IDC_EDIT_LOGINTIMEOUT 2012 -#define IDC_EDIT_REPLYTIMEOUT 2013 -#define IDC_EDIT_REPLYSIZE 2014 -#define IDC_EDIT_AUTOCOMMIT 2015 -#define IDC_EDIT_TIMEZONE 2016 -#define IDC_EDIT_LOGFILE2017 +// Secure connections using TLS +#define IDC_EDIT_USETLS 2011 +#define IDC_EDIT_SERVERCERT 2012 +#define IDC_EDIT_SERVERCERTHASH 2013 +#define IDC_EDIT_CLIENTKEY 2014 +#define IDC_EDIT_CLIENTCERT 2015 -// Secure connections using TLS -#define IDC_EDIT_USETLS 2021 -#define IDC_EDIT_SERVERCERT 2022 -#define IDC_EDIT_SERVERCERTHASH 2023 -#define IDC_EDIT_CLIENTKEY 2024 -#define IDC_EDIT_CLIENTCERT 2025 +// Advanced settings +#define IDC_EDIT_SCHEMA 2021 +#define IDC_EDIT_LOGINTIMEOUT 2022 +#define IDC_EDIT_REPLYTIMEOUT 2023 +#define IDC_EDIT_REPLYSIZE 2024 +#define IDC_EDIT_AUTOCOMMIT 2025 +#define IDC_EDIT_TIMEZONE 2026 +#define IDC_EDIT_LOGFILE2027 #define IDC_BUTTON_TEST 2031 #define IDC_BUTTON_HELP 2032 diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -154,6 +154,13 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR SetDlgItemText(hwndDlg, IDC_EDIT_HOST, datap->host ? datap->host : ""); SetDlgItemText(hwndDlg, IDC_EDIT_PORT, datap->port ? datap->port : ""); SetDlgItemText(hwndDlg, IDC_EDIT_DATABASE, datap->database ? datap->database : ""); + // Secure connections using TLS + SetDlgItemText(hwndDlg, IDC_EDIT_USETLS, datap->use_tls ? datap->use_tls : "off"); + SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERT, datap->servercert ? datap->servercert : ""); + SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERTHASH, datap->servercerthash ? datap->servercerthash : ""); + SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTKEY, datap->clientkey ? datap->clientkey : ""); + SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTCERT, datap->clientcert ? datap->clientcert : ""); + // Advanced settings SetDlgItemText(hwndDlg, IDC_EDIT_SCHEMA, datap->schema ? datap->schema : ""); SetDlgItemText(hwndDlg, IDC_EDIT_LOGINTIMEOUT, datap->logintimeout ? datap->logintimeout : ""); SetDlgItemText(hwndDlg, IDC_EDIT_REPLYTIMEOUT, datap->replytimeout ? datap->replytimeout : ""); @@ -161,11 +168,6 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR SetDlgItemText(hwndDlg, IDC_EDIT_AUTOCOMMIT, datap->autocommit ? datap->autocommit : "on"); SetDlgItemText(hwndDlg, IDC_EDIT_TIMEZONE, datap->timezone ? datap->timezone : ""); SetDlgItemText(hwndDlg, IDC_EDIT_LOGFILE, datap->logfile ? datap->logfile : ""); - SetDlgItemText(hwndDlg, IDC_EDIT_USETLS, datap->use_tls ? datap->use_tls : "off"); - SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERT, datap->servercert ? datap->servercert : ""); - SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERTHASH, datap->servercerthash ? datap->servercerthash : ""); - SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTKEY, datap->clientkey ?
MonetDB: Aug2024 - fixing the push_up_munion, ie on anti join co...
Changeset: 96ad3101c398 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/96ad3101c398 Modified Files: sql/server/rel_unnest.c Branch: Aug2024 Log Message: fixing the push_up_munion, ie on anti join convert into inter (binary chained) diffs (26 lines): diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -1647,10 +1647,19 @@ push_up_munion(mvc *sql, sql_rel *rel, l sql_rel *sf = rlist->h->data; ns->exps = rel_projections(sql, sf, NULL, 1, 1); } - if (rel->op == op_anti && s->op == op_munion) { - assert(0); /* needs to convert list in left/right again ! */ + if (rel->op == op_anti && s->op == op_munion) { + /* chain the munion list of relations into a pair-wise op_inter chain */ + sql_rel *cl = rlist->h->data, *cr = rlist->h->next->data; ns->op = op_inter; - } + if (list_length(rlist) > 2) { + for (node *n = rlist->h->next->next; n; n = n->next) { + cr = rel_setop(sql->sa, cr, n->data, op_inter); + cr->exps = exps_copy(sql, ns->exps); + } + } + ns->l = cl; + ns->r = cr; + } rel_destroy(rel); return ns; } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - default TAGS option to off
Changeset: 98d8567c3987 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/98d8567c3987 Modified Files: cmake/monetdb-options.cmake Branch: Aug2024 Log Message: default TAGS option to off diffs (12 lines): diff --git a/cmake/monetdb-options.cmake b/cmake/monetdb-options.cmake --- a/cmake/monetdb-options.cmake +++ b/cmake/monetdb-options.cmake @@ -95,7 +95,7 @@ option(STRICT option(TAGS "Enable tags usage (ctags and/or cscope) )" - "${DEVELOPMENT}") + OFF) option(ASSERT "Enable asserts (default=ON for development sources, OFF for tarball installation)" ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - merged
Changeset: 6883b823359a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/6883b823359a Branch: Aug2024 Log Message: merged diffs (truncated from 486 to 300 lines): diff --git a/clients/odbc/winsetup/resource.h b/clients/odbc/winsetup/resource.h --- a/clients/odbc/winsetup/resource.h +++ b/clients/odbc/winsetup/resource.h @@ -24,21 +24,21 @@ #define IDC_EDIT_PORT 2006 #define IDC_EDIT_DATABASE 2007 -// Advanced settings (new from Jun2024) -#define IDC_EDIT_SCHEMA 2011 -#define IDC_EDIT_LOGINTIMEOUT 2012 -#define IDC_EDIT_REPLYTIMEOUT 2013 -#define IDC_EDIT_REPLYSIZE 2014 -#define IDC_EDIT_AUTOCOMMIT 2015 -#define IDC_EDIT_TIMEZONE 2016 -#define IDC_EDIT_LOGFILE2017 +// Secure connections using TLS +#define IDC_EDIT_USETLS 2011 +#define IDC_EDIT_SERVERCERT 2012 +#define IDC_EDIT_SERVERCERTHASH 2013 +#define IDC_EDIT_CLIENTKEY 2014 +#define IDC_EDIT_CLIENTCERT 2015 -// Secure connections using TLS -#define IDC_EDIT_USETLS 2021 -#define IDC_EDIT_SERVERCERT 2022 -#define IDC_EDIT_SERVERCERTHASH 2023 -#define IDC_EDIT_CLIENTKEY 2024 -#define IDC_EDIT_CLIENTCERT 2025 +// Advanced settings +#define IDC_EDIT_SCHEMA 2021 +#define IDC_EDIT_LOGINTIMEOUT 2022 +#define IDC_EDIT_REPLYTIMEOUT 2023 +#define IDC_EDIT_REPLYSIZE 2024 +#define IDC_EDIT_AUTOCOMMIT 2025 +#define IDC_EDIT_TIMEZONE 2026 +#define IDC_EDIT_LOGFILE2027 #define IDC_BUTTON_TEST 2031 #define IDC_BUTTON_HELP 2032 diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -154,6 +154,13 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR SetDlgItemText(hwndDlg, IDC_EDIT_HOST, datap->host ? datap->host : ""); SetDlgItemText(hwndDlg, IDC_EDIT_PORT, datap->port ? datap->port : ""); SetDlgItemText(hwndDlg, IDC_EDIT_DATABASE, datap->database ? datap->database : ""); + // Secure connections using TLS + SetDlgItemText(hwndDlg, IDC_EDIT_USETLS, datap->use_tls ? datap->use_tls : "off"); + SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERT, datap->servercert ? datap->servercert : ""); + SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERTHASH, datap->servercerthash ? datap->servercerthash : ""); + SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTKEY, datap->clientkey ? datap->clientkey : ""); + SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTCERT, datap->clientcert ? datap->clientcert : ""); + // Advanced settings SetDlgItemText(hwndDlg, IDC_EDIT_SCHEMA, datap->schema ? datap->schema : ""); SetDlgItemText(hwndDlg, IDC_EDIT_LOGINTIMEOUT, datap->logintimeout ? datap->logintimeout : ""); SetDlgItemText(hwndDlg, IDC_EDIT_REPLYTIMEOUT, datap->replytimeout ? datap->replytimeout : ""); @@ -161,11 +168,6 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR SetDlgItemText(hwndDlg, IDC_EDIT_AUTOCOMMIT, datap->autocommit ? datap->autocommit : "on"); SetDlgItemText(hwndDlg, IDC_EDIT_TIMEZONE, datap->timezone ? datap->timezone : ""); SetDlgItemText(hwndDlg, IDC_EDIT_LOGFILE, datap->logfile ? datap->logfile : ""); - SetDlgItemText(hwndDlg, IDC_EDIT_USETLS, datap->use_tls ? datap->use_tls : "off"); - SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERT, datap->servercert ? datap->servercert : ""); - SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERTHASH, datap->servercerthash ? datap->servercerthash : ""); - SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTKEY, datap->clientkey ? datap->clientkey : ""); - SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTCERT, datap->clientcert ? datap->clientcert : ""); if (datap->request == ODBC_ADD_DSN && datap->dsn && *datap->dsn) EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_DSN), FALSE); return TRUE; @@ -220,6 +222,28 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR if (datap->database) free(datap->database); datap->database = strdup(buf); + // Secure connections using TLS + GetDlgItemText(hwndDlg, IDC_EDIT_USETLS, buf, sizeof(buf)); + if (datap->use_tls) + free(datap->use_tls); + datap->use_tls = strdup(buf); + GetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERT, buf, sizeof(buf)); + if (datap->servercert) +
MonetDB: Aug2024 - instead of using -DSTRICT=On use -DTAGS=ON fo...
Changeset: 6de6b89f6ae1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/6de6b89f6ae1 Modified Files: cmake/monetdb-findpackages.cmake cmake/monetdb-options.cmake Branch: Aug2024 Log Message: instead of using -DSTRICT=On use -DTAGS=ON for enabling ctags/cscope diffs (33 lines): diff --git a/cmake/monetdb-findpackages.cmake b/cmake/monetdb-findpackages.cmake --- a/cmake/monetdb-findpackages.cmake +++ b/cmake/monetdb-findpackages.cmake @@ -138,7 +138,7 @@ find_package(Semodule) find_package(Awk) find_package(Candle) -if(STRICT) +if(TAGS) find_program(CTAGS_PATH ctags) if(CTAGS_PATH) message(STATUS "Found ctags: ${CTAGS_PATH}") @@ -147,5 +147,5 @@ if(STRICT) if(CSCOPE_PATH) message(STATUS "Found cscope: ${CSCOPE_PATH}") endif(CSCOPE_PATH) -endif(STRICT) +endif(TAGS) diff --git a/cmake/monetdb-options.cmake b/cmake/monetdb-options.cmake --- a/cmake/monetdb-options.cmake +++ b/cmake/monetdb-options.cmake @@ -93,6 +93,10 @@ option(STRICT "Enable strict compiler flags (default=ON for development sources, OFF for tarball installation)" "${DEVELOPMENT}") +option(TAGS + "Enable tags usage (ctags and/or cscope) )" + "${DEVELOPMENT}") + option(ASSERT "Enable asserts (default=ON for development sources, OFF for tarball installation)" "${DEVELOPMENT}") ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - add ctags/cscope rules (enabled if available ...
Changeset: 8b0240ac7b48 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/8b0240ac7b48 Modified Files: .hgignore CMakeLists.txt cmake/monetdb-custom-targets.cmake cmake/monetdb-findpackages.cmake Branch: Aug2024 Log Message: add ctags/cscope rules (enabled if available and if -DSTRICT=ON) diffs (74 lines): diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -44,6 +44,7 @@ GPATH GRTAGS TAGS tags +cscope.* *.pyo *.rej *.orig diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,8 +118,14 @@ if(WIN32) ${CMAKE_CURRENT_BINARY_DIR}/unistd.h) endif() -add_library(monetdb_config_header - INTERFACE) +add_library(monetdb_config_header INTERFACE) + +if (CTAGS_PATH) + add_dependencies(monetdb_config_header tags) +endif() +if (CSCOPE_PATH) + add_dependencies(monetdb_config_header cscope) +endif() target_include_directories(monetdb_config_header INTERFACE diff --git a/cmake/monetdb-custom-targets.cmake b/cmake/monetdb-custom-targets.cmake --- a/cmake/monetdb-custom-targets.cmake +++ b/cmake/monetdb-custom-targets.cmake @@ -97,3 +97,20 @@ else() COMMAND ${CMAKE_COMMAND} -E echo 'Target not available because \"candle\" was not found.') endif() + +if(CTAGS_PATH) +add_custom_target(tags + COMMAND ${CTAGS_PATH} -R --kinds-C=+pLl --fields=+iaS --exclude=*.js +${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} +COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/tags ${CMAKE_CURRENT_SOURCE_DIR} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +endif() + +if(CSCOPE_PATH) +add_custom_target(cscope + COMMAND ${CSCOPE_PATH} -bcqR -s${CMAKE_CURRENT_SOURCE_DIR} +COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/cscope.out ${CMAKE_CURRENT_SOURCE_DIR}/ +COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/cscope.in.out ${CMAKE_CURRENT_SOURCE_DIR}/ +COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/cscope.po.out ${CMAKE_CURRENT_SOURCE_DIR}/ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +endif() diff --git a/cmake/monetdb-findpackages.cmake b/cmake/monetdb-findpackages.cmake --- a/cmake/monetdb-findpackages.cmake +++ b/cmake/monetdb-findpackages.cmake @@ -137,3 +137,15 @@ find_package(Reprepro) find_package(Semodule) find_package(Awk) find_package(Candle) + +if(STRICT) + find_program(CTAGS_PATH ctags) + if(CTAGS_PATH) +message(STATUS "Found ctags: ${CTAGS_PATH}") + endif(CTAGS_PATH) + find_program(CSCOPE_PATH cscope) + if(CSCOPE_PATH) +message(STATUS "Found cscope: ${CSCOPE_PATH}") + endif(CSCOPE_PATH) +endif(STRICT) + ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - merged
Changeset: da9db530cfe2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/da9db530cfe2 Branch: Aug2024 Log Message: merged diffs (truncated from 730 to 300 lines): diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -417,6 +417,7 @@ developer. %{_bindir}/arraytest %{_bindir}/bincopydata %{_bindir}/murltest +%{_bindir}/odbcconnect %{_bindir}/odbcsample1 %{_bindir}/sample0 %{_bindir}/sample1 diff --git a/debian/monetdb-client-testing.install b/debian/monetdb-client-testing.install --- a/debian/monetdb-client-testing.install +++ b/debian/monetdb-client-testing.install @@ -5,6 +5,7 @@ debian/tmp/usr/bin/ODBCtester usr/bin debian/tmp/usr/bin/arraytest usr/bin debian/tmp/usr/bin/bincopydata usr/bin debian/tmp/usr/bin/murltest usr/bin +debian/tmp/usr/bin/odbcconnect usr/bin debian/tmp/usr/bin/odbcsample1 usr/bin debian/tmp/usr/bin/sample0 usr/bin debian/tmp/usr/bin/sample1 usr/bin diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -977,7 +977,7 @@ bind_project_reduce_casts(visitor *v, gl return gp->cnt[op_project] && (flag & project_reduce_casts) ? rel_project_reduce_casts : NULL; } - +#if 0 static sql_rel * exp_skip_output_parts(sql_rel *rel) { @@ -988,6 +988,7 @@ exp_skip_output_parts(sql_rel *rel) } return rel; } +#endif static sql_column * exp_find_column_( sql_rel *rel, sql_exp *exp, int pnr, sql_rel **bt ) @@ -1085,6 +1086,7 @@ rel_is_join_on_pkey(sql_rel *rel, bool p return NULL; } +#if 0 /* return true if the given expression is guaranteed to have no rows */ static int exp_is_zero_rows(visitor *v, sql_rel *rel, sql_rel *sel) @@ -1160,56 +1162,6 @@ exp_is_zero_rows(visitor *v, sql_rel *re return 0; } -/* discard sides of UNION or UNION ALL which cannot produce any rows, as per -statistics, similarly to the merge table optimizer, e.g. - select * from a where x between 1 and 2 union all select * from b where x between 1 and 2 --> select * from b where x between 1 and 2 [assuming a has no rows with 1<=x<=2] -*/ -static inline sql_rel * -rel_remove_union_partitions(visitor *v, sql_rel *rel) -{ - if (!is_union(rel->op) || rel_is_ref(rel)) - return rel; - int left_zero_rows = !rel_is_ref(rel->l) && exp_is_zero_rows(v, rel->l, NULL); - int right_zero_rows = !rel_is_ref(rel->r) && exp_is_zero_rows(v, rel->r, NULL); - - if (left_zero_rows && right_zero_rows) { - /* generate dummy relation */ - list *converted = sa_list(v->sql->sa); - sql_rel *nrel = rel_project_exp(v->sql, exp_atom_bool(v->sql->sa, 1)); - nrel = rel_select(v->sql->sa, nrel, exp_atom_bool(v->sql->sa, 0)); - set_processed(nrel); - - for (node *n = rel->exps->h ; n ; n = n->next) { - sql_exp *e = n->data, *a = exp_atom(v->sql->sa, atom_general(v->sql->sa, exp_subtype(e), NULL, 0)); - exp_prop_alias(v->sql->sa, a, e); - list_append(converted, a); - } - rel_destroy(rel); - v->changes++; - return rel_project(v->sql->sa, nrel, converted); - } else if (left_zero_rows) { - sql_rel *r = rel->r; - if (!is_project(r->op)) - r = rel_project(v->sql->sa, r, rel_projections(v->sql, r, NULL, 1, 1)); - rel_rename_exps(v->sql, rel->exps, r->exps); - rel->r = NULL; - rel_destroy(rel); - v->changes++; - return r; - } else if (right_zero_rows) { - sql_rel *l = rel->l; - if (!is_project(l->op)) - l = rel_project(v->sql->sa, l, rel_projections(v->sql, l, NULL, 1, 1)); - rel_rename_exps(v->sql, rel->exps, l->exps); - rel->l = NULL; - rel_destroy(rel); - v->changes++; - return l; - } - return rel; -} - static int rel_match_projections(sql_rel *l, sql_rel *r) { @@ -1227,6 +1179,7 @@ rel_match_projections(sql_rel *l, sql_re return 0; return 1; } +#endif static int exps_has_predicate( list *l ) @@ -1252,55 +1205,6 @@ rel_find_select( sql_rel *r) return NULL; } -static inline sql_rel * -rel_merge_union(visitor *v, sql_rel *rel) -{ - sql_rel *l = rel->l; - sql_rel *r = rel->r; - sql_rel *ref = NULL; - - if (is_union(rel->op) && - l && is_project(l->op) && !project_unsafe(l,0) && - r && is_project(r->op) && !project_unsafe(r,0) && - (ref = rel_find_ref(l)) != NULL && ref == rel_find_ref(r)) { - /* Find selects and try to merge */ - sql_rel *ls = rel_find_select(l); - sql_rel *rs = rel_find_select(r); -
MonetDB: Aug2024 - skip mat functions for commonTerms as they ne...
Changeset: c35df5669d2a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c35df5669d2a Modified Files: monetdb5/optimizer/opt_commonTerms.c monetdb5/optimizer/opt_support.c sql/backends/monet5/sql_statement.c Branch: Aug2024 Log Message: skip mat functions for commonTerms as they need to work in sets don't mark mat as Update function as that breaks dataflow properly set null for Nop's. diffs (38 lines): diff --git a/monetdb5/optimizer/opt_commonTerms.c b/monetdb5/optimizer/opt_commonTerms.c --- a/monetdb5/optimizer/opt_commonTerms.c +++ b/monetdb5/optimizer/opt_commonTerms.c @@ -144,6 +144,11 @@ OPTcommonTermsImplementation(Client cntx old[i] = NULL; continue; } + if (getModuleId(p) == matRef) { /* mat.packIncrement has requirement on number of instructions (or that needs an update */ + pushInstruction(mb, p); + old[i] = NULL; + continue; + } /* from here we have a candidate to look for a match */ diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c --- a/monetdb5/optimizer/opt_support.c +++ b/monetdb5/optimizer/opt_support.c @@ -264,8 +264,6 @@ isUpdateInstruction(InstrPtr p) && (getFunctionId(p) == appendRef || getFunctionId(p) == replaceRef || getFunctionId(p) == deleteRef)) return TRUE; - if (getModuleId(p) == matRef) - return TRUE; return FALSE; } diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -4633,7 +4633,6 @@ stmt_has_null(stmt *s) { switch (s->type) { case st_aggr: - case st_Nop: case st_semijoin: case st_uselect: case st_uselect2: ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - merged
Changeset: e9c109807f3a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/e9c109807f3a Branch: Aug2024 Log Message: merged diffs (49 lines): diff --git a/monetdb5/modules/mal/txtsim.c b/monetdb5/modules/mal/txtsim.c --- a/monetdb5/modules/mal/txtsim.c +++ b/monetdb5/modules/mal/txtsim.c @@ -481,6 +481,10 @@ str_2_codepointseq(str_item *s) { const uint8_t *p = (const uint8_t *) s->val; + if (s->len == 0) { + s->cp_sequence = NULL; + return MAL_SUCCEED; + } s->cp_sequence = GDKmalloc(s->len * sizeof(int)); if (s->cp_sequence == NULL) throw(MAL, "str_2_byteseq", SQLSTATE(HY013) MAL_MALLOC_FAIL); @@ -589,20 +593,29 @@ static str TXTSIMjarowinkler(dbl *res, const char *const *x, const char *const *y) { int *x_flags = NULL, *y_flags = NULL; - str_item xi = { 0 }, yi = { 0 }; + str_item xi, yi; str msg = MAL_SUCCEED; if (strNil(*x) || strNil(*y)) { *res = dbl_nil; return MAL_SUCCEED; } - xi.val = *x; - xi.len = UTF8_strlen(*x); + xi = (str_item) { + .val = *x, + .len = UTF8_strlen(*x), + }; + yi = (str_item) { + .val = *y, + .len = UTF8_strlen(*y), + }; + if (xi.len == 0 || yi.len == 0) { + *res = 0; + return MAL_SUCCEED; + } + if ((msg = str_2_codepointseq()) != MAL_SUCCEED) goto bailout; - yi.val = *y; - yi.len = UTF8_strlen(*y); if ((msg = str_2_codepointseq()) != MAL_SUCCEED) goto bailout; ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - fixed small performance regression, because w...
Changeset: 1ee668a18e17 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1ee668a18e17 Modified Files: sql/backends/monet5/sql_statement.c Branch: Aug2024 Log Message: fixed small performance regression, because we lost track of null/no null info on the stmt level. diffs (12 lines): diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -4639,6 +4639,8 @@ stmt_has_null(stmt *s) case st_uselect2: case st_atom: return 0; + case st_alias: + return stmt_has_null(s->op1); case st_join: return stmt_has_null(s->op2); case st_bat: ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Dec2023 - move drop bats code into the sys_drop_* funct...
Changeset: 5bf0cccb943e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/5bf0cccb943e Modified Files: sql/storage/store.c Branch: Dec2023 Log Message: move drop bats code into the sys_drop_* functions, should solve bat leaks on disk (grafted from 3f2d29873c785ab7a63bad9160b9d055a5f62416) diffs (74 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -4345,6 +4345,11 @@ sys_drop_idx(sql_trans *tr, sql_idx * i, return res; } + i->base.deleted = 1; + if (!isNew(i) && !isTempTable(i->t)) + if ((res = store->storage_api.drop_idx(tr, (sql_idx*)dup_base(>base + return res; + /* remove idx from schema and table */ if (isGlobal(i->t) && (res = os_del(i->t->s->idxs, tr, i->base.name, dup_base(>base return res; @@ -4561,6 +4566,11 @@ sys_drop_column(sql_trans *tr, sql_colum if ((res = sys_drop_default_object(tr, col, drop_action))) return res; + col->base.deleted = 1; + if (!isNew(col) && !isTempTable(col->t)) + if ((res = store->storage_api.drop_col(tr, (sql_column*)dup_base(>base + return res; + if (drop_action && (res = sql_trans_drop_all_dependencies(tr, col->base.id, COLUMN_DEPENDENCY))) return res; if (col->type.type->s && (res = sql_trans_drop_dependency(tr, col->type.type->base.id, col->base.id, TYPE_DEPENDENCY))) @@ -4771,6 +4781,10 @@ sys_drop_table(sql_trans *tr, sql_table if ((res = sys_drop_columns(tr, t, drop_action))) return res; + if (isTable(t) && !isNew(t)) + if ((res = store->storage_api.drop_del(tr, t))) + return res; + if (drop_action && (res = sql_trans_drop_all_dependencies(tr, t->base.id, !isView(t) ? TABLE_DEPENDENCY : VIEW_DEPENDENCY))) return res; return res; @@ -6036,11 +6050,6 @@ sql_trans_drop_table(sql_trans *tr, sql_ if (t != gt && (res = os_del(tr->localtmps, tr, t->base.name, dup_base(>base return res; - sqlstore *store = tr->store; - if (isTable(t) && !isNew(t)) - if ((res = store->storage_api.drop_del(tr, t))) - return res; - if (drop_action == DROP_CASCADE_START && tr->dropped) { list_destroy(tr->dropped); tr->dropped = NULL; @@ -6243,11 +6252,6 @@ sql_trans_drop_column(sql_trans *tr, sql if ((res = sys_drop_column(tr, col, drop_action))) return res; - col->base.deleted = 1; - if (!isNew(col) && !isTempTable(col->t)) - if ((res = store->storage_api.drop_col(tr, (sql_column*)dup_base(>base - return res; - if (isNew(col)) { /* remove create from changes */ trans_del(tr, >base); if (!isNew(col->t)) @@ -6858,11 +6862,6 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc if ((res = store_reset_sql_functions(tr, i->t->base.id))) /* reset sql functions depending on the table */ return res; - i->base.deleted = 1; - if (!isNew(i) && !isTempTable(i->t)) - if ((res = store->storage_api.drop_idx(tr, (sql_idx*)dup_base(>base - return res; - node *n = ol_find_name(i->t->idxs, i->base.name); if (n) ol_del(i->t->idxs, store, n); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - initial support for local temp views.
Changeset: 25524a69eb47 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/25524a69eb47 Modified Files: sql/server/rel_schema.c sql/server/rel_select.c sql/server/sql_parser.y sql/storage/store.c Branch: default Log Message: initial support for local temp views. diffs (125 lines): diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1559,7 +1559,7 @@ rel_create_table(sql_query *query, int t } static sql_rel * -rel_create_view(sql_query *query, dlist *qname, dlist *column_spec, symbol *ast, int check, int persistent, int replace) +rel_create_view(sql_query *query, int temp, dlist *qname, dlist *column_spec, symbol *ast, int check, int persistent, int replace) { mvc *sql = query->sql; const char *name = qname_schema_object(qname); @@ -1571,10 +1571,19 @@ rel_create_view(sql_query *query, dlist int create = (!instantiate && !deps); sqlid pfoundid = 0, foundid = 0; const char *base = replace ? "CREATE OR REPLACE VIEW" : "CREATE VIEW"; + const char *action = (temp == SQL_DECLARED_TABLE)?"DECLARE":"CREATE"; (void) check; /* Stefan: unused!? */ - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (temp == SQL_GLOBAL_TEMP) + temp = SQL_PERSIST; /* just normal view */ + + if (temp == SQL_LOCAL_TEMP || temp == SQL_GLOBAL_TEMP) { + if (sname && strcmp(sname, "tmp") != 0) + return sql_error(sql, 02, SQLSTATE(3F000) "%s VIEW: %s temporary views should be stored in the 'tmp' schema", +action, (temp == SQL_LOCAL_TEMP) ? "local" : "global"); + s = tmp_schema(sql); + } else if (sname && !(s = mvc_bind_schema(sql, sname))) return sql_error(sql, ERR_NOTFOUND, SQLSTATE(3F000) "%s: no such schema '%s'", base, sname); if (create && (!mvc_schema_privs(sql, s) && !(isTempSchema(s) && persistent == SQL_LOCAL_TEMP))) return sql_error(sql, 02, SQLSTATE(42000) "%s: access denied for %s to schema '%s'", base, get_string_global_var(sql, "current_user"), s->base.name); @@ -1641,7 +1650,7 @@ rel_create_view(sql_query *query, dlist rel_destroy(sq); return NULL; } - return rel_create_view_ddl(sql, ddl_create_view, s->base.name, t, SQL_PERSIST, replace); + return rel_create_view_ddl(sql, ddl_create_view, s->base.name, t, temp, replace); } if (!persistent && column_spec) sq = view_rename_columns(sql, name, sq, column_spec); @@ -2955,14 +2964,16 @@ rel_schemas(sql_query *query, symbol *s) { dlist *l = s->data.lval; - assert(l->h->next->next->next->type == type_int); + assert(l->h->type == type_int); assert(l->h->next->next->next->next->type == type_int); - ret = rel_create_view(query, l->h->data.lval, + assert(l->h->next->next->next->next->next->type == type_int); + ret = rel_create_view(query, l->h->data.i_val, l->h->next->data.lval, - l->h->next->next->data.sym, - l->h->next->next->next->data.i_val, + l->h->next->next->data.lval, + l->h->next->next->next->data.sym, l->h->next->next->next->next->data.i_val, - l->h->next->next->next->next->next->data.i_val); /* or replace */ + l->h->next->next->next->next->next->data.i_val, + l->h->next->next->next->next->next->next->data.i_val); /* or replace */ } break; case SQL_DROP_TABLE: { 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 @@ -271,7 +271,7 @@ rel_with_query(sql_query *query, symbol /* first handle all with's (ie inlined views) */ for (d = d->data.lval->h; d; d = d->next) { symbol *sym = d->data.sym; - dnode *dn = sym->data.lval->h; + dnode *dn = sym->data.lval->h->next; char *rname = qname_schema_object(dn->data.lval); sql_rel *nrel; diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -1739,6 +1739,17 @@ table_def: append_int(l,
MonetDB: default - add rangejoin generator optimizer
Changeset: bd6f0896ce02 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/bd6f0896ce02 Modified Files: monetdb5/optimizer/opt_generator.c sql/backends/monet5/generator/Tests/rangejoin.test sql/backends/monet5/generator/generator.c Branch: default Log Message: add rangejoin generator optimizer diffs (75 lines): diff --git a/monetdb5/optimizer/opt_generator.c b/monetdb5/optimizer/opt_generator.c --- a/monetdb5/optimizer/opt_generator.c +++ b/monetdb5/optimizer/opt_generator.c @@ -16,7 +16,7 @@ /* * (c) Martin Kersten, Sjoerd Mullender - * Series generating module for integer, decimal, real, double and timestamps. + * Series generating module for integer, decimal, real, double, date and timestamps. */ #define errorCheck(P,IDX,MOD,I) \ @@ -144,6 +144,9 @@ OPTgeneratorImplementation(Client cntxt, typeChecker(cntxt->usermodule, mb, p, i, TRUE); pushInstruction(mb, p); old[i] = NULL; + } else if (getModuleId(p) == algebraRef && getFunctionId(p) == rangejoinRef + && series[getArg(p, 2)]) { + errorCheck(p, i, algebraRef, getArg(p, 2)); } else if (getModuleId(p) == algebraRef && getFunctionId(p) == selectRef && series[getArg(p, 1)]) { errorCheck(p, i, algebraRef, getArg(p, 1)); diff --git a/sql/backends/monet5/generator/Tests/rangejoin.test b/sql/backends/monet5/generator/Tests/rangejoin.test --- a/sql/backends/monet5/generator/Tests/rangejoin.test +++ b/sql/backends/monet5/generator/Tests/rangejoin.test @@ -6,7 +6,7 @@ INSERT INTO ranges VALUES (1,3),(2,4),(5 query III rowsort SELECT * -FROM generate_series(0,10,1) AS s JOIN ranges ON ( s.value >= ranges.low AND s.value < ranges.hgh) +FROM generate_series(cast(0 as integer),10,1) AS s JOIN ranges ON ( s.value >= ranges.low AND s.value < ranges.hgh) 1 1 diff --git a/sql/backends/monet5/generator/generator.c b/sql/backends/monet5/generator/generator.c --- a/sql/backends/monet5/generator/generator.c +++ b/sql/backends/monet5/generator/generator.c @@ -1643,8 +1643,16 @@ str VLTgenerator_rangejoin(Client cntxt, BBPunfix(blow->batCacheid); throw(MAL,"generator.rangejoin", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING); } - li = *getArgReference_bit(stk,pci,5); - ri = *getArgReference_bit(stk,pci,6); + /* ToDo handle cands ie arguments 5,6 */ + li = *getArgReference_bit(stk,pci,7); + ri = *getArgReference_bit(stk,pci,8); + bit anti = *getArgReference_bit(stk,pci,9); + bit nil = *getArgReference_bit(stk,pci,10); + lng estimate = *getArgReference_lng(stk,pci,11); + /* ToDo handle anti, symmetric and estimate */ + (void)anti; + (void)nil; + (void)estimate; cnt = BATcount(blow); limit = 2 * cnt; //top off result before expansion @@ -1780,12 +1788,12 @@ static mel_func generator_init_funcs[] = pattern("generator", "join", VLTgenerator_join, false, "", args(2,4, batarg("l",oid),batarg("r",oid),batarg("b",lng),batarg("gen",lng))), pattern("generator", "join", VLTgenerator_join, false, "", args(2,4, batarg("l",oid),batarg("r",oid),batarg("b",flt),batarg("gen",flt))), pattern("generator", "join", VLTgenerator_join, false, "Overloaded join operation", args(2,4, batarg("l",oid),batarg("r",oid),batarg("b",dbl),batarg("gen",dbl))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",bte),batarg("low",bte),batarg("hgh",bte),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",sht),batarg("low",sht),batarg("hgh",sht),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",int),batarg("low",int),batarg("hgh",int),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",lng),batarg("low",lng),batarg("hgh",lng),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",flt),batarg("low",flt),batarg("hgh",flt),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "Overloaded range join operation", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",dbl),batarg("low",dbl),batarg("hgh",dbl),arg("li",bit),arg("ri",bit))), + pattern("generator", "rangejoin", VLTgenerator_rangejoin, false, "", args(2,12,
MonetDB: Aug2024 - move drop bats code into the sys_drop_* funct...
Changeset: 3f2d29873c78 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3f2d29873c78 Modified Files: sql/storage/store.c Branch: Aug2024 Log Message: move drop bats code into the sys_drop_* functions, should solve bat leaks on disk diffs (74 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -4382,6 +4382,11 @@ sys_drop_idx(sql_trans *tr, sql_idx * i, return res; } + i->base.deleted = 1; + if (!isNew(i) && !isTempTable(i->t)) + if ((res = store->storage_api.drop_idx(tr, (sql_idx*)dup_base(>base + return res; + /* remove idx from schema and table */ if (isGlobal(i->t) && (res = os_del(i->t->s->idxs, tr, i->base.name, dup_base(>base return res; @@ -4598,6 +4603,11 @@ sys_drop_column(sql_trans *tr, sql_colum if ((res = sys_drop_default_object(tr, col, drop_action))) return res; + col->base.deleted = 1; + if (!isNew(col) && !isTempTable(col->t)) + if ((res = store->storage_api.drop_col(tr, (sql_column*)dup_base(>base + return res; + if (drop_action && (res = sql_trans_drop_all_dependencies(tr, col->base.id, COLUMN_DEPENDENCY))) return res; if (col->type.type->s && (res = sql_trans_drop_dependency(tr, col->type.type->base.id, col->base.id, TYPE_DEPENDENCY))) @@ -4808,6 +4818,10 @@ sys_drop_table(sql_trans *tr, sql_table if ((res = sys_drop_columns(tr, t, drop_action))) return res; + if (isTable(t) && !isNew(t)) + if ((res = store->storage_api.drop_del(tr, t))) + return res; + if (drop_action && (res = sql_trans_drop_all_dependencies(tr, t->base.id, !isView(t) ? TABLE_DEPENDENCY : VIEW_DEPENDENCY))) return res; return res; @@ -6079,11 +6093,6 @@ sql_trans_drop_table(sql_trans *tr, sql_ if (t != gt && (res = os_del(tr->localtmps, tr, t->base.name, dup_base(>base return res; - sqlstore *store = tr->store; - if (isTable(t) && !isNew(t)) - if ((res = store->storage_api.drop_del(tr, t))) - return res; - if (drop_action == DROP_CASCADE_START && tr->dropped) { list_destroy(tr->dropped); tr->dropped = NULL; @@ -6287,11 +6296,6 @@ sql_trans_drop_column(sql_trans *tr, sql if ((res = sys_drop_column(tr, col, drop_action))) return res; - col->base.deleted = 1; - if (!isNew(col) && !isTempTable(col->t)) - if ((res = store->storage_api.drop_col(tr, (sql_column*)dup_base(>base - return res; - if (isNew(col)) { /* remove create from changes */ trans_del(tr, >base); if (!isNew(col->t)) @@ -6903,11 +6907,6 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc if ((res = store_reset_sql_functions(tr, i->t->base.id))) /* reset sql functions depending on the table */ return res; - i->base.deleted = 1; - if (!isNew(i) && !isTempTable(i->t)) - if ((res = store->storage_api.drop_idx(tr, (sql_idx*)dup_base(>base - return res; - node *n = ol_find_name(i->t->idxs, i->base.name); if (n) ol_del(i->t->idxs, store, n); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Aug2024 - backport fixes on statistics not using name_f...
Changeset: 49731ed2a581 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/49731ed2a581 Modified Files: sql/server/rel_basetable.c sql/server/rel_basetable.h sql/server/rel_dump.c sql/server/rel_select.c sql/server/rel_statistics.c Branch: Aug2024 Log Message: backport fixes on statistics not using name_find_col diffs (103 lines): diff --git a/sql/server/rel_basetable.c b/sql/server/rel_basetable.c --- a/sql/server/rel_basetable.c +++ b/sql/server/rel_basetable.c @@ -72,6 +72,17 @@ rel_base_idx_nid(sql_rel *r, sql_idx *i) return 0; } +sql_column* +rel_base_find_column(sql_rel *r, int nid) +{ + rel_base_t *ba = r->r; + sql_table *b = r->l; + nid = -nid; + if ((nid - ba->basenr) >= ol_length(b->columns)) + return NULL; + return ol_fetch(b->columns, nid - ba->basenr); +} + int rel_base_nid(sql_rel *r, sql_column *c) { @@ -572,6 +583,8 @@ rel_rename_part(mvc *sql, sql_rel *p, sq { sql_exp *ne = NULL; sql_table *mt = rel_base_table(mt_rel), *t = rel_base_table(p); + rel_base_t *mt_ba = mt_rel->r, *p_ba = p->r; + p_ba->basenr = mt_ba->basenr; assert(!p->exps); p->exps = sa_list(sql->sa); diff --git a/sql/server/rel_basetable.h b/sql/server/rel_basetable.h --- a/sql/server/rel_basetable.h +++ b/sql/server/rel_basetable.h @@ -44,6 +44,7 @@ extern sql_exp *rel_base_bind_column( mv extern sql_rel *rel_base_bind_column2_( sql_rel *rel, const char *tname, const char *cname); extern sql_exp *rel_base_bind_column2( mvc *sql, sql_rel *rel, const char *tname, const char *cname); extern sql_exp *rel_base_bind_column3( mvc *sql, sql_rel *rel, const char *sname, const char *tname, const char *cname); +extern sql_column *rel_base_find_column( sql_rel *rel, int nid); extern list *rel_base_projection( mvc *sql, sql_rel *rel, int intern); extern list *rel_base_project_all( mvc *sql, sql_rel *rel, char *tname); /* select * from t */ diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -121,7 +121,7 @@ exp_print(mvc *sql, stream *fout, sql_ex if (!e) return; /*mnstr_printf(fout, "%p ", e);*/ - if (mvc_debug_on(sql, 16) && e->alias.label < 0) + if (mvc_debug_on(sql, 4) && e->alias.label < 0) mnstr_printf(fout, "%d: ", e->alias.label); switch(e->type) { case e_psm: { @@ -248,7 +248,7 @@ exp_print(mvc *sql, stream *fout, sql_ex case e_column: { if (is_freevar(e)) mnstr_printf(fout, "!!!FREE!!! "); - if (mvc_debug_on(sql, 16) && e->nid) + if (mvc_debug_on(sql, 4) && e->nid) mnstr_printf(fout, "<%d", e->nid); if (e->l) mnstr_printf(fout, "\"%s\".", dump_escape_ident(sql->ta, (char*)e->l)); 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 @@ -439,9 +439,15 @@ rel_get_count(sql_rel *rel) if (rel->p && (p = find_prop(rel->p, PROP_COUNT)) != NULL) return p->value.lval; else if(is_munion(rel->op)) { + lng cnt = 0; list *l = rel->l; - sql_rel *f = l->h->data; - return rel_get_count(f); + for (node *n = l->h; n; n = n->next) { + lng lcnt = rel_get_count(n->data); + if (lcnt == BUN_MAX) + return BUN_MAX; + cnt += lcnt; + } + return cnt; } else if(rel->l) { if (is_select(rel->op) || is_project(rel->op)) return rel_get_count(rel->l); diff --git a/sql/server/rel_statistics.c b/sql/server/rel_statistics.c --- a/sql/server/rel_statistics.c +++ b/sql/server/rel_statistics.c @@ -13,6 +13,7 @@ #include "monetdb_config.h" #include "rel_optimizer_private.h" #include "rel_statistics.h" +#include "rel_basetable.h" #include "rel_rewriter.h" static sql_exp * @@ -286,7 +287,7 @@ rel_basetable_column_get_statistics(mvc return; sql_column *c = NULL; - if ((c = name_find_column(rel, exp_relname(e), exp_name(e), -2, NULL))) { + if ((c = rel_base_find_column(rel, e->nid))) { sql_column_get_statistics(sql, c, e); } } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - don't use name_find_column in rel_statistics
Changeset: db324d2a4e34 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/db324d2a4e34 Modified Files: sql/server/rel_basetable.c sql/server/rel_basetable.h sql/server/rel_dump.c sql/server/rel_select.c sql/server/rel_statistics.c Branch: default Log Message: don't use name_find_column in rel_statistics use sql_debug=4 for extra info/print on labels diffs (103 lines): diff --git a/sql/server/rel_basetable.c b/sql/server/rel_basetable.c --- a/sql/server/rel_basetable.c +++ b/sql/server/rel_basetable.c @@ -72,6 +72,17 @@ rel_base_idx_nid(sql_rel *r, sql_idx *i) return 0; } +sql_column* +rel_base_find_column(sql_rel *r, int nid) +{ + rel_base_t *ba = r->r; + sql_table *b = r->l; + nid = -nid; + if ((nid - ba->basenr) >= ol_length(b->columns)) + return NULL; + return ol_fetch(b->columns, nid - ba->basenr); +} + int rel_base_nid(sql_rel *r, sql_column *c) { @@ -572,6 +583,8 @@ rel_rename_part(mvc *sql, sql_rel *p, sq { sql_exp *ne = NULL; sql_table *mt = rel_base_table(mt_rel), *t = rel_base_table(p); + rel_base_t *mt_ba = mt_rel->r, *p_ba = p->r; + p_ba->basenr = mt_ba->basenr; assert(!p->exps); p->exps = sa_list(sql->sa); diff --git a/sql/server/rel_basetable.h b/sql/server/rel_basetable.h --- a/sql/server/rel_basetable.h +++ b/sql/server/rel_basetable.h @@ -44,6 +44,7 @@ extern sql_exp *rel_base_bind_column( mv extern sql_rel *rel_base_bind_column2_( sql_rel *rel, const char *tname, const char *cname); extern sql_exp *rel_base_bind_column2( mvc *sql, sql_rel *rel, const char *tname, const char *cname); extern sql_exp *rel_base_bind_column3( mvc *sql, sql_rel *rel, const char *sname, const char *tname, const char *cname); +extern sql_column *rel_base_find_column( sql_rel *rel, int nid); extern list *rel_base_projection( mvc *sql, sql_rel *rel, int intern); extern list *rel_base_project_all( mvc *sql, sql_rel *rel, char *tname); /* select * from t */ diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -121,7 +121,7 @@ exp_print(mvc *sql, stream *fout, sql_ex if (!e) return; /*mnstr_printf(fout, "%p ", e);*/ - if (mvc_debug_on(sql, 16) && e->alias.label < 0) + if (mvc_debug_on(sql, 4) && e->alias.label < 0) mnstr_printf(fout, "%d: ", e->alias.label); switch(e->type) { case e_psm: { @@ -248,7 +248,7 @@ exp_print(mvc *sql, stream *fout, sql_ex case e_column: { if (is_freevar(e)) mnstr_printf(fout, "!!!FREE!!! "); - if (mvc_debug_on(sql, 16) && e->nid) + if (mvc_debug_on(sql, 4) && e->nid) mnstr_printf(fout, "<%d", e->nid); if (e->l) mnstr_printf(fout, "\"%s\".", dump_escape_ident(sql->ta, (char*)e->l)); 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 @@ -439,9 +439,15 @@ rel_get_count(sql_rel *rel) if (rel->p && (p = find_prop(rel->p, PROP_COUNT)) != NULL) return p->value.lval; else if(is_munion(rel->op)) { + lng cnt = 0; list *l = rel->l; - sql_rel *f = l->h->data; - return rel_get_count(f); + for (node *n = l->h; n; n = n->next) { + lng lcnt = rel_get_count(n->data); + if (lcnt == BUN_MAX) + return BUN_MAX; + cnt += lcnt; + } + return cnt; } else if(rel->l) { if (is_select(rel->op) || is_project(rel->op)) return rel_get_count(rel->l); diff --git a/sql/server/rel_statistics.c b/sql/server/rel_statistics.c --- a/sql/server/rel_statistics.c +++ b/sql/server/rel_statistics.c @@ -13,6 +13,7 @@ #include "monetdb_config.h" #include "rel_optimizer_private.h" #include "rel_statistics.h" +#include "rel_basetable.h" #include "rel_rewriter.h" static sql_exp * @@ -286,7 +287,7 @@ rel_basetable_column_get_statistics(mvc return; sql_column *c = NULL; - if ((c = name_find_column(rel, exp_relname(e), exp_name(e), -2, NULL))) { + if ((c = rel_base_find_column(rel, e->nid))) { sql_column_get_statistics(sql, c, e); } } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - move drop's of bats to the sys_drop_* functions
Changeset: 19eecc3571cf for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/19eecc3571cf Modified Files: sql/storage/store.c Branch: default Log Message: move drop's of bats to the sys_drop_* functions diffs (74 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -4382,6 +4382,11 @@ sys_drop_idx(sql_trans *tr, sql_idx * i, return res; } + i->base.deleted = 1; + if (!isNew(i) && !isTempTable(i->t)) + if ((res = store->storage_api.drop_idx(tr, (sql_idx*)dup_base(>base + return res; + /* remove idx from schema and table */ if (isGlobal(i->t) && (res = os_del(i->t->s->idxs, tr, i->base.name, dup_base(>base return res; @@ -4598,6 +4603,11 @@ sys_drop_column(sql_trans *tr, sql_colum if ((res = sys_drop_default_object(tr, col, drop_action))) return res; + col->base.deleted = 1; + if (!isNew(col) && !isTempTable(col->t)) + if ((res = store->storage_api.drop_col(tr, (sql_column*)dup_base(>base + return res; + if (drop_action && (res = sql_trans_drop_all_dependencies(tr, col->base.id, COLUMN_DEPENDENCY))) return res; if (col->type.type->s && (res = sql_trans_drop_dependency(tr, col->type.type->base.id, col->base.id, TYPE_DEPENDENCY))) @@ -4808,6 +4818,10 @@ sys_drop_table(sql_trans *tr, sql_table if ((res = sys_drop_columns(tr, t, drop_action))) return res; + if (isTable(t) && !isNew(t)) + if ((res = store->storage_api.drop_del(tr, t))) + return res; + if (drop_action && (res = sql_trans_drop_all_dependencies(tr, t->base.id, !isView(t) ? TABLE_DEPENDENCY : VIEW_DEPENDENCY))) return res; return res; @@ -6079,11 +6093,6 @@ sql_trans_drop_table(sql_trans *tr, sql_ if (t != gt && (res = os_del(tr->localtmps, tr, t->base.name, dup_base(>base return res; - sqlstore *store = tr->store; - if (isTable(t) && !isNew(t)) - if ((res = store->storage_api.drop_del(tr, t))) - return res; - if (drop_action == DROP_CASCADE_START && tr->dropped) { list_destroy(tr->dropped); tr->dropped = NULL; @@ -6287,11 +6296,6 @@ sql_trans_drop_column(sql_trans *tr, sql if ((res = sys_drop_column(tr, col, drop_action))) return res; - col->base.deleted = 1; - if (!isNew(col) && !isTempTable(col->t)) - if ((res = store->storage_api.drop_col(tr, (sql_column*)dup_base(>base - return res; - if (isNew(col)) { /* remove create from changes */ trans_del(tr, >base); if (!isNew(col->t)) @@ -6903,11 +6907,6 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc if ((res = store_reset_sql_functions(tr, i->t->base.id))) /* reset sql functions depending on the table */ return res; - i->base.deleted = 1; - if (!isNew(i) && !isTempTable(i->t)) - if ((res = store->storage_api.drop_idx(tr, (sql_idx*)dup_base(>base - return res; - node *n = ol_find_name(i->t->idxs, i->base.name); if (n) ol_del(i->t->idxs, store, n); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Dec2023 - make sure to use lng instead of int, solve pr...
Changeset: 25af433d5586 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/25af433d5586 Modified Files: sql/storage/bat/bat_storage.c sql/storage/store.c Branch: Dec2023 Log Message: make sure to use lng instead of int, solve problems with loading data with > 2147483647 rows diffs (33 lines): diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c --- a/sql/storage/bat/bat_storage.c +++ b/sql/storage/bat/bat_storage.c @@ -4723,7 +4723,7 @@ claim_segmentsV2(sql_trans *tr, sql_tabl in_transaction = true; } if (in_transaction && !NOT_TO_BE_LOGGED(t)) - tr->logchanges += (int) total; + tr->logchanges += (lng) total; if (*offsets) { BAT *pos = *offsets; assert(BATcount(pos) == total); @@ -4803,7 +4803,7 @@ claim_segments(sql_trans *tr, sql_table in_transaction = true; } if (in_transaction && !NOT_TO_BE_LOGGED(t)) - tr->logchanges += (int) cnt; + tr->logchanges += (lng) cnt; *offset = slot; } return ok; diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -4033,7 +4033,7 @@ sql_trans_commit(sql_trans *tr) const bool log = !tr->parent && tr->logchanges > 0; if (log) { - const int min_changes = ATOMIC_GET() & FORCEMITOMASK ? 5 : 100; + const lng min_changes = ATOMIC_GET() & FORCEMITOMASK ? 5 : 100; flush = (tr->logchanges > min_changes && list_empty(store->changes)); } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - fixed rel_get_count for munion
Changeset: 3a52f156bbf9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3a52f156bbf9 Modified Files: sql/server/rel_select.c Branch: label Log Message: fixed rel_get_count for munion diffs (16 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 @@ -438,7 +438,11 @@ rel_get_count(sql_rel *rel) prop *p = NULL; if (rel->p && (p = find_prop(rel->p, PROP_COUNT)) != NULL) return p->value.lval; - else if(rel->l) { + else if(is_munion(rel->op)) { + list *l = rel->l; + sql_rel *f = l->h->data; + return rel_get_count(f); + } else if(rel->l) { if (is_select(rel->op) || is_project(rel->op)) return rel_get_count(rel->l); } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - cleanup more string based lookups
Changeset: 871baa54ab84 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/871baa54ab84 Modified Files: sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimize_proj.c sql/server/rel_unnest.c sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.test sql/test/miscellaneous/Tests/simple_plans.test Branch: label Log Message: cleanup more string based lookups diffs (250 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 @@ -753,6 +753,8 @@ exp_propagate(allocator *sa, sql_exp *ne set_no_nil(ne); if (!has_nil(oe)) set_has_no_nil(ne); + if (has_nil(oe)) + set_has_nil(ne); if (is_unique(oe)) set_unique(ne); if (is_basecol(oe)) @@ -780,6 +782,8 @@ exp_ref_by_label(allocator *sa, sql_exp e->tpe = *t; if (!has_nil(o)) set_has_no_nil(e); + if (has_nil(o)) + set_has_nil(e); if (is_unique(o)) set_unique(e); if (is_intern(o)) @@ -1846,6 +1850,55 @@ rel_find_exp(sql_rel *rel, sql_exp *e) return rel_find_exp_and_corresponding_rel(rel, e, false, NULL, NULL); } +bool +rel_find_nid(sql_rel *rel, int nid) +{ + if (rel) { + switch(rel->op) { + case op_left: + case op_right: + case op_full: + case op_join: + case op_semi: + case op_anti: + if (rel_find_nid(rel->l, nid)) + return true; + if (is_join(rel->op)) + return rel_find_nid(rel->r, nid); + break; + case op_table: + case op_basetable: + case op_munion: + case op_union: + case op_inter: + case op_except: + case op_project: + case op_groupby: + if (rel->exps) { + if (exps_bind_nid(rel->exps, nid)) + return true; + } else if (rel->op == op_basetable) + return rel_base_has_nid(rel, nid); + break; + case op_select: + case op_topn: + case op_sample: + if (rel_find_nid(rel->l, nid)) + return true; + break; + case op_ddl: + case op_insert: + case op_update: + case op_delete: + case op_truncate: + case op_merge: + return false; + + } + } + return false; +} + int exp_is_true(sql_exp *e) { diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h --- a/sql/server/rel_exp.h +++ b/sql/server/rel_exp.h @@ -140,6 +140,7 @@ extern const char *exp_find_rel_name(sql extern sql_exp *rel_find_exp(sql_rel *rel, sql_exp *e); extern sql_exp *rel_find_exp_and_corresponding_rel(sql_rel *rel, sql_exp *e, bool subexp, sql_rel **res, bool *under_join); +extern bool rel_find_nid(sql_rel *rel, int nid); extern int exp_cmp( sql_exp *e1, sql_exp *e2); extern int exp_equal( sql_exp *e1, sql_exp *e2); diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -387,10 +387,8 @@ exp_rename(mvc *sql, sql_exp *e, sql_rel return e; sql_exp *oe = e; e = NULL; - if (exp_name(ne) && ne->r && ne->l) - e = rel_bind_column2(sql, t, ne->l, ne->r, 0); - if (!e && ne->r) - e = rel_bind_column(sql, t, ne->r, 0, 1); + if (ne && ne->nid) + e = rel_find_exp(t, ne); if (!e) { sql->session->status = 0; sql->errstr[0] = 0; @@ -398,7 +396,10 @@ exp_rename(mvc *sql, sql_exp *e, sql_rel return ne; return oe; } - return exp_ref(sql, e); + ne = exp_ref(sql, e); + if (oe) + exp_propagate(sql->sa, ne, oe); + return ne; case e_cmp: if (e->flag == cmp_or || e->flag == cmp_filter) { e->l = exps_rename(sql, e->l, f, t); @@ -585,22 +586,6 @@ rel_push_project_up_(visitor *v, sql_rel r_exps = rel_projections(v->sql, r, NULL, 1, 1); if (rel->attr) append(r_exps, exp_ref(v->sql, rel->attr->h->data)); - if (0) - for(n = l_exps->h; n;
MonetDB: label - more removal of string looks
Changeset: 4d0b13c0faec for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/4d0b13c0faec Modified Files: sql/server/rel_optimize_exps.c sql/server/rel_optimize_others.c sql/server/rel_optimize_proj.c sql/server/rel_optimize_sel.c sql/server/rel_unnest.c sql/test/rel-optimizers/Tests/groupjoin.test Branch: label Log Message: more removal of string looks diffs (276 lines): diff --git a/sql/server/rel_optimize_exps.c b/sql/server/rel_optimize_exps.c --- a/sql/server/rel_optimize_exps.c +++ b/sql/server/rel_optimize_exps.c @@ -755,15 +755,12 @@ rel_remove_alias(visitor *v, sql_rel *re if (l->op == op_project) { sql_exp *ne = rel_find_exp(l, e); if (ne && ne->type == e_column && is_selfref(ne)) { - sql_exp *nne = NULL; /* found ne in projection, try to find reference in the same list */ - if (ne->l) - nne = exps_bind_column2(l->exps, ne->l, ne->r, NULL); - else - nne = exps_bind_column(l->exps, ne->r, NULL, NULL, 1); + sql_exp *nne = exps_bind_nid(l->exps, ne->nid); if (nne && nne != ne && list_position(l->exps, nne) < list_position(l->exps, ne)) { e->l = (char*)exp_relname(nne); e->r = (char*)exp_name(nne); + e->nid = nne->alias.label; v->changes++; } } @@ -777,14 +774,11 @@ rel_remove_alias(visitor *v, sql_rel *re sql_exp *ne = rel_find_exp(l, e); found = true; if (ne && ne->type == e_column && is_selfref(ne)) { - sql_exp *nne = NULL; - if (ne->l) - nne = exps_bind_column2(l->exps, ne->l, ne->r, NULL); - else - nne = exps_bind_column(l->exps, ne->r, NULL, NULL, 1); + sql_exp *nne = exps_bind_nid(l->exps, ne->nid); if (nne && nne != ne && list_position(l->exps, nne) < list_position(l->exps, ne)) { e->l = (char*)exp_relname(nne); e->r = (char*)exp_name(nne); + e->nid = nne->alias.label; v->changes++; } } @@ -796,14 +790,11 @@ rel_remove_alias(visitor *v, sql_rel *re sql_exp *ne = rel_find_exp(l, e); found = true; if (ne && ne->type == e_column && is_selfref(ne)) { - sql_exp *nne = NULL; - if (ne->l) - nne = exps_bind_column2(l->exps, ne->l, ne->r, NULL); - else - nne = exps_bind_column(l->exps, ne->r, NULL, NULL, 1); + sql_exp *nne = exps_bind_nid(l->exps, ne->nid); if (nne && nne != ne && list_position(l->exps, nne) < list_position(l->exps, ne)) { e->l = (char*)exp_relname(nne); e->r = (char*)exp_name(nne); + e->nid = nne->alias.label; v->changes++; } } diff --git a/sql/server/rel_optimize_others.c b/sql/server/rel_optimize_others.c --- a/sql/server/rel_optimize_others.c +++ b/sql/server/rel_optimize_others.c @@ -101,10 +101,8 @@ exp_push_down_prj(mvc *sql, sql_exp *e, e = ne; ne = NULL; - if (e->l) - ne = exps_bind_column2(f->exps, e->l, e->r, NULL); - if (!ne && !e->l) - ne = exps_bind_column(f->exps, e->r, NULL, NULL, 1); + if (e->nid) + ne = exps_bind_nid(f->exps, e->nid); if (ne && ne != one && list_position(f->exps, ne) >= list_position(f->exps, one)) ne = NULL;
MonetDB: label - small fix on getting the attribute names of the...
Changeset: c2f0edcc5edd for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c2f0edcc5edd Modified Files: sql/backends/monet5/vaults/csv/csv.c Branch: label Log Message: small fix on getting the attribute names of the csv header line diffs (12 lines): diff --git a/sql/backends/monet5/vaults/csv/csv.c b/sql/backends/monet5/vaults/csv/csv.c --- a/sql/backends/monet5/vaults/csv/csv.c +++ b/sql/backends/monet5/vaults/csv/csv.c @@ -44,7 +44,7 @@ next_delim(const char *s, const char *e, else if (!inquote && *s == delim) return s; } - if (s < e) + if (s <= e) return s; return NULL; } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - approved output
Changeset: 689d24cbb6d9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/689d24cbb6d9 Modified Files: sql/test/sql_dump/Tests/dump.test Branch: label Log Message: approved output diffs (17 lines): diff --git a/sql/test/sql_dump/Tests/dump.test b/sql/test/sql_dump/Tests/dump.test --- a/sql/test/sql_dump/Tests/dump.test +++ b/sql/test/sql_dump/Tests/dump.test @@ -369,10 +369,10 @@ ALTER TABLE "sys"."splitted" ADD TABLE " ALTER TABLE "sys"."splitted" ADD TABLE "sys"."second_decade" AS PARTITION FROM '2010-01-01 00:00:00.00' TO '2020-01-01 00:00:00.00'; ALTER TABLE "sys"."m1" ADD TABLE "sys"."p1"; SET SCHEMA "sfoo"; create trigger extra_insert after insert on "sfoo"."tfoo1" referencing new row as new_row for each statement insert into tfoo2(i) values (new_row.i)@; -COMMENT ON SCHEMA "sbar" IS 'This is a comment on a schema'; +COMMENT ON SEQUENCE "sys"."seq1" IS 'This is a comment on a sequence.'; +COMMENT ON INDEX "sys"."ind3" IS 'This is a comment on an index.'; COMMENT ON COLUMN "sfoo"."tfoo1"."i" IS 'This is a comment on a column.'; -COMMENT ON INDEX "sys"."ind3" IS 'This is a comment on an index.'; -COMMENT ON SEQUENCE "sys"."seq1" IS 'This is a comment on a sequence.'; +COMMENT ON SCHEMA "sbar" IS 'This is a comment on a schema'; COMMENT ON WINDOW "sys"."stddev"(DOUBLE PRECISION,BIGINT) IS 'This is a comment on a window function.'; GRANT SELECT ON TABLE "sys"."foo" TO "voc"; GRANT UPDATE("i") ON "sys"."foo" TO "voc"; ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - add upgade code and approved output
Changeset: 680e570f7804 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/680e570f7804 Modified Files: sql/backends/monet5/sql_upgrades.c sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 Branch: label Log Message: add upgade code and approved output diffs (71 lines): diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -7041,6 +7041,10 @@ sql_update_default(Client c, mvc *sql, s "GRANT SELECT ON sys.fully_qualified_functions TO PUBLIC;\n" "GRANT SELECT ON sys.describe_privileges TO PUBLIC;\n" "GRANT SELECT ON sys.describe_functions TO PUBLIC;\n" + "\n" + "CREATE FUNCTION check_constraint(sname STRING, cname STRING) RETURNS STRING EXTERNAL NAME sql.\"check\";\n" + "grant execute on function check_constraint to public;\n" + "\n" "update sys.functions set system = true where not system and schema_id = 2000 and name in ('dump_database', 'describe_columns', 'describe_type');\n" "update sys._tables set system = true where not system and schema_id = 2000 and name in ('dump_comments', 'dump_tables', 'dump_functions', 'dump_function_grants', 'describe_functions', 'describe_privileges', 'describe_comments', 'fully_qualified_functions', 'describe_tables');\n"; if ((t = mvc_bind_table(sql, s, "dump_comments")) != NULL) diff --git a/sql/test/emptydb/Tests/check.stable.out b/sql/test/emptydb/Tests/check.stable.out --- a/sql/test/emptydb/Tests/check.stable.out +++ b/sql/test/emptydb/Tests/check.stable.out @@ -1836,6 +1836,7 @@ select 'null in fkeys.delete_action', de [ "sys.functions", "sys", "character_length", "SYSTEM", "length", "str", "Internal C", "Scalar function", false, false, false, false, NULL, "res_0","int", 31, 0, "out", "arg_1","varchar", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL] [ "sys.functions", "sys", "charindex","SYSTEM", "locate", "str", "Internal C", "Scalar function", false, false, false, false, NULL, "res_0","int", 31, 0, "out", "arg_1", "varchar", 0, 0, "in", "arg_2","varchar", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL] [ "sys.functions", "sys", "charindex","SYSTEM", "locate3", "str", "Internal C", "Scalar function", false, false, false, false, NULL, "res_0","int", 31, 0, "out", "arg_1", "varchar", 0, 0, "in", "arg_2","varchar", 0, 0, "in", "arg_3","int", 31, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL] +[ "sys.functions", "sys", "check_constraint", "SYSTEM", "create function check_constraint(sname string, cname string) returns string external name sql.\"check\";", "sql", "MAL", "Scalar function", false, false, false, true, NULL, "result", "varchar", 0, 0, "out", "sname","varchar", 0, 0, "in",
MonetDB: label - add v1 of merge_unions
Changeset: 5070ec27cf06 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/5070ec27cf06 Modified Files: sql/server/rel_optimize_proj.c Branch: label Log Message: add v1 of merge_unions diffs (43 lines): diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -3461,6 +3461,31 @@ rel_push_project_down_union(visitor *v, return rel; } +static inline sql_rel * +rel_merge_unions(visitor *v, sql_rel *rel) +{ + (void)v; + if (rel && is_munion(rel->op)) { + list *l = rel->l; + for(node *n = l->h; n; ) { + node *next = n->next; + sql_rel *i = n->data; + if (is_munion(i->op)) { + i = rel_dup(i); + list_remove_node(l, NULL, n); + l = list_merge(l, i->l, (fdup)NULL); + i->l = NULL; + rel_destroy(i); + if (!next) + next = l->h; + } + n = next; + } + rel->l = l; + } + return rel; +} + /* * Push (semi)joins down unions, this is basically for merge tables, where * we know that the fk-indices are split over two clustered merge tables. @@ -3879,6 +3904,7 @@ static sql_rel * rel_optimize_unions_topdown_(visitor *v, sql_rel *rel) { rel = rel_push_project_down_union(v, rel); + rel = rel_merge_unions(v, rel); rel = rel_push_join_down_munion(v, rel); return rel; } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - only dump check expression
Changeset: fd16ecb2cf0a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/fd16ecb2cf0a Modified Files: clients/Tests/MAL-signatures-hge.test clients/Tests/MAL-signatures.test sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/scripts/76_dump.sql sql/server/rel_dump.c sql/server/rel_dump.h sql/server/rel_schema.c Branch: label Log Message: only dump check expression added v1 of exp2sql to be used via select check_constraint('schema', 'constraint name'); diffs (truncated from 388 to 300 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -48969,6 +48969,11 @@ pattern sql.bind_idxbat(X_0:int, X_1:str mvc_bind_idxbat_wrap; Bind the 'schema.table.index' BAT with access kind:@0 - base table@1 - inserts@2 - updates sql +check +pattern sql.check(X_0:str, X_1:str):str +SQLcheck; +Return sql string of check constraint. +sql claim unsafe pattern sql.claim(X_0:int, X_1:str, X_2:str, X_3:lng) (X_4:oid, X_5:bat[:oid]) mvc_claim_wrap; diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -37429,6 +37429,11 @@ pattern sql.bind_idxbat(X_0:int, X_1:str mvc_bind_idxbat_wrap; Bind the 'schema.table.index' BAT with access kind:@0 - base table@1 - inserts@2 - updates sql +check +pattern sql.check(X_0:str, X_1:str):str +SQLcheck; +Return sql string of check constraint. +sql claim unsafe pattern sql.claim(X_0:int, X_1:str, X_2:str, X_3:lng) (X_4:oid, X_5:bat[:oid]) mvc_claim_wrap; diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -5143,25 +5143,22 @@ sql_insert_check(backend *be, sql_key *k { mvc *sql = be->mvc; int pos = 0; - sql_rel* rel = rel_read(sql, sa_strdup(sql->sa, key->check), , sa_list(sql->sa)), *br = rel->l; - - assert(is_basetable(br->op)); + sql_rel *rel = rel_basetable(sql, key->t, key->t->base.name); + sql_exp *exp = exp_read(sql, rel, NULL, NULL, sa_strdup(sql->sa, key->check), , 0); + rel->exps = rel_base_projection(sql, rel, 0); + /* create new sub stmt with needed inserts */ list *ins = sa_list(sql->sa); for(node *n = key->columns->h; n; n = n->next) { sql_kc *kc = n->data; stmt *in = list_fetch(inserts, kc->c->colnr); - sql_exp *e = rel_base_bind_column2(sql, br, kc->c->t->base.name, kc->c->base.name); + sql_exp *e = rel_base_bind_column2(sql, rel, kc->c->t->base.name, kc->c->base.name); in = stmt_alias(be, in, e->alias.label, kc->c->t->base.name, kc->c->base.name); append(ins, in); } stmt *sub = stmt_list(be, ins); - /* TODO: need exp here */ - assert(list_length(rel->exps) == 1); - sql_exp *e = rel->exps->h->data; - stmt *s = exp_bin(be, e, sub, NULL, NULL, NULL, NULL, NULL, 0, 0, 0); - + stmt *s = exp_bin(be, exp, sub, NULL, NULL, NULL, NULL, NULL, 0, 0, 0); sql_subfunc *cnt = sql_bind_func(sql, "sys", "count", sql_bind_localtype("void"), NULL, F_AGGR, true, true); s = stmt_uselect(be, column(be, s), stmt_bool(be, 0), cmp_equal, NULL, 0, 1); s = stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1); @@ -6159,22 +6156,9 @@ sql_update_check(backend *be, stmt **upd { mvc *sql = be->mvc; int pos = 0; - sql_rel *rel = NULL; - - if (key->t->persistence == SQL_DECLARED_TABLE) { - stack_push_frame(be->mvc, "ALTER TABLE ADD CONSTRAINT CHECK"); - sql_schema* ss = key->t->s; - frame_push_table(sql, key->t); - key->t->s = ss; // recover the schema because frame_push_table removes it - - rel = rel_read(sql, sa_strdup(sql->sa, key->check), , sa_list(sql->sa)); - stack_pop_frame(sql); - } else { - rel = rel_read(sql, sa_strdup(sql->sa, key->check), , sa_list(sql->sa)); - } - - sql_rel *br = rel->l; - assert(is_basetable(br->op)); + sql_rel *rel = rel_basetable(sql, key->t, key->t->base.name); + sql_exp *exp = exp_read(sql, rel, NULL, NULL, sa_strdup(sql->sa, key->check), , 0); + rel->exps = rel_base_projection(sql, rel, 0); /* create sub stmt with needed updates (or projected col from to be updated table) */ list *ups = sa_list(sql->sa); @@ -6187,16 +6171,13 @@ sql_update_check(backend *be, stmt **upd } else { upd = stmt_col(be, kc->c, u_tids, u_tids->partition); } - sql_exp *e = rel_base_bind_column2(sql, br, kc->c->t->base.name, kc->c->base.name); + sql_exp *e =
MonetDB: label - merged with default
Changeset: a3cfb5549512 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/a3cfb5549512 Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/include/sql_relation.h sql/server/rel_dump.c sql/server/rel_exp.c sql/server/rel_optimize_others.c sql/server/rel_optimize_proj.c sql/server/rel_optimize_sel.c sql/server/rel_optimizer.c sql/server/rel_propagate.c sql/server/rel_rel.c sql/server/rel_rel.h sql/server/rel_schema.c sql/server/rel_select.c sql/server/rel_statistics.c sql/server/rel_unnest.c sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.test sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.test sql/test/BugTracker-2021/Tests/plan-not-optimal-view.Bug-7140.test sql/test/BugTracker-2024/Tests/atom_cmp-Bug-7477.test sql/test/SQLancer/Tests/sqlancer17.test sql/test/bugs/Tests/rtrim_bug.test sql/test/merge-partitions/Tests/mergepart31.test sql/test/miscellaneous/Tests/simple_plans.test sql/test/pg_regress/Tests/alter_table.test sql/test/prepare/Tests/prepare-complex.stable.out sql/test/prepare/Tests/rename_exps.Bug-3974.stable.out sql/test/prepare/Tests/sqlancer_prepare.stable.out sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 Branch: label Log Message: merged with default fixed issues on munion reimplemented code generation for check constraint diffs (truncated from 5007 to 300 lines): diff --git a/clients/odbc/driver/CMakeLists.txt b/clients/odbc/driver/CMakeLists.txt --- a/clients/odbc/driver/CMakeLists.txt +++ b/clients/odbc/driver/CMakeLists.txt @@ -124,14 +124,9 @@ target_include_directories(MonetODBC $ $) -target_compile_definitions(MonetODBC - PRIVATE - LIBMONETODBCS) - target_link_libraries(MonetODBC PRIVATE monetdb_config_header - mutils mapi mutf8 ${ODBCINST_LIBRARIES}) diff --git a/clients/odbc/driver/ODBCGlobal.h b/clients/odbc/driver/ODBCGlobal.h --- a/clients/odbc/driver/ODBCGlobal.h +++ b/clients/odbc/driver/ODBCGlobal.h @@ -49,16 +49,6 @@ #define ODBCDEBUG 1 -#ifdef WIN32 -#ifndef LIBMONETODBC -#define odbc_export extern __declspec(dllimport) -#else -#define odbc_export extern __declspec(dllexport) -#endif -#else -#define odbc_export extern -#endif - /* standard ODBC driver include files */ #include /* ODBC C typedefs */ /* Note: sqlext.h includes sql.h so it is not needed here to be included */ diff --git a/clients/odbc/setup/drvcfg.h b/clients/odbc/setup/drvcfg.h --- a/clients/odbc/setup/drvcfg.h +++ b/clients/odbc/setup/drvcfg.h @@ -32,16 +32,6 @@ #define ODBCVER 0x0351 -#ifdef WIN32 -#ifndef LIBMONETODBCS -#define odbc_export extern __declspec(dllimport) -#else -#define odbc_export extern __declspec(dllexport) -#endif -#else -#define odbc_export extern -#endif - #include / @@ -148,7 +138,7 @@ extern "C" { #endif /* ONLY IMPLEMENTED IN DRIVER SETUP (not in ODBCINST) */ - odbc_export int ODBCINSTGetProperties(HODBCINSTPROPERTY hFirstProperty); + extern int ODBCINSTGetProperties(HODBCINSTPROPERTY hFirstProperty); #if defined(__cplusplus) } diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -22,10 +22,6 @@ #define ALREADY_HAVE_WINDOWS_TYPE 1 #include #include -#ifdef EXPORT -#undef EXPORT -#endif -#define EXPORT __declspec(dllexport) #include #include "resource.h" diff --git a/common/stream/text_stream.c b/common/stream/text_stream.c --- a/common/stream/text_stream.c +++ b/common/stream/text_stream.c @@ -30,6 +30,7 @@ struct inner_state { pump_buffer src_win; pump_buffer dst_win; pump_buffer putback_win; + pump_state *outer_state; char putback_buf[UTF8BOMLENGTH]; bool crlf_pending; char buffer[BUFFER_SIZE]; @@ -88,42 +89,69 @@ take_byte(inner_state_t *ist) static pump_result text_pump_in(inner_state_t *ist, pump_action action) { - bool crlf_pending = ist->crlf_pending; + assert(ist->dst_win.count > 0); + assert(ist->src_win.count > 0 || action == PUMP_FINISH); - while (ist->src_win.count > 0 && ist->dst_win.count > 0) { - char c = take_byte(ist); - switch (c) { - case '\r': - if (crlf_pending) { - // put the previous one, which is clearly not followed by an \n - put_byte(ist, '\r'); - } - crlf_pending = true; - continue; - case '\n': -
MonetDB: balanced_union - small fix, use proper relation .
Changeset: 52bfa5340d5c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/52bfa5340d5c Modified Files: sql/server/rel_optimize_others.c Branch: balanced_union Log Message: small fix, use proper relation . diffs (12 lines): diff --git a/sql/server/rel_optimize_others.c b/sql/server/rel_optimize_others.c --- a/sql/server/rel_optimize_others.c +++ b/sql/server/rel_optimize_others.c @@ -653,7 +653,7 @@ rel_mark_used(mvc *sql, sql_rel *rel, in positional_exps_mark_used(rel, l); rel_exps_mark_used(sql->sa, rel, l); - rel_mark_used(sql, rel->l, 0); + rel_mark_used(sql, l, 0); /* based on child check set expression list */ if (first && is_project(l->op) && need_distinct(l)) positional_exps_mark_used(l, rel); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - add exp2str
Changeset: eba9c8b0cdfc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/eba9c8b0cdfc Modified Files: sql/server/rel_dump.c sql/server/rel_dump.h sql/server/rel_schema.c Branch: default Log Message: add exp2str test that we never have more than just the expression in a check constraint. diffs (64 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -383,6 +383,34 @@ cleanup: return fres; } +str +exp2str( mvc *sql, sql_exp *exp) +{ + buffer *b = NULL; + stream *s = NULL; + char *res = NULL; + + b = buffer_create(1024); + if(b == NULL) + goto cleanup; + s = buffer_wastream(b, "exp_dump"); + if(s == NULL) + goto cleanup; + + exp_print(sql, s, exp, 0, NULL, 0, 0, 0); + res = buffer_get_buf(b); + +cleanup: + if(b) + buffer_destroy(b); + if(s) + close_stream(s); + + char* fres = SA_STRDUP(sql->sa, res); + free (res); + return fres; +} + static void exps_print(mvc *sql, stream *fout, list *exps, int depth, list *refs, int alias, int brackets, int decorate) { diff --git a/sql/server/rel_dump.h b/sql/server/rel_dump.h --- a/sql/server/rel_dump.h +++ b/sql/server/rel_dump.h @@ -20,6 +20,7 @@ extern void rel_print_(mvc *sql, stream extern void rel_print_refs(mvc *sql, stream* fout, sql_rel *rel, int depth, list *refs, int decorate); extern str rel2str( mvc *sql, sql_rel *rel); +extern str exp2str( mvc *sql, sql_exp *exp); extern sql_rel *rel_read(mvc *sql, char *ra, int *pos, list *refs); extern void exp_print(mvc *sql, stream *fout, sql_exp *e, int depth, list *refs, int comma, int alias, int decorate); diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -388,8 +388,10 @@ sql_rel* create_check_plan(sql_query *qu mvc *sql = query->sql; exp_kind ek = {type_value, card_value, FALSE}; - sql_rel* rel = rel_basetable(sql, t, t->base.name); + sql_rel* rel = rel_basetable(sql, t, t->base.name), *orel = rel; sql_exp *e = rel_logical_value_exp(query, , s->data.sym, sql_sel | sql_no_subquery, ek); + assert(rel == orel); + (void)orel; rel->exps = rel_base_projection(sql, rel, 0); list *pexps = sa_list(sql->sa); pexps = append(pexps, e); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: balanced_union - merged with default
Changeset: 67c2882b41ab for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/67c2882b41ab Branch: balanced_union Log Message: merged with default diffs (12 lines): diff --git a/common/utils/mutils.h b/common/utils/mutils.h --- a/common/utils/mutils.h +++ b/common/utils/mutils.h @@ -14,7 +14,7 @@ #define _MUTILS_H_ #ifdef WIN32 -#if !defined(LIBMUTILS) && !defined(LIBGDK) && !defined(LIBMEROUTIL) +#if !defined(LIBMUTILS) && !defined(LIBGDK) && !defined(LIBMEROUTIL) && !defined(LIBMAPI) #define mutils_export extern __declspec(dllimport) #else #define mutils_export extern __declspec(dllexport) ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - merged with default
Changeset: 716f54fcbe17 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/716f54fcbe17 Branch: label Log Message: merged with default diffs (12 lines): diff --git a/common/utils/mutils.h b/common/utils/mutils.h --- a/common/utils/mutils.h +++ b/common/utils/mutils.h @@ -14,7 +14,7 @@ #define _MUTILS_H_ #ifdef WIN32 -#if !defined(LIBMUTILS) && !defined(LIBGDK) && !defined(LIBMEROUTIL) +#if !defined(LIBMUTILS) && !defined(LIBGDK) && !defined(LIBMEROUTIL) && !defined(LIBMAPI) #define mutils_export extern __declspec(dllimport) #else #define mutils_export extern __declspec(dllexport) ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - add missing exception in the mutils.h file fo...
Changeset: f308ba3e2015 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f308ba3e2015 Modified Files: common/utils/mutils.h Branch: default Log Message: add missing exception in the mutils.h file for libmapi diffs (12 lines): diff --git a/common/utils/mutils.h b/common/utils/mutils.h --- a/common/utils/mutils.h +++ b/common/utils/mutils.h @@ -14,7 +14,7 @@ #define _MUTILS_H_ #ifdef WIN32 -#if !defined(LIBMUTILS) && !defined(LIBGDK) && !defined(LIBMEROUTIL) +#if !defined(LIBMUTILS) && !defined(LIBGDK) && !defined(LIBMEROUTIL) && !defined(LIBMAPI) #define mutils_export extern __declspec(dllimport) #else #define mutils_export extern __declspec(dllexport) ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: balanced_union - merged with default
Changeset: 1bc54d4a99ea for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1bc54d4a99ea Branch: balanced_union Log Message: merged with default diffs (28 lines): diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -34,6 +34,7 @@ target_link_libraries(mutils target_compile_definitions(mutils PRIVATE LIBMUTILS LIBGDK + LIBMAPI LIBMEROUTIL) set_target_properties(mutils diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -409,11 +409,11 @@ load_key(sql_trans *tr, sql_table *t, re nk->t = t; switch (ktype) { - case ckey: + case ckey: { str ch = (char*)store->table_api.table_fetch_value(rt_keys, find_sql_column(keys, "check")); if (!strNil(ch)) nk->check =_STRDUP(ch); - break; + } break; case ukey: case unndkey: case pkey: { ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - merged with default
Changeset: e770355f40e2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/e770355f40e2 Branch: label Log Message: merged with default diffs (28 lines): diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -34,6 +34,7 @@ target_link_libraries(mutils target_compile_definitions(mutils PRIVATE LIBMUTILS LIBGDK + LIBMAPI LIBMEROUTIL) set_target_properties(mutils diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -409,11 +409,11 @@ load_key(sql_trans *tr, sql_table *t, re nk->t = t; switch (ktype) { - case ckey: + case ckey: { str ch = (char*)store->table_api.table_fetch_value(rt_keys, find_sql_column(keys, "check")); if (!strNil(ch)) nk->check =_STRDUP(ch); - break; + } break; case ukey: case unndkey: case pkey: { ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - add LIBMAPI to cmake compile options of mutil...
Changeset: 1578ec86496f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1578ec86496f Modified Files: common/utils/CMakeLists.txt Branch: default Log Message: add LIBMAPI to cmake compile options of mutils. (we could remove those from the static libs!!) diffs (11 lines): diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -34,6 +34,7 @@ target_link_libraries(mutils target_compile_definitions(mutils PRIVATE LIBMUTILS LIBGDK + LIBMAPI LIBMEROUTIL) set_target_properties(mutils ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - fix compilation, no declarations in switch/ca...
Changeset: 4f01106a2cb8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/4f01106a2cb8 Modified Files: sql/storage/store.c Branch: default Log Message: fix compilation, no declarations in switch/case statements diffs (17 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -409,11 +409,11 @@ load_key(sql_trans *tr, sql_table *t, re nk->t = t; switch (ktype) { - case ckey: + case ckey: { str ch = (char*)store->table_api.table_fetch_value(rt_keys, find_sql_column(keys, "check")); if (!strNil(ch)) nk->check =_STRDUP(ch); - break; + } break; case ukey: case unndkey: case pkey: { ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: balanced_union - merged with default
Changeset: 9f4fbec3b181 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9f4fbec3b181 Modified Files: sql/test/emptydb/Tests/check.stable.out.int128 Branch: balanced_union Log Message: merged with default diffs (truncated from 1181 to 300 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 @@ -717,11 +717,11 @@ int64_t mapi_rows_affected(MapiHdl hdl) MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence) __attribute__((__nonnull__(1))); MapiHdl mapi_send(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit) __attribute__((__nonnull__(1))); -void mapi_set_application_name(const char *name); MapiMsg mapi_set_columnar_protocol(Mapi mid, bool columnar_protocol) __attribute__((__nonnull__(1))); MapiMsg mapi_set_size_header(Mapi mid, bool value) __attribute__((__nonnull__(1))); MapiMsg mapi_set_time_zone(Mapi mid, int seconds_east_of_utc) __attribute__((__nonnull__(1))); MapiMsg mapi_set_timeout(Mapi mid, unsigned int timeout, bool (*callback)(void *), void *callback_data) __attribute__((__nonnull__(1))); +void mapi_setclientprefix(Mapi mid, const char *prefix); void mapi_setfilecallback(Mapi mid, char *(*getfunc)(void *priv, const char *filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void *priv, const char *filename, const void *data, size_t size), void *priv) __attribute__((__nonnull__(1))); void mapi_setfilecallback2(Mapi mid, char *(*getfunc)(void *priv, const char *filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void *priv, const char *filename, bool binary, const void *data, size_t size), void *priv) __attribute__((__nonnull__(1))); Mapi mapi_settings(msettings *settings) __attribute__((__nonnull__(1))); diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -1131,14 +1131,15 @@ dump_column_definition(Mapi mid, stream "SELECT kc.name, " /* 0 */ "kc.nr, " /* 1 */ "k.name, " /* 2 */ - "kc.id "/* 3 */ + "kc.id, " /* 3 */ + "k.type " /* 4 */ "FROM sys.objects kc, " "sys.keys k, " "sys.schemas s, " "sys._tables t " "WHERE kc.id = k.id " "AND k.table_id = t.id " - "AND k.type = 1 " + "AND k.type in (1, 3) " "AND t.schema_id = s.id " "AND s.name = '%s' " "AND t.name = '%s' " @@ -1150,6 +1151,7 @@ dump_column_definition(Mapi mid, stream const char *c_column = mapi_fetch_field(hdl, 0); const char *kc_nr = mapi_fetch_field(hdl, 1); const char *k_name = mapi_fetch_field(hdl, 2); + const char *k_type = mapi_fetch_field(hdl, 4); if (mapi_error(mid)) goto bailout; @@ -1161,7 +1163,7 @@ dump_column_definition(Mapi mid, stream mnstr_printf(sqlf, "CONSTRAINT "); dquoted_print(sqlf, k_name, " "); } - mnstr_printf(sqlf, "UNIQUE ("); + mnstr_printf(sqlf, "UNIQUE%s (", strcmp(k_type, "1") == 0 ? "" : " NULLS NOT DISTINCT"); cnt = 1; } else mnstr_printf(sqlf, ", "); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3682,7 +3682,6 @@ main(int argc, char **argv) } else { mid = mapi_mapi(host, port, user, passwd, language, dbname); } - mapi_set_application_name("mclient"); free(user_allocated); user_allocated = NULL; free(passwd_allocated); diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c --- a/clients/mapiclient/msqldump.c +++ b/clients/mapiclient/msqldump.c @@ -237,7 +237,6 @@ main(int argc, char **argv) } else { mid = mapi_mapi(host, port, user, passwd, "sql", dbname); } - mapi_set_application_name("msqldump"); free(user_allocated); user_allocated = NULL; free(passwd_allocated); diff --git a/clients/mapilib/connect.c b/clients/mapilib/connect.c --- a/clients/mapilib/connect.c +++ b/clients/mapilib/connect.c @@ -381,10 +381,27 @@
MonetDB: balanced_union - use mat.packIncrement to create multi ...
Changeset: 27118ee8afe4 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/27118ee8afe4 Modified Files: monetdb5/optimizer/opt_support.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/test/remote/Tests/partition_elim.test sql/test/remote/Tests/remote_info_missing.test Branch: balanced_union Log Message: use mat.packIncrement to create multi unions diffs (194 lines): diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c --- a/monetdb5/optimizer/opt_support.c +++ b/monetdb5/optimizer/opt_support.c @@ -264,6 +264,8 @@ isUpdateInstruction(InstrPtr p) && (getFunctionId(p) == appendRef || getFunctionId(p) == replaceRef || getFunctionId(p) == deleteRef)) return TRUE; + if (getModuleId(p) == matRef) + return TRUE; return FALSE; } diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -3877,7 +3877,7 @@ rel2bin_munion(backend *be, sql_rel *rel list *l, *rstmts; node *n, *m; stmt *rel_stmt = NULL, *sub; - int i, len = 0; + int i, len = 0, nr_unions = list_length((list*)rel->l); /* convert to stmt and store the munion operands in rstmts list */ rstmts = sa_list(sql->sa); @@ -3904,13 +3904,13 @@ rel2bin_munion(backend *be, sql_rel *rel const char *rnme = table_name(sql->sa, s); const char *nme = column_name(sql->sa, s); /* create a const column also from the first stmt */ - s = create_const_column(be, s); + s = stmt_pack(be, column(be, s), nr_unions); /* for every other rstmt */ for (m = rstmts->h->next; m; m = m->next) { stmt *t = list_fetch(((stmt*)m->data)->op4.lval, i); - if ( t == NULL) + if (t == NULL) return NULL; - s = stmt_append(be, s, t); + s = stmt_pack_add(be, s, column(be, t)); if (s == NULL) return NULL; } diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -3447,6 +3447,78 @@ stmt_append_bulk(backend *be, stmt *c, l } stmt * +stmt_pack(backend *be, stmt *c, int n) +{ + MalBlkPtr mb = be->mb; + InstrPtr q = NULL; + + if (c == NULL || c->nr < 0) + goto bailout; + q = newStmtArgs(mb, matRef, packIncrementRef, 3); + if (q == NULL) + goto bailout; + q = pushArgument(mb, q, c->nr); + q = pushInt(mb, q, n); + bool enabled = be->mvc->sa->eb.enabled; + be->mvc->sa->eb.enabled = false; + stmt *s = stmt_create(be->mvc->sa, st_append); + be->mvc->sa->eb.enabled = enabled; + if(!s) { + freeInstruction(q); + goto bailout; + } + s->op1 = c; + s->nrcols = c->nrcols; + s->key = c->key; + s->nr = getDestVar(q); + s->q = q; + pushInstruction(mb, q); + return s; + + bailout: + if (be->mvc->sa->eb.enabled) + eb_error(>mvc->sa->eb, be->mvc->errstr[0] ? be->mvc->errstr : mb->errors ? mb->errors : *GDKerrbuf ? GDKerrbuf : "out of memory", 1000); + return NULL; + +} + +stmt * +stmt_pack_add(backend *be, stmt *c, stmt *a) +{ + MalBlkPtr mb = be->mb; + InstrPtr q = NULL; + + if (c == NULL || a == NULL || c->nr < 0 || a->nr < 0) + goto bailout; + q = newStmtArgs(mb, matRef, packIncrementRef, 3); + if (q == NULL) + goto bailout; + q = pushArgument(mb, q, c->nr); + q = pushArgument(mb, q, a->nr); + bool enabled = be->mvc->sa->eb.enabled; + be->mvc->sa->eb.enabled = false; + stmt *s = stmt_create(be->mvc->sa, st_append); + be->mvc->sa->eb.enabled = enabled; + if(!s) { + freeInstruction(q); + goto bailout; + } + s->op1 = c; + s->op2 = a; + s->nrcols = c->nrcols; + s->key = c->key; + s->nr = getDestVar(q); + s->q = q; + pushInstruction(mb, q); + return s; + + bailout: + if (be->mvc->sa->eb.enabled) + eb_error(>mvc->sa->eb, be->mvc->errstr[0] ? be->mvc->errstr : mb->errors ? mb->errors : *GDKerrbuf ? GDKerrbuf : "out of memory", 1000); + return NULL; +} + +stmt * stmt_claim(backend *be, sql_table *t, stmt *cnt) { MalBlkPtr mb = be->mb; diff --git a/sql/backends/monet5/sql_statement.h b/sql/backends/monet5/sql_statement.h --- a/sql/backends/monet5/sql_statement.h +++ b/sql/backends/monet5/sql_statement.h
MonetDB: label - merged with default
Changeset: 030f1c61a2a5 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/030f1c61a2a5 Branch: label Log Message: merged with default diffs (truncated from 408 to 300 lines): diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -1131,14 +1131,15 @@ dump_column_definition(Mapi mid, stream "SELECT kc.name, " /* 0 */ "kc.nr, " /* 1 */ "k.name, " /* 2 */ - "kc.id "/* 3 */ + "kc.id, " /* 3 */ + "k.type " /* 4 */ "FROM sys.objects kc, " "sys.keys k, " "sys.schemas s, " "sys._tables t " "WHERE kc.id = k.id " "AND k.table_id = t.id " - "AND k.type = 1 " + "AND k.type in (1, 3) " "AND t.schema_id = s.id " "AND s.name = '%s' " "AND t.name = '%s' " @@ -1150,6 +1151,7 @@ dump_column_definition(Mapi mid, stream const char *c_column = mapi_fetch_field(hdl, 0); const char *kc_nr = mapi_fetch_field(hdl, 1); const char *k_name = mapi_fetch_field(hdl, 2); + const char *k_type = mapi_fetch_field(hdl, 4); if (mapi_error(mid)) goto bailout; @@ -1161,7 +1163,7 @@ dump_column_definition(Mapi mid, stream mnstr_printf(sqlf, "CONSTRAINT "); dquoted_print(sqlf, k_name, " "); } - mnstr_printf(sqlf, "UNIQUE ("); + mnstr_printf(sqlf, "UNIQUE%s (", strcmp(k_type, "1") == 0 ? "" : " NULLS NOT DISTINCT"); cnt = 1; } else mnstr_printf(sqlf, ", "); diff --git a/clients/mapilib/connect.c b/clients/mapilib/connect.c --- a/clients/mapilib/connect.c +++ b/clients/mapilib/connect.c @@ -381,6 +381,22 @@ connect_socket_tcp_addr(Mapi mid, struct return s; } +static const char * +base_name(const char *file) +{ + char *p = strrchr(file, '/'); +#ifdef _MSC_VER + char *q = strrchr(file, '\\'); + if (q != NULL) { + if (p == NULL || p < q) + p = q; + } +#endif + if (p) + return p + 1; + return file; +} + static void send_all_clientinfo(Mapi mid) { @@ -403,7 +419,7 @@ send_all_clientinfo(Mapi mid) application_name = get_bin_path(); if (application_name) { free_this = strdup(application_name); - application_name = (const char*) basename((char*)application_name); + application_name = base_name(application_name); } } const char *client_remark = msetting_string(mp, MP_CLIENT_REMARK); diff --git a/clients/odbc/driver/SQLSpecialColumns.c b/clients/odbc/driver/SQLSpecialColumns.c --- a/clients/odbc/driver/SQLSpecialColumns.c +++ b/clients/odbc/driver/SQLSpecialColumns.c @@ -209,7 +209,7 @@ MNDBSpecialColumns(ODBCStmt *stmt, } /* construct the query */ - querylen = 6100 + (sch ? strlen(sch) : 0) + (tab ? strlen(tab) : 0); + querylen = 6130 + (sch ? strlen(sch) : 0) + (tab ? strlen(tab) : 0); query = malloc(querylen); if (query == NULL) goto nomem; @@ -235,9 +235,9 @@ MNDBSpecialColumns(ODBCStmt *stmt, "SELECT \"id\", \"table_id\" FROM \"sys\".\"keys\" WHERE \"type\" = 0 " "UNION ALL " /* and first unique constraint of a table when table has no pkey */ - "SELECT \"id\", \"table_id\" FROM \"sys\".\"keys\" WHERE \"type\" = 1 " + "SELECT \"id\", \"table_id\" FROM \"sys\".\"keys\" WHERE \"type\" IN (1, 3) " "AND \"table_id\" NOT IN (select \"table_id\" from \"sys\".\"keys\" where \"type\" = 0) " - "AND (\"table_id\", \"id\") IN (select \"table_id\", min(\"id\") from \"sys\".\"keys\" where \"type\" = 1 group by \"table_id\"))", + "AND (\"table_id\", \"id\") IN (select \"table_id\", min(\"id\") from \"sys\".\"keys\" where \"type\" IN (1, 3) group by \"table_id\"))", querylen - pos); if (inclTmpKey) { /* we must also include the primary key or unique constraint of local temporary tables which
MonetDB: label - merged with default
Changeset: c2a94e952e57 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c2a94e952e57 Branch: label Log Message: merged with default diffs (truncated from 770 to 300 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 @@ -717,11 +717,11 @@ int64_t mapi_rows_affected(MapiHdl hdl) MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence) __attribute__((__nonnull__(1))); MapiHdl mapi_send(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit) __attribute__((__nonnull__(1))); -void mapi_set_application_name(const char *name); MapiMsg mapi_set_columnar_protocol(Mapi mid, bool columnar_protocol) __attribute__((__nonnull__(1))); MapiMsg mapi_set_size_header(Mapi mid, bool value) __attribute__((__nonnull__(1))); MapiMsg mapi_set_time_zone(Mapi mid, int seconds_east_of_utc) __attribute__((__nonnull__(1))); MapiMsg mapi_set_timeout(Mapi mid, unsigned int timeout, bool (*callback)(void *), void *callback_data) __attribute__((__nonnull__(1))); +void mapi_setclientprefix(Mapi mid, const char *prefix); void mapi_setfilecallback(Mapi mid, char *(*getfunc)(void *priv, const char *filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void *priv, const char *filename, const void *data, size_t size), void *priv) __attribute__((__nonnull__(1))); void mapi_setfilecallback2(Mapi mid, char *(*getfunc)(void *priv, const char *filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void *priv, const char *filename, bool binary, const void *data, size_t size), void *priv) __attribute__((__nonnull__(1))); Mapi mapi_settings(msettings *settings) __attribute__((__nonnull__(1))); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3682,7 +3682,6 @@ main(int argc, char **argv) } else { mid = mapi_mapi(host, port, user, passwd, language, dbname); } - mapi_set_application_name("mclient"); free(user_allocated); user_allocated = NULL; free(passwd_allocated); diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c --- a/clients/mapiclient/msqldump.c +++ b/clients/mapiclient/msqldump.c @@ -237,7 +237,6 @@ main(int argc, char **argv) } else { mid = mapi_mapi(host, port, user, passwd, "sql", dbname); } - mapi_set_application_name("msqldump"); free(user_allocated); user_allocated = NULL; free(passwd_allocated); diff --git a/clients/mapilib/connect.c b/clients/mapilib/connect.c --- a/clients/mapilib/connect.c +++ b/clients/mapilib/connect.c @@ -385,6 +385,7 @@ static void send_all_clientinfo(Mapi mid) { msettings *mp = mid->settings; + void *free_this = NULL; if (!mid->clientinfo_supported) return; if (!msetting_bool(mp, MP_CLIENT_INFO)) @@ -398,9 +399,13 @@ send_all_clientinfo(Mapi mid) hostname[sizeof(hostname) - 1] = '\0'; } const char *application_name = msetting_string(mp, MP_CLIENT_APPLICATION); - if (!application_name[0]) - application_name = mapi_application_name; - const char *client_library = "libmapi " MONETDB_VERSION; + if (!application_name[0]) { + application_name = get_bin_path(); + if (application_name) { + free_this = strdup(application_name); + application_name = (const char*) basename((char*)application_name); + } + } const char *client_remark = msetting_string(mp, MP_CLIENT_REMARK); long pid = getpid(); @@ -411,7 +416,10 @@ send_all_clientinfo(Mapi mid) reallocprintf(, , , "ClientHostName=%s\n", hostname); if (application_name[0]) reallocprintf(, , , "ApplicationName=%s\n", application_name); - reallocprintf(, , , "ClientLibrary=%s\n", client_library); + reallocprintf(, , , "ClientLibrary="); + if (mid->clientprefix) + reallocprintf(, , , "%s / ", mid->clientprefix); + reallocprintf(, , , "libmapi %s\n", MONETDB_VERSION); if (client_remark[0]) reallocprintf(, , , "ClientRemark=%s\n", client_remark); if (pid > 0) @@ -425,7 +433,9 @@ send_all_clientinfo(Mapi mid) if (pos <= cap) mapi_Xcommand(mid, "clientinfo", buf); + free(buf); + free(free_this); } static MapiMsg diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c --- a/clients/mapilib/mapi.c +++ b/clients/mapilib/mapi.c @@ -794,8 +794,6 @@ static void mapi_store_bind(struct MapiR static ATOMIC_FLAG mapi_initialized = ATOMIC_FLAG_INIT; -char mapi_application_name[256] = { 0 }; - /* * Blocking * @@
MonetDB: nilmask - merged with default
Changeset: 26852a81589d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/26852a81589d Branch: nilmask Log Message: merged with default diffs (18 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 @@ -1256,11 +1256,10 @@ int scanner_symbol(mvc * c, int cur) lc->rs->buf[lc->rs->pos + lc->yycur - 2] = '<'; lc->rs->buf[lc->rs->pos + lc->yycur - 1] = '>'; return scanner_token( lc, COMPARISON); + } else { + utf8_putchar(lc, cur); //put the char back } - else - lc->yycur--; - cur = '!'; - break; + return scanner_token(lc, '!'); case '<': lc->started = 1; cur = scanner_getc(lc); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: nilmask - merged with default
Changeset: 61da04a045a5 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/61da04a045a5 Modified Files: sql/backends/monet5/rel_bin.c sql/include/sql_catalog.h sql/storage/sql_storage.h sql/storage/store.c Branch: nilmask Log Message: merged with default diffs (truncated from 1797 to 300 lines): diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -12,10 +12,3 @@ References to the old MonetDB5 name have been removed. All packages are now just MonetDB. -* Wed May 8 2024 Niels Nes -- Add support for select exp, count(*) group by 1 order by 1; ie. using - numeric references Added support for group by all and order by all. The - later is ordering on all columns of the selection. The group by all - finds all expressions from the selections which aren't aggregations - and groups on those. All can also be replaced by '*'. - diff --git a/clients/odbc/ChangeLog b/clients/odbc/ChangeLog --- a/clients/odbc/ChangeLog +++ b/clients/odbc/ChangeLog @@ -9,7 +9,6 @@ CERTHASH / Server Certificate Hash = sha256:HEXDIGITS CLIENTKEY / Client Key = PATH CLIENTCERT / Client Certificate = PATH -AUTOCOMMIT / Autocommit = ON/OFF - Several more connection properties have been made configurable: SCHEMA / Schema = NAME TIMEZONE / Time Zone = Minutes East Of UTC @@ -17,8 +16,10 @@ LOGFILE / Log File = PATH LOGINTIMEOUT / Login Timeout = MILLISECONDS CONNECTIONTIMEOUT / Connection Timeout = MILLISECONDS +AUTOCOMMIT / Autocommit = ON/OFF SOCK / Unix Socket = PATH (unix only) -- SQLBrowseConnect adds On/Off suggestions to boolean settings +- SQLBrowseConnect() adds On/Off suggestions to boolean settings and prioritizes the DATABASE attribute if it notices monetdbd requires one. Apart from that only UID/User and PWD/Password are required, all others have sensible defaults. + diff --git a/sql/ChangeLog b/sql/ChangeLog --- a/sql/ChangeLog +++ b/sql/ChangeLog @@ -1,10 +1,20 @@ # ChangeLog file for sql # This file is updated with Maddlog -* Mon May 13 2024 Niels Nes +* Mon May 13 2024 Niels Nes - Extended sys.generate_series() to generate dates. Added 2 new functions: - sys.generate_series(first date, "limit" date, stepsize interval month) - sys.generate_series(first date, "limit" date, stepsize interval day) + sys.generate_series(first date, "limit" date, stepsize interval month) and + sys.generate_series(first date, "limit" date, stepsize interval day). + +* Wed May 8 2024 Niels Nes +- Added support for select exp, count(*) group by 1 order by 1; + ie. using numeric references in group by clause. +- Added support for GROUP BY ALL. This finds all expressions from the + selections which aren't aggregations and groups on those. + At least one aggregation must be specified. + The ALL keyword can also be replaced by '*', so: GROUP BY *. +- Added support for ORDER BY ALL. This orders on all columns of the selection. + The ALL keyword can also be replaced by '*', so: ORDER BY *. * Thu May 2 2024 Martin van Dinther - Removed the obsolete ANALYZE statement syntax options: SAMPLE nn and diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -16,6 +16,7 @@ #include "rel_rel.h" #include "rel_basetable.h" #include "rel_exp.h" +#include "rel_dump.h" #include "rel_psm.h" #include "rel_prop.h" #include "rel_select.h" @@ -4993,6 +4994,35 @@ sql_insert_triggers(backend *be, sql_tab return res; } +static void +sql_insert_check(backend *be, sql_key *key, sql_rel *inserts, list *refs) +{ + mvc *sql = be->mvc; + node *m, *n; + + inserts = rel_copy(sql, inserts, 1); + list* exps = inserts->exps; + + for (n = ol_first_node(key->t->columns), m = exps->h; n && m; + n = n->next, m = m->next) { + sql_exp *i = m->data; + sql_column *c = n->data; + i->alias.rname= sa_strdup(sql->sa, c->t->base.name); + i->alias.name= sa_strdup(sql->sa, c->base.name); + } + + int pos = 0; + sql_rel* rel = rel_read(sql, sa_strdup(sql->sa, key->check), , sa_list(sql->sa)); + rel->l = inserts; + stmt* s = subrel_bin(be, rel, refs); + sql_subtype *bt = sql_bind_localtype("bit"); + s = stmt_uselect(be, column(be, s), stmt_atom(be, atom_zero_value(sql->sa, bt)), cmp_equal, NULL, 0, 1); + sql_subfunc *cnt = sql_bind_func(sql, "sys", "count", sql_bind_localtype("void"), NULL, F_AGGR, true, true); + s = stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1); + char *msg = sa_message(sql->sa, SQLSTATE(40002) "INSERT INTO: CHECK constraint violated
MonetDB: label - merged with default
Changeset: 6e9997ee7216 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/6e9997ee7216 Branch: label Log Message: merged with default diffs (18 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 @@ -1256,11 +1256,10 @@ int scanner_symbol(mvc * c, int cur) lc->rs->buf[lc->rs->pos + lc->yycur - 2] = '<'; lc->rs->buf[lc->rs->pos + lc->yycur - 1] = '>'; return scanner_token( lc, COMPARISON); + } else { + utf8_putchar(lc, cur); //put the char back } - else - lc->yycur--; - cur = '!'; - break; + return scanner_token(lc, '!'); case '<': lc->started = 1; cur = scanner_getc(lc); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - cleanup != handling
Changeset: 0d32195c0b18 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/0d32195c0b18 Modified Files: sql/server/sql_scan.c Branch: default Log Message: cleanup != handling diffs (18 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 @@ -1256,11 +1256,10 @@ int scanner_symbol(mvc * c, int cur) lc->rs->buf[lc->rs->pos + lc->yycur - 2] = '<'; lc->rs->buf[lc->rs->pos + lc->yycur - 1] = '>'; return scanner_token( lc, COMPARISON); + } else { + utf8_putchar(lc, cur); //put the char back } - else - lc->yycur--; - cur = '!'; - break; + return scanner_token(lc, '!'); case '<': lc->started = 1; cur = scanner_getc(lc); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: balanced_union - merged with default
Changeset: 7d0c1a66f48b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/7d0c1a66f48b Modified Files: sql/backends/monet5/rel_bin.c sql/server/rel_dump.c sql/server/rel_rel.h sql/server/rel_select.c sql/server/sql_partition.c sql/test/emptydb/Tests/check.stable.out.int128 Branch: balanced_union Log Message: merged with default diffs (truncated from 1797 to 300 lines): diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -12,10 +12,3 @@ References to the old MonetDB5 name have been removed. All packages are now just MonetDB. -* Wed May 8 2024 Niels Nes -- Add support for select exp, count(*) group by 1 order by 1; ie. using - numeric references Added support for group by all and order by all. The - later is ordering on all columns of the selection. The group by all - finds all expressions from the selections which aren't aggregations - and groups on those. All can also be replaced by '*'. - diff --git a/clients/odbc/ChangeLog b/clients/odbc/ChangeLog --- a/clients/odbc/ChangeLog +++ b/clients/odbc/ChangeLog @@ -9,7 +9,6 @@ CERTHASH / Server Certificate Hash = sha256:HEXDIGITS CLIENTKEY / Client Key = PATH CLIENTCERT / Client Certificate = PATH -AUTOCOMMIT / Autocommit = ON/OFF - Several more connection properties have been made configurable: SCHEMA / Schema = NAME TIMEZONE / Time Zone = Minutes East Of UTC @@ -17,8 +16,10 @@ LOGFILE / Log File = PATH LOGINTIMEOUT / Login Timeout = MILLISECONDS CONNECTIONTIMEOUT / Connection Timeout = MILLISECONDS +AUTOCOMMIT / Autocommit = ON/OFF SOCK / Unix Socket = PATH (unix only) -- SQLBrowseConnect adds On/Off suggestions to boolean settings +- SQLBrowseConnect() adds On/Off suggestions to boolean settings and prioritizes the DATABASE attribute if it notices monetdbd requires one. Apart from that only UID/User and PWD/Password are required, all others have sensible defaults. + diff --git a/sql/ChangeLog b/sql/ChangeLog --- a/sql/ChangeLog +++ b/sql/ChangeLog @@ -1,10 +1,20 @@ # ChangeLog file for sql # This file is updated with Maddlog -* Mon May 13 2024 Niels Nes +* Mon May 13 2024 Niels Nes - Extended sys.generate_series() to generate dates. Added 2 new functions: - sys.generate_series(first date, "limit" date, stepsize interval month) - sys.generate_series(first date, "limit" date, stepsize interval day) + sys.generate_series(first date, "limit" date, stepsize interval month) and + sys.generate_series(first date, "limit" date, stepsize interval day). + +* Wed May 8 2024 Niels Nes +- Added support for select exp, count(*) group by 1 order by 1; + ie. using numeric references in group by clause. +- Added support for GROUP BY ALL. This finds all expressions from the + selections which aren't aggregations and groups on those. + At least one aggregation must be specified. + The ALL keyword can also be replaced by '*', so: GROUP BY *. +- Added support for ORDER BY ALL. This orders on all columns of the selection. + The ALL keyword can also be replaced by '*', so: ORDER BY *. * Thu May 2 2024 Martin van Dinther - Removed the obsolete ANALYZE statement syntax options: SAMPLE nn and diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -16,6 +16,7 @@ #include "rel_rel.h" #include "rel_basetable.h" #include "rel_exp.h" +#include "rel_dump.h" #include "rel_psm.h" #include "rel_prop.h" #include "rel_select.h" @@ -5054,6 +5055,35 @@ sql_insert_triggers(backend *be, sql_tab return res; } +static void +sql_insert_check(backend *be, sql_key *key, sql_rel *inserts, list *refs) +{ + mvc *sql = be->mvc; + node *m, *n; + + inserts = rel_copy(sql, inserts, 1); + list* exps = inserts->exps; + + for (n = ol_first_node(key->t->columns), m = exps->h; n && m; + n = n->next, m = m->next) { + sql_exp *i = m->data; + sql_column *c = n->data; + i->alias.rname= sa_strdup(sql->sa, c->t->base.name); + i->alias.name= sa_strdup(sql->sa, c->base.name); + } + + int pos = 0; + sql_rel* rel = rel_read(sql, sa_strdup(sql->sa, key->check), , sa_list(sql->sa)); + rel->l = inserts; + stmt* s = subrel_bin(be, rel, refs); + sql_subtype *bt = sql_bind_localtype("bit"); + s = stmt_uselect(be, column(be, s), stmt_atom(be, atom_zero_value(sql->sa, bt)), cmp_equal, NULL, 0, 1); + sql_subfunc *cnt = sql_bind_func(sql, "sys", "count", sql_bind_localtype("void"), NULL, F_AGGR, true, true); + s = stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1); + char *msg
MonetDB: balanced_union - dup instead of steal, fixes crash in n...
Changeset: 23cb60d4aa9e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/23cb60d4aa9e Modified Files: sql/server/rel_optimize_proj.c sql/server/rel_optimize_sel.c Branch: balanced_union Log Message: dup instead of steal, fixes crash in name_find_column in tpcds tests diffs (34 lines): diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -2020,8 +2020,8 @@ rel_push_aggr_down_n_arry(visitor *v, sq list *nl = sa_list(v->sql->sa); for (node *n = ((list*)u->l)->h; n; n = n->next) { - r = n->data; - n->data = NULL; /* clean list as we steal the relation r, stealing is needed else (with multiple references) double project cleanup fails */ + r = rel_dup(n->data); + //n->data = NULL; /* clean list as we steal the relation r, stealing is needed else (with multiple references) double project cleanup fails */ if (!is_project(r->op)) r = rel_project(v->sql->sa, r, rel_projections(v->sql, r, NULL, 1, 1)); @@ -2047,6 +2047,7 @@ rel_push_aggr_down_n_arry(visitor *v, sq r->nrcols = list_length(r->exps); set_processed(r); + assert(r); append(nl, r); } 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 @@ -3339,7 +3339,7 @@ rel_push_select_down(visitor *v, sql_rel node *n; if (rel_is_ref(rel)) { - if (is_select(rel->op) && rel->exps) { + if (is_select(rel->op) && !list_empty(rel->exps)) { /* add inplace empty select */ sql_rel *l = rel_select(v->sql->sa, rel->l, NULL); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - merged with default
Changeset: 1801b604141e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1801b604141e Modified Files: sql/backends/monet5/rel_bin.c sql/server/rel_basetable.c sql/server/rel_dump.c sql/server/rel_rel.h sql/server/rel_schema.c sql/server/rel_select.c sql/server/sql_mvc.c sql/server/sql_mvc.h Branch: label Log Message: merged with default diffs (truncated from 1797 to 300 lines): diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -12,10 +12,3 @@ References to the old MonetDB5 name have been removed. All packages are now just MonetDB. -* Wed May 8 2024 Niels Nes -- Add support for select exp, count(*) group by 1 order by 1; ie. using - numeric references Added support for group by all and order by all. The - later is ordering on all columns of the selection. The group by all - finds all expressions from the selections which aren't aggregations - and groups on those. All can also be replaced by '*'. - diff --git a/clients/odbc/ChangeLog b/clients/odbc/ChangeLog --- a/clients/odbc/ChangeLog +++ b/clients/odbc/ChangeLog @@ -9,7 +9,6 @@ CERTHASH / Server Certificate Hash = sha256:HEXDIGITS CLIENTKEY / Client Key = PATH CLIENTCERT / Client Certificate = PATH -AUTOCOMMIT / Autocommit = ON/OFF - Several more connection properties have been made configurable: SCHEMA / Schema = NAME TIMEZONE / Time Zone = Minutes East Of UTC @@ -17,8 +16,10 @@ LOGFILE / Log File = PATH LOGINTIMEOUT / Login Timeout = MILLISECONDS CONNECTIONTIMEOUT / Connection Timeout = MILLISECONDS +AUTOCOMMIT / Autocommit = ON/OFF SOCK / Unix Socket = PATH (unix only) -- SQLBrowseConnect adds On/Off suggestions to boolean settings +- SQLBrowseConnect() adds On/Off suggestions to boolean settings and prioritizes the DATABASE attribute if it notices monetdbd requires one. Apart from that only UID/User and PWD/Password are required, all others have sensible defaults. + diff --git a/sql/ChangeLog b/sql/ChangeLog --- a/sql/ChangeLog +++ b/sql/ChangeLog @@ -1,10 +1,20 @@ # ChangeLog file for sql # This file is updated with Maddlog -* Mon May 13 2024 Niels Nes +* Mon May 13 2024 Niels Nes - Extended sys.generate_series() to generate dates. Added 2 new functions: - sys.generate_series(first date, "limit" date, stepsize interval month) - sys.generate_series(first date, "limit" date, stepsize interval day) + sys.generate_series(first date, "limit" date, stepsize interval month) and + sys.generate_series(first date, "limit" date, stepsize interval day). + +* Wed May 8 2024 Niels Nes +- Added support for select exp, count(*) group by 1 order by 1; + ie. using numeric references in group by clause. +- Added support for GROUP BY ALL. This finds all expressions from the + selections which aren't aggregations and groups on those. + At least one aggregation must be specified. + The ALL keyword can also be replaced by '*', so: GROUP BY *. +- Added support for ORDER BY ALL. This orders on all columns of the selection. + The ALL keyword can also be replaced by '*', so: ORDER BY *. * Thu May 2 2024 Martin van Dinther - Removed the obsolete ANALYZE statement syntax options: SAMPLE nn and diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -16,6 +16,7 @@ #include "rel_rel.h" #include "rel_basetable.h" #include "rel_exp.h" +#include "rel_dump.h" #include "rel_psm.h" #include "rel_prop.h" #include "rel_select.h" @@ -5070,6 +5071,35 @@ sql_insert_triggers(backend *be, sql_tab return res; } +static void +sql_insert_check(backend *be, sql_key *key, sql_rel *inserts, list *refs) +{ + mvc *sql = be->mvc; + node *m, *n; + + inserts = rel_copy(sql, inserts, 1); + list* exps = inserts->exps; + + for (n = ol_first_node(key->t->columns), m = exps->h; n && m; + n = n->next, m = m->next) { + sql_exp *i = m->data; + sql_column *c = n->data; + i->alias.rname= sa_strdup(sql->sa, c->t->base.name); + i->alias.name= sa_strdup(sql->sa, c->base.name); + } + + int pos = 0; + sql_rel* rel = rel_read(sql, sa_strdup(sql->sa, key->check), , sa_list(sql->sa)); + rel->l = inserts; + stmt* s = subrel_bin(be, rel, refs); + sql_subtype *bt = sql_bind_localtype("bit"); + s = stmt_uselect(be, column(be, s), stmt_atom(be, atom_zero_value(sql->sa, bt)), cmp_equal, NULL, 0, 1); + sql_subfunc *cnt = sql_bind_func(sql, "sys", "count", sql_bind_localtype("void"), NULL, F_AGGR, true, true); + s = stmt_aggr(be,
MonetDB: default - fixed parser, ie removed useless nonterminal
Changeset: 0efd1c3c463d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/0efd1c3c463d Modified Files: sql/server/sql_parser.y Branch: default Log Message: fixed parser, ie removed useless nonterminal diffs (27 lines): diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -2153,8 +2153,7 @@ column_constraint_type: append_int(l, $4 ); append_int(l, $5 ); $$ = _symbol_create_list( SQL_FOREIGN_KEY, l); } - /*TODO: Implement domain_constraint_type*/ - | CHECK '(' search_condition ')' { $$ = _symbol_create_symbol(SQL_CHECK, $3); } + | CHECK '(' search_condition ')' { $$ = _symbol_create_symbol(SQL_CHECK, $3); } ; table_constraint_type: @@ -2175,11 +2174,8 @@ table_constraint_type: append_int(l, $7 ); append_int(l, $8 ); $$ = _symbol_create_list( SQL_FOREIGN_KEY, l); } - /*TODO: Implement domain_constraint_type*/ - | CHECK '(' search_condition ')' { $$ = _symbol_create_symbol(SQL_CHECK, $3); } - ; - -domain_constraint_type: + | CHECK '(' search_condition ')' + { $$ = _symbol_create_symbol(SQL_CHECK, $3); } ; ident_commalist: ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: check - merged with default
Changeset: 1344a9aa61fc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1344a9aa61fc Modified Files: sql/backends/monet5/sql_upgrades.c sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test Branch: check Log Message: merged with default diffs (truncated from 2274 to 300 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -44629,6 +44629,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -49640,7 +49645,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -33164,6 +33164,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -38060,7 +38065,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql 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 @@ -717,6 +717,7 @@ int64_t mapi_rows_affected(MapiHdl hdl) MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence) __attribute__((__nonnull__(1))); MapiHdl mapi_send(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit) __attribute__((__nonnull__(1))); +void mapi_set_application_name(const char *name); MapiMsg mapi_set_columnar_protocol(Mapi mid, bool columnar_protocol) __attribute__((__nonnull__(1))); MapiMsg mapi_set_size_header(Mapi mid, bool value) __attribute__((__nonnull__(1))); MapiMsg mapi_set_time_zone(Mapi mid, int seconds_east_of_utc) __attribute__((__nonnull__(1))); @@ -810,6 +811,7 @@ void MCcloseClient(Client c); Client MCgetClient(int id); Client MCinitClient(oid user, bstream *fin, stream *fout); int MCpushClientInput(Client c, bstream *new_input, int listing, const char *prompt); +void MCsetClientInfo(Client c, const char *property, const char *value); void MCstopClients(Client c); str MCsuspendClient(int id); int MCvalid(Client c); @@ -818,7 +820,7 @@ str MSinitClientPrg(Client cntxt, const void MSresetInstructions(MalBlkPtr mb, int start); void MSresetStack(Client cntxt, MalBlkPtr mb, MalStkPtr glb); void MSresetVariables(MalBlkPtr mb); -void MSscheduleClient(str command, str challenge, bstream *fin, stream *fout, protocol_version protocol, size_t blocksize); +void MSscheduleClient(str command, str peer, str challenge, bstream *fin, stream *fout, protocol_version protocol, size_t blocksize); str OIDXcreateImplementation(Client cntxt, int tpe, BAT *b, int pieces); str OIDXdropImplementation(Client cntxt, BAT *b); str QLOGcalls(BAT **r); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3682,6 +3682,7 @@ main(int argc, char **argv) } else { mid = mapi_mapi(host, port, user, passwd, language, dbname); } + mapi_set_application_name("mclient");
MonetDB: nilmask - merged with default
Changeset: 1705be86c402 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1705be86c402 Modified Files: clients/Tests/MAL-signatures-hge.test clients/Tests/MAL-signatures.test clients/Tests/exports.stable.out sql/backends/monet5/sql.c Branch: nilmask Log Message: merged with default diffs (truncated from 2274 to 300 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -44634,6 +44634,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -49650,7 +49655,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -33169,6 +33169,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -38070,7 +38075,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql 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 @@ -717,6 +717,7 @@ int64_t mapi_rows_affected(MapiHdl hdl) MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence) __attribute__((__nonnull__(1))); MapiHdl mapi_send(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit) __attribute__((__nonnull__(1))); +void mapi_set_application_name(const char *name); MapiMsg mapi_set_columnar_protocol(Mapi mid, bool columnar_protocol) __attribute__((__nonnull__(1))); MapiMsg mapi_set_size_header(Mapi mid, bool value) __attribute__((__nonnull__(1))); MapiMsg mapi_set_time_zone(Mapi mid, int seconds_east_of_utc) __attribute__((__nonnull__(1))); @@ -810,6 +811,7 @@ void MCcloseClient(Client c); Client MCgetClient(int id); Client MCinitClient(oid user, bstream *fin, stream *fout); int MCpushClientInput(Client c, bstream *new_input, int listing, const char *prompt); +void MCsetClientInfo(Client c, const char *property, const char *value); void MCstopClients(Client c); str MCsuspendClient(int id); int MCvalid(Client c); @@ -818,7 +820,7 @@ str MSinitClientPrg(Client cntxt, const void MSresetInstructions(MalBlkPtr mb, int start); void MSresetStack(Client cntxt, MalBlkPtr mb, MalStkPtr glb); void MSresetVariables(MalBlkPtr mb); -void MSscheduleClient(str command, str challenge, bstream *fin, stream *fout, protocol_version protocol, size_t blocksize); +void MSscheduleClient(str command, str peer, str challenge, bstream *fin, stream *fout, protocol_version protocol, size_t blocksize); str OIDXcreateImplementation(Client cntxt, int tpe, BAT *b, int pieces); str OIDXdropImplementation(Client cntxt, BAT *b); str QLOGcalls(BAT **r); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3682,6 +3682,7 @@ main(int argc, char **argv) } else { mid = mapi_mapi(host, port, user, passwd, language, dbname); } + mapi_set_application_name("mclient"); free(user_allocated); user_allocated = NULL; free(passwd_allocated); diff --git
MonetDB: balanced_union - merged with default
Changeset: 4b03a2093cd9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/4b03a2093cd9 Modified Files: sql/test/emptydb/Tests/check.stable.out.int128 Branch: balanced_union Log Message: merged with default diffs (truncated from 2903 to 300 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -44629,6 +44629,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -49640,7 +49645,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -33164,6 +33164,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -38060,7 +38065,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql 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 @@ -717,6 +717,7 @@ int64_t mapi_rows_affected(MapiHdl hdl) MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence) __attribute__((__nonnull__(1))); MapiHdl mapi_send(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit) __attribute__((__nonnull__(1))); +void mapi_set_application_name(const char *name); MapiMsg mapi_set_columnar_protocol(Mapi mid, bool columnar_protocol) __attribute__((__nonnull__(1))); MapiMsg mapi_set_size_header(Mapi mid, bool value) __attribute__((__nonnull__(1))); MapiMsg mapi_set_time_zone(Mapi mid, int seconds_east_of_utc) __attribute__((__nonnull__(1))); @@ -810,6 +811,7 @@ void MCcloseClient(Client c); Client MCgetClient(int id); Client MCinitClient(oid user, bstream *fin, stream *fout); int MCpushClientInput(Client c, bstream *new_input, int listing, const char *prompt); +void MCsetClientInfo(Client c, const char *property, const char *value); void MCstopClients(Client c); str MCsuspendClient(int id); int MCvalid(Client c); @@ -818,7 +820,7 @@ str MSinitClientPrg(Client cntxt, const void MSresetInstructions(MalBlkPtr mb, int start); void MSresetStack(Client cntxt, MalBlkPtr mb, MalStkPtr glb); void MSresetVariables(MalBlkPtr mb); -void MSscheduleClient(str command, str challenge, bstream *fin, stream *fout, protocol_version protocol, size_t blocksize); +void MSscheduleClient(str command, str peer, str challenge, bstream *fin, stream *fout, protocol_version protocol, size_t blocksize); str OIDXcreateImplementation(Client cntxt, int tpe, BAT *b, int pieces); str OIDXdropImplementation(Client cntxt, BAT *b); str QLOGcalls(BAT **r); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3682,6 +3682,7 @@ main(int argc, char **argv) } else { mid = mapi_mapi(host, port, user, passwd, language, dbname); } + mapi_set_application_name("mclient"); free(user_allocated); user_allocated = NULL; free(passwd_allocated); diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c --- a/clients/mapiclient/msqldump.c +++
MonetDB: label - merged with default
Changeset: 3c34f826c698 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3c34f826c698 Modified Files: sql/backends/monet5/sql.c Branch: label Log Message: merged with default diffs (truncated from 2274 to 300 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -44629,6 +44629,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -49640,7 +49645,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -33164,6 +33164,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -38060,7 +38065,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql 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 @@ -717,6 +717,7 @@ int64_t mapi_rows_affected(MapiHdl hdl) MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence) __attribute__((__nonnull__(1))); MapiHdl mapi_send(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit) __attribute__((__nonnull__(1))); +void mapi_set_application_name(const char *name); MapiMsg mapi_set_columnar_protocol(Mapi mid, bool columnar_protocol) __attribute__((__nonnull__(1))); MapiMsg mapi_set_size_header(Mapi mid, bool value) __attribute__((__nonnull__(1))); MapiMsg mapi_set_time_zone(Mapi mid, int seconds_east_of_utc) __attribute__((__nonnull__(1))); @@ -810,6 +811,7 @@ void MCcloseClient(Client c); Client MCgetClient(int id); Client MCinitClient(oid user, bstream *fin, stream *fout); int MCpushClientInput(Client c, bstream *new_input, int listing, const char *prompt); +void MCsetClientInfo(Client c, const char *property, const char *value); void MCstopClients(Client c); str MCsuspendClient(int id); int MCvalid(Client c); @@ -818,7 +820,7 @@ str MSinitClientPrg(Client cntxt, const void MSresetInstructions(MalBlkPtr mb, int start); void MSresetStack(Client cntxt, MalBlkPtr mb, MalStkPtr glb); void MSresetVariables(MalBlkPtr mb); -void MSscheduleClient(str command, str challenge, bstream *fin, stream *fout, protocol_version protocol, size_t blocksize); +void MSscheduleClient(str command, str peer, str challenge, bstream *fin, stream *fout, protocol_version protocol, size_t blocksize); str OIDXcreateImplementation(Client cntxt, int tpe, BAT *b, int pieces); str OIDXdropImplementation(Client cntxt, BAT *b); str QLOGcalls(BAT **r); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3682,6 +3682,7 @@ main(int argc, char **argv) } else { mid = mapi_mapi(host, port, user, passwd, language, dbname); } + mapi_set_application_name("mclient"); free(user_allocated); user_allocated = NULL; free(passwd_allocated); diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c --- a/clients/mapiclient/msqldump.c +++ b/clients/mapiclient/msqldump.c @@ -237,6
MonetDB: balanced_union - disable some more test (fixed in other...
Changeset: add2306cce2c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/add2306cce2c Modified Files: sql/test/BugTracker-2024/Tests/atom_cmp-Bug-7477.test Branch: balanced_union Log Message: disable some more test (fixed in other branch) diffs (19 lines): diff --git a/sql/test/BugTracker-2024/Tests/atom_cmp-Bug-7477.test b/sql/test/BugTracker-2024/Tests/atom_cmp-Bug-7477.test --- a/sql/test/BugTracker-2024/Tests/atom_cmp-Bug-7477.test +++ b/sql/test/BugTracker-2024/Tests/atom_cmp-Bug-7477.test @@ -1,5 +1,6 @@ -- trying first without function "abs ( x )" -statement error TypeException:user.main[12]:'calc.==' undefined in: X_20:bit := calc.==(X_17:str, X_18:bte); +skipif knownfail +statement error conversion of string '' to type bte failed. SELECT - 66 x GROUP BY x HAVING ( x IN ( SELECT '' x WHERE ( x = ( x = 1 ) ) UNION SELECT 1 ) ) -- changing '' into 1, so a string into int @@ -14,6 +15,6 @@ SELECT - 66 x GROUP BY x HAVING ( abs ( -66 skipif knownfail -statement error TypeException:user.main[12]:'calc.==' undefined in: X_0:bit := calc.==(X_1:str, X_2:bte) +statement error conversion of string '' to type bte failed. SELECT - 66 x GROUP BY x HAVING ( abs ( x ) IN ( SELECT '' x WHERE ( x = ( x = 1 ) ) UNION SELECT 1 ) ) ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: balanced_union - use first sub relation for projecting ...
Changeset: fc45530e3aae for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/fc45530e3aae Modified Files: sql/server/rel_unnest.c Branch: balanced_union Log Message: use first sub relation for projecting the right colunns for a push down of a semijoin through a munion diffs (33 lines): diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -1194,7 +1194,6 @@ push_up_groupby(mvc *sql, sql_rel *rel, assert(id); } - //assert(rel->op != op_anti); if (rel->op == op_semi) rel->op = op_join; if (rel->op == op_anti) { @@ -1639,7 +1638,7 @@ push_up_munion(mvc *sql, sql_rel *rel, l if (need_distinct || need_distinct(s)) set_distinct(ns); - if (is_join(rel->op)) { + if (is_join(rel->op) && !is_semi(rel->op)) { list *sexps = sa_list(sql->sa), *dexps = rel_projections(sql, d, NULL, 1, 1); for (node *m = dexps->h; m; m = m->next) { sql_exp *e = m->data; @@ -1653,9 +1652,9 @@ push_up_munion(mvc *sql, sql_rel *rel, l sql_rel *sl = n->data; n->data = rel_project(sql->sa, sl, rel_projections(sql, sl, NULL, 1, 1)); } - if (is_semi(rel->op)) { - assert(0);/* looks wrong */ - ns->exps = rel_projections(sql, ns->r, NULL, 1, 1); + if (is_semi(rel->op)) { /* only project left of semi/anti join */ + sql_rel *sf = rlist->h->data; + ns->exps = rel_projections(sql, sf, NULL, 1, 1); } if (rel->op == op_anti && s->op == op_munion) { assert(0); /* needs to convert list in left/right again ! */ ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - small code cleanup
Changeset: 5180aba894c4 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/5180aba894c4 Modified Files: sql/server/rel_unnest.c Branch: label Log Message: small code cleanup diffs (23 lines): diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -1530,7 +1530,7 @@ push_up_set(mvc *sql, sql_rel *rel, list if (need_distinct || need_distinct(s)) set_distinct(ns); - if (is_join(rel->op)) { + if (is_join(rel->op) && !is_semi(rel->op)) { list *sexps = sa_list(sql->sa), *dexps = rel_projections(sql, d, NULL, 1, 1); for (node *m = dexps->h; m; m = m->next) { sql_exp *e = m->data; @@ -1542,8 +1542,8 @@ push_up_set(mvc *sql, sql_rel *rel, list /* add/remove projections to inner parts of the union (as we push a join or semijoin down) */ ns->l = rel_project(sql->sa, ns->l, rel_projections(sql, ns->l, NULL, 1, 1)); ns->r = rel_project(sql->sa, ns->r, rel_projections(sql, ns->r, NULL, 1, 1)); - if (is_semi(rel->op)) - ns->exps = rel_projections(sql, ns->r, NULL, 1, 1); + if (is_semi(rel->op)) /* only push left side of semi/anti join */ + ns->exps = rel_projections(sql, ns->l, NULL, 1, 1); if (rel->op == op_anti && s->op == op_union) ns->op = op_inter; if (rel->op == op_anti && s->op == op_inter) ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: nilmask - merged with default
Changeset: cda0f55546e6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/cda0f55546e6 Modified Files: clients/Tests/MAL-signatures-hge.test clients/Tests/MAL-signatures.test clients/Tests/exports.stable.out gdk/gdk.h gdk/gdk_bat.c monetdb5/modules/atoms/CMakeLists.txt monetdb5/modules/mal/tablet.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_result.c sql/include/sql_catalog.h sql/storage/bat/bat_storage.c sql/storage/store.c tools/monetdbe/monetdbe.c Branch: nilmask Log Message: merged with default diffs (truncated from 41850 to 300 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -825,3 +825,5 @@ dcc8c702e685a4faf21ccf663028d1bc3d1165d1 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_SP1_release d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_7 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_SP2_release +9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_9 +9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_SP3_release diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ # ChangeLog file for devel # This file is updated with Maddlog +* Wed May 8 2024 Sjoerd Mullender +- The shared library (.dll aka .so files) now have the version number + as part of the name. This should allow the building of compatibility + versions that can be installed in parallel to the latest version. +- Some of the Debian/Ubuntu packages have been renamed. The old monetdb5 + names have been changed to plain monetdb, and libmonetdb5-server-* + packages have been renamed monetdb-*. +- The names of some of the provided RPM files have been changed. + References to the old MonetDB5 name have been removed. All packages + are now just MonetDB. + +* Wed May 8 2024 Niels Nes +- Add support for select exp, count(*) group by 1 order by 1; ie. using + numeric references Added support for group by all and order by all. The + later is ordering on all columns of the selection. The group by all + finds all expressions from the selections which aren't aggregations + and groups on those. All can also be replaced by '*'. + diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -8,8 +8,12 @@ # Copyright August 2008 - 2023 MonetDB B.V.; # Copyright 1997 - July 2008 CWI. -%global name MonetDB %global version 11.50.0 + +%bcond_with compat + +%global name MonetDB%{?with_compat:%version} + %{!?buildno: %global buildno %(date +%Y%m%d)} # Use bcond_with to add a --with option; i.e., "without" is default. @@ -57,7 +61,7 @@ # available. However, the geos library is available in the Extra # Packages for Enterprise Linux (EPEL). %if %{fedpkgs} && (0%{?rhel} != 7) && (0%{?rhel} != 8) -# By default create the MonetDB-geom-MonetDB5 package on Fedora and RHEL 7 +# By default create the MonetDB-geom package on Fedora and RHEL 7 %bcond_without geos %endif @@ -91,7 +95,7 @@ Group: Applications/Databases License: MPL-2.0 URL: https://www.monetdb.org/ BugURL: https://github.com/MonetDB/MonetDB/issues -Source: https://www.monetdb.org/downloads/sources/Dec2023-SP2/%{name}-%{version}.tar.bz2 +Source: https://www.monetdb.org/downloads/sources/Dec2023-SP3/MonetDB-%{version}.tar.bz2 # The Fedora packaging document says we need systemd-rpm-macros for # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7 @@ -117,7 +121,9 @@ BuildRequires: unixODBC-devel BuildRequires: readline-devel %else BuildRequires: pkgconfig(bzip2) +%if %{without compat} BuildRequires: pkgconfig(odbc) +%endif BuildRequires: pkgconfig(readline) %endif %if %{with fits} @@ -154,8 +160,8 @@ BuildRequires: pkgconfig(libR) # BuildRequires: pkgconfig(valgrind)# -DWITH_VALGRIND=ON %if (0%{?fedora} >= 22) -Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release} -Recommends: MonetDB5-server%{?_isa} = %{version}-%{release} +Recommends: %{name}-SQL%{?_isa} = %{version}-%{release} +Recommends: %{name}-server%{?_isa} = %{version}-%{release} Suggests: %{name}-client%{?_isa} = %{version}-%{release} %endif @@ -167,8 +173,8 @@ accelerators. It also has an SQL front This package contains the core components of MonetDB in the form of a single shared library. If you want to use MonetDB, you will certainly -need this package, but you will also need at least the MonetDB5-server -package, and most likely also %{name}-SQL-server5, as well as one or +need this package, but you will also need at least the %{name}-server +package, and most likely also %{name}-SQL, as well as one or more client packages. %ldconfig_scriptlets @@ -176,8 +182,9 @@ more client packages. %files %license COPYING %defattr(-,root,root) -%{_libdir}/libbat.so.* +%{_libdir}/libbat*.so.* +%if %{without compat} %package devel Summary: MonetDB development files Group: Applications/Databases @@ -
MonetDB: clientinfo - add cast
Changeset: eb4dc2f9ede3 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/eb4dc2f9ede3 Modified Files: monetdb5/modules/mal/mal_mapi.c Branch: clientinfo Log Message: add cast diffs (12 lines): diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c --- a/monetdb5/modules/mal/mal_mapi.c +++ b/monetdb5/modules/mal/mal_mapi.c @@ -195,7 +195,7 @@ doChallenge(void *data) char service[20]; if (0 == getnameinfo( (struct sockaddr*)>peer, chdata->peerlen, - p, peer_end - p - 10, + p, (int)(peer_end - p - 10), service, sizeof(service), NI_NUMERICSERV | NI_NUMERICHOST) ) { ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: clientinfo - approved new functions
Changeset: 247c26c97bbf for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/247c26c97bbf Modified Files: clients/Tests/MAL-signatures-hge.test clients/Tests/MAL-signatures.test clients/Tests/exports.stable.out Branch: clientinfo Log Message: approved new functions diffs (59 lines): diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -44629,6 +44629,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -49640,7 +49645,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -33164,6 +33164,11 @@ unsafe pattern clients.setScenario(X_0:s CLTsetScenario; Switch to other scenario handler, return previous one. clients +setinfo +unsafe pattern clients.setinfo(X_0:str, X_1:str):str +CLTsetClientInfo; +set a clientinfo property +clients setmemorylimit unsafe pattern clients.setmemorylimit(X_0:int):void CLTsetmemorylimit; @@ -38060,7 +38065,7 @@ SQLrow_number; return the row_numer-ed groups sql sessions -pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) +pattern sql.sessions() (X_0:bat[:int], X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int], X_9:bat[:str], X_10:bat[:str], X_11:bat[:str], X_12:bat[:str], X_13:bat[:str], X_14:bat[:lng], X_15:bat[:str]) sql_sessions_wrap; SQL export table of active sessions, their timeouts and idle status sql 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 @@ -717,6 +717,7 @@ int64_t mapi_rows_affected(MapiHdl hdl) MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence) __attribute__((__nonnull__(1))); MapiHdl mapi_send(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit) __attribute__((__nonnull__(1))); +void mapi_set_application_name(const char *name); MapiMsg mapi_set_columnar_protocol(Mapi mid, bool columnar_protocol) __attribute__((__nonnull__(1))); MapiMsg mapi_set_size_header(Mapi mid, bool value) __attribute__((__nonnull__(1))); MapiMsg mapi_set_time_zone(Mapi mid, int seconds_east_of_utc) __attribute__((__nonnull__(1))); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: clientinfo - merged with default
Changeset: efbfa8437dc8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/efbfa8437dc8 Branch: clientinfo Log Message: merged with default diffs (235 lines): diff --git a/clients/odbc/winsetup/resource.h b/clients/odbc/winsetup/resource.h --- a/clients/odbc/winsetup/resource.h +++ b/clients/odbc/winsetup/resource.h @@ -40,7 +40,6 @@ #define IDC_EDIT_CLIENTKEY 2024 #define IDC_EDIT_CLIENTCERT 2025 -//#define IDC_BUTTON_CANCEL 2031 #define IDC_BUTTON_TEST 2031 #define IDC_BUTTON_HELP 2032 diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -93,17 +93,17 @@ struct data { char *uid; char *pwd; char *host; - char *port; + char *port; /* positive integer */ char *database; char *schema; - char *logintimeout; - char *replytimeout; - char *replysize; - char *autocommit; - char *timezone; + char *logintimeout; /* empty, 0 or positive integer (millisecs) */ + char *replytimeout; /* empty, 0 or positive integer (millisecs) */ + char *replysize;/* empty, 0 or positive integer */ + char *autocommit; /* only on or off allowed */ + char *timezone; /* empty, 0 or signed integer (minutes) */ char *logfile; // TLS settings - char *use_tls; + char *use_tls; /* only on or off allowed */ char *servercert; char *servercerthash; char *clientkey; @@ -181,7 +181,7 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR if (datap->request != ODBC_ADD_DSN || datap->dsn == NULL || *datap->dsn == 0) { GetDlgItemText(hwndDlg, IDC_EDIT_DSN, buf, sizeof(buf)); if (!SQLValidDSN(buf)) { - MessageBox(hwndDlg, "Invalid Datasource Name", NULL, MB_ICONERROR); + MessageBox(hwndDlg, "Invalid or missing Data Source Name", NULL, MB_ICONERROR); return TRUE; } if (datap->dsn) @@ -264,6 +264,12 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR case IDCANCEL: EndDialog(hwndDlg, LOWORD(wParam)); return TRUE; + case IDC_BUTTON_TEST: + MessageBox(hwndDlg, "Test Connection not yet implemented", NULL, MB_ICONERROR); + return TRUE; + case IDC_BUTTON_HELP: + MessageBox(hwndDlg, "Help not yet implemented", NULL, MB_ICONERROR); + return TRUE; } default: ODBCLOG("DialogProc 0x%x 0x%x 0x%x\n", uMsg, (unsigned) wParam, (unsigned) lParam); @@ -277,7 +283,7 @@ ConfigDSN(HWND parent, WORD request, LPC { struct data data; char *dsn = NULL; - BOOL rc; + BOOL rc = TRUE; /* we're optimistic: default return value */ ODBCLOG("ConfigDSN %d %s %s 0x%" PRIxPTR "\n", request, driver ? driver : "(null)", attributes ? attributes : "(null)", (uintptr_t) ); @@ -419,9 +425,6 @@ ConfigDSN(HWND parent, WORD request, LPC data.clientkey ? data.clientkey : "(null)", data.clientcert ? data.clientcert : "(null)"); - /* we're optimistic: default return value */ - rc = TRUE; - if (parent) { switch (DialogBoxParam(instance, MAKEINTRESOURCE(IDD_SETUP_DIALOG), @@ -443,7 +446,7 @@ ConfigDSN(HWND parent, WORD request, LPC if (!SQLValidDSN(data.dsn)) { rc = FALSE; if (parent) - MessageBox(parent, "Invalid Datasource Name", NULL, MB_ICONERROR); + MessageBox(parent, "Invalid or missing Data Source Name", NULL, MB_ICONERROR); SQLPostInstallerError(ODBC_ERROR_INVALID_NAME, "Invalid driver name"); goto finish; } @@ -455,14 +458,14 @@ ConfigDSN(HWND parent, WORD request, LPC if (drv && *drv) { free(drv); if (parent && - MessageBox(parent, "Replace existing Datasource Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) { + MessageBox(parent, "Replace existing Data Source Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) { goto finish; } ODBCLOG("ConfigDSN removing dsn %s\n", data.dsn); if
MonetDB: clientinfo - use sizeof -1 when calling strncpy to leav...
Changeset: b8c415c75320 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/b8c415c75320 Modified Files: clients/mapilib/mapi.c Branch: clientinfo Log Message: use sizeof -1 when calling strncpy to leave room for the 0 diffs (12 lines): diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c --- a/clients/mapilib/mapi.c +++ b/clients/mapilib/mapi.c @@ -2125,7 +2125,7 @@ void mapi_set_application_name(const char *name) { if (name) - strncpy(mapi_application_name, name, sizeof(mapi_application_name)); + strncpy(mapi_application_name, name, sizeof(mapi_application_name)-1); else mapi_application_name[0] = '\0'; } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: check - merged with default
Changeset: 2a6ab1a31cb4 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/2a6ab1a31cb4 Modified Files: sql/server/rel_select.c sql/storage/store.c Branch: check Log Message: merged with default diffs (truncated from 5181 to 300 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 @@ -745,12 +745,23 @@ const char *mo_find_option(opt *set, int void mo_free_options(opt *set, int setlen); void mo_print_options(opt *set, int setlen); int mo_system_config(opt **Set, int setlen); +mparm mparm_enumerate(int i); +bool mparm_is_core(mparm parm); +const char *mparm_name(mparm parm); mparm mparm_parse(const char *name); +char *msetting_as_string(const msettings *mp, mparm parm); bool msetting_bool(const msettings *mp, mparm parm); long msetting_long(const msettings *mp, mparm parm); +const char *msetting_parm_name(const msettings *mp, mparm parm); +msettings_error msetting_parse(msettings *mp, mparm parm, const char *text); int msetting_parse_bool(const char *text); +msettings_error msetting_set_bool(msettings *mp, mparm parm, bool value); +msettings_error msetting_set_ignored(msettings *mp, const char *key, const char *value); +msettings_error msetting_set_long(msettings *mp, mparm parm, long value); msettings_error msetting_set_named(msettings *mp, bool allow_core, const char *key, const char *value); +msettings_error msetting_set_string(msettings *mp, mparm parm, const char *value) __attribute__((__nonnull__(3))); const char *msetting_string(const msettings *mp, mparm parm); +msettings *msettings_clone(const msettings *mp); long msettings_connect_binary(const msettings *mp); const char *msettings_connect_certhash_digits(const msettings *mp); const char *msettings_connect_clientcert(const msettings *mp); @@ -761,8 +772,12 @@ const char *msettings_connect_tcp(const enum msetting_tls_verify msettings_connect_tls_verify(const msettings *mp); const char *msettings_connect_unix(const msettings *mp); msettings *msettings_create(void); +const msettings *msettings_default; msettings *msettings_destroy(msettings *mp); +bool msettings_malloc_failed(msettings_error err); bool msettings_parse_url(msettings *mp, const char *url, char **error_buffer); +void msettings_reset(msettings *mp); +void msettings_set_localizer(msettings *mp, const char *(*localizer)(const void *data, mparm parm), void *data); bool msettings_validate(msettings *mp, char **errmsg); const char *wsaerror(int); diff --git a/clients/examples/C/testsfile.c b/clients/examples/C/testsfile.c --- a/clients/examples/C/testsfile.c +++ b/clients/examples/C/testsfile.c @@ -85,7 +85,7 @@ handle_set_command(const char *location, { msettings_error msg = msetting_set_named(mp, true, key, value); if (msg) { - fprintf(stderr, "%s: cannot set '%s': %s\n", location, key, msg); + fprintf(stderr, "%s: %s\n", location, msg); return false; } return true; diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -174,7 +174,7 @@ static char *nullstring = default_nullst static timertype gettime(void) { - /* Return the time in milliseconds since an epoch. The epoch + /* Return the time in microseconds since an epoch. The epoch is roughly the time this program started. */ #ifdef _MSC_VER static LARGE_INTEGER freq, start; /* automatically initialized to 0 */ @@ -389,7 +389,7 @@ utf8strlenmax(char *s, char *e, size_t m case UTF8_ACCEPT: if (codepoint == '\n') { if (max) { - *t = s; + *t = s - 1; /* before the \n */ return len; } len++; @@ -409,7 +409,11 @@ utf8strlenmax(char *s, char *e, size_t m return len0; } if (len == max) { - *t = s; + /* add any following combining (zero width) characters */ + do { + *t = s; + s = nextcharn(s, e == NULL ? 4 : (size_t) (e - s), ); + } while (codepoint > 0 && charwidth(codepoint) == 0); return len; } } diff --git a/clients/mapilib/connect.c b/clients/mapilib/connect.c --- a/clients/mapilib/connect.c +++ b/clients/mapilib/connect.c @@ -144,6 +144,17 @@ establish_connection(Mapi mid)
MonetDB: balanced_union - merged with default
Changeset: cf178ae7e83d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/cf178ae7e83d Branch: balanced_union Log Message: merged with default diffs (235 lines): diff --git a/clients/odbc/winsetup/resource.h b/clients/odbc/winsetup/resource.h --- a/clients/odbc/winsetup/resource.h +++ b/clients/odbc/winsetup/resource.h @@ -40,7 +40,6 @@ #define IDC_EDIT_CLIENTKEY 2024 #define IDC_EDIT_CLIENTCERT 2025 -//#define IDC_BUTTON_CANCEL 2031 #define IDC_BUTTON_TEST 2031 #define IDC_BUTTON_HELP 2032 diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -93,17 +93,17 @@ struct data { char *uid; char *pwd; char *host; - char *port; + char *port; /* positive integer */ char *database; char *schema; - char *logintimeout; - char *replytimeout; - char *replysize; - char *autocommit; - char *timezone; + char *logintimeout; /* empty, 0 or positive integer (millisecs) */ + char *replytimeout; /* empty, 0 or positive integer (millisecs) */ + char *replysize;/* empty, 0 or positive integer */ + char *autocommit; /* only on or off allowed */ + char *timezone; /* empty, 0 or signed integer (minutes) */ char *logfile; // TLS settings - char *use_tls; + char *use_tls; /* only on or off allowed */ char *servercert; char *servercerthash; char *clientkey; @@ -181,7 +181,7 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR if (datap->request != ODBC_ADD_DSN || datap->dsn == NULL || *datap->dsn == 0) { GetDlgItemText(hwndDlg, IDC_EDIT_DSN, buf, sizeof(buf)); if (!SQLValidDSN(buf)) { - MessageBox(hwndDlg, "Invalid Datasource Name", NULL, MB_ICONERROR); + MessageBox(hwndDlg, "Invalid or missing Data Source Name", NULL, MB_ICONERROR); return TRUE; } if (datap->dsn) @@ -264,6 +264,12 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR case IDCANCEL: EndDialog(hwndDlg, LOWORD(wParam)); return TRUE; + case IDC_BUTTON_TEST: + MessageBox(hwndDlg, "Test Connection not yet implemented", NULL, MB_ICONERROR); + return TRUE; + case IDC_BUTTON_HELP: + MessageBox(hwndDlg, "Help not yet implemented", NULL, MB_ICONERROR); + return TRUE; } default: ODBCLOG("DialogProc 0x%x 0x%x 0x%x\n", uMsg, (unsigned) wParam, (unsigned) lParam); @@ -277,7 +283,7 @@ ConfigDSN(HWND parent, WORD request, LPC { struct data data; char *dsn = NULL; - BOOL rc; + BOOL rc = TRUE; /* we're optimistic: default return value */ ODBCLOG("ConfigDSN %d %s %s 0x%" PRIxPTR "\n", request, driver ? driver : "(null)", attributes ? attributes : "(null)", (uintptr_t) ); @@ -419,9 +425,6 @@ ConfigDSN(HWND parent, WORD request, LPC data.clientkey ? data.clientkey : "(null)", data.clientcert ? data.clientcert : "(null)"); - /* we're optimistic: default return value */ - rc = TRUE; - if (parent) { switch (DialogBoxParam(instance, MAKEINTRESOURCE(IDD_SETUP_DIALOG), @@ -443,7 +446,7 @@ ConfigDSN(HWND parent, WORD request, LPC if (!SQLValidDSN(data.dsn)) { rc = FALSE; if (parent) - MessageBox(parent, "Invalid Datasource Name", NULL, MB_ICONERROR); + MessageBox(parent, "Invalid or missing Data Source Name", NULL, MB_ICONERROR); SQLPostInstallerError(ODBC_ERROR_INVALID_NAME, "Invalid driver name"); goto finish; } @@ -455,14 +458,14 @@ ConfigDSN(HWND parent, WORD request, LPC if (drv && *drv) { free(drv); if (parent && - MessageBox(parent, "Replace existing Datasource Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) { + MessageBox(parent, "Replace existing Data Source Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) { goto finish; } ODBCLOG("ConfigDSN removing dsn %s\n", data.dsn); if
MonetDB: balanced_union - fix compilation
Changeset: 95964a3415ee for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/95964a3415ee Modified Files: sql/server/rel_optimize_proj.c Branch: balanced_union Log Message: fix compilation diffs (19 lines): diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -3456,6 +3456,7 @@ rel_push_project_down_union(visitor *v, * Push (semi)joins down unions, this is basically for merge tables, where * we know that the fk-indices are split over two clustered merge tables. */ +#if 0 static inline sql_rel * rel_push_join_down_union(visitor *v, sql_rel *rel) { @@ -3684,6 +3685,7 @@ rel_push_join_down_union(visitor *v, sql } return rel; } +#endif /* * Push (semi)joins down unions, this is basically for merge tables, where ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - merged with default
Changeset: 9bd0c25c8304 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9bd0c25c8304 Branch: label Log Message: merged with default diffs (235 lines): diff --git a/clients/odbc/winsetup/resource.h b/clients/odbc/winsetup/resource.h --- a/clients/odbc/winsetup/resource.h +++ b/clients/odbc/winsetup/resource.h @@ -40,7 +40,6 @@ #define IDC_EDIT_CLIENTKEY 2024 #define IDC_EDIT_CLIENTCERT 2025 -//#define IDC_BUTTON_CANCEL 2031 #define IDC_BUTTON_TEST 2031 #define IDC_BUTTON_HELP 2032 diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -93,17 +93,17 @@ struct data { char *uid; char *pwd; char *host; - char *port; + char *port; /* positive integer */ char *database; char *schema; - char *logintimeout; - char *replytimeout; - char *replysize; - char *autocommit; - char *timezone; + char *logintimeout; /* empty, 0 or positive integer (millisecs) */ + char *replytimeout; /* empty, 0 or positive integer (millisecs) */ + char *replysize;/* empty, 0 or positive integer */ + char *autocommit; /* only on or off allowed */ + char *timezone; /* empty, 0 or signed integer (minutes) */ char *logfile; // TLS settings - char *use_tls; + char *use_tls; /* only on or off allowed */ char *servercert; char *servercerthash; char *clientkey; @@ -181,7 +181,7 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR if (datap->request != ODBC_ADD_DSN || datap->dsn == NULL || *datap->dsn == 0) { GetDlgItemText(hwndDlg, IDC_EDIT_DSN, buf, sizeof(buf)); if (!SQLValidDSN(buf)) { - MessageBox(hwndDlg, "Invalid Datasource Name", NULL, MB_ICONERROR); + MessageBox(hwndDlg, "Invalid or missing Data Source Name", NULL, MB_ICONERROR); return TRUE; } if (datap->dsn) @@ -264,6 +264,12 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR case IDCANCEL: EndDialog(hwndDlg, LOWORD(wParam)); return TRUE; + case IDC_BUTTON_TEST: + MessageBox(hwndDlg, "Test Connection not yet implemented", NULL, MB_ICONERROR); + return TRUE; + case IDC_BUTTON_HELP: + MessageBox(hwndDlg, "Help not yet implemented", NULL, MB_ICONERROR); + return TRUE; } default: ODBCLOG("DialogProc 0x%x 0x%x 0x%x\n", uMsg, (unsigned) wParam, (unsigned) lParam); @@ -277,7 +283,7 @@ ConfigDSN(HWND parent, WORD request, LPC { struct data data; char *dsn = NULL; - BOOL rc; + BOOL rc = TRUE; /* we're optimistic: default return value */ ODBCLOG("ConfigDSN %d %s %s 0x%" PRIxPTR "\n", request, driver ? driver : "(null)", attributes ? attributes : "(null)", (uintptr_t) ); @@ -419,9 +425,6 @@ ConfigDSN(HWND parent, WORD request, LPC data.clientkey ? data.clientkey : "(null)", data.clientcert ? data.clientcert : "(null)"); - /* we're optimistic: default return value */ - rc = TRUE; - if (parent) { switch (DialogBoxParam(instance, MAKEINTRESOURCE(IDD_SETUP_DIALOG), @@ -443,7 +446,7 @@ ConfigDSN(HWND parent, WORD request, LPC if (!SQLValidDSN(data.dsn)) { rc = FALSE; if (parent) - MessageBox(parent, "Invalid Datasource Name", NULL, MB_ICONERROR); + MessageBox(parent, "Invalid or missing Data Source Name", NULL, MB_ICONERROR); SQLPostInstallerError(ODBC_ERROR_INVALID_NAME, "Invalid driver name"); goto finish; } @@ -455,14 +458,14 @@ ConfigDSN(HWND parent, WORD request, LPC if (drv && *drv) { free(drv); if (parent && - MessageBox(parent, "Replace existing Datasource Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) { + MessageBox(parent, "Replace existing Data Source Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) { goto finish; } ODBCLOG("ConfigDSN removing dsn %s\n", data.dsn); if
MonetDB: label - reverse casts
Changeset: 3d9c18c85316 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3d9c18c85316 Modified Files: sql/server/rel_select.c sql/server/rel_updates.c Branch: label Log Message: reverse casts ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - windows doesn't like - on unsigned int (even if...
Changeset: ba3b5ef210b2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/ba3b5ef210b2 Modified Files: sql/server/sql_mvc.h Branch: label Log Message: windows doesn't like - on unsigned int (even if result isn't unsigned) diffs (12 lines): diff --git a/sql/server/sql_mvc.h b/sql/server/sql_mvc.h --- a/sql/server/sql_mvc.h +++ b/sql/server/sql_mvc.h @@ -160,7 +160,7 @@ typedef struct mvc { /* during query needed flags */ unsigned int label; /* numbers for relational projection labels */ - unsigned int nid; /* numbers for relational names */ + int nid;/* numbers for relational names */ list *cascade_action; /* protection against recursive cascade actions */ list *schema_path; /* schema search path for object lookup */ uintptr_t sp; ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - merged with default
Changeset: cf540fc6d1e6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/cf540fc6d1e6 Modified Files: sql/server/rel_select.c Branch: label Log Message: merged with default diffs (123 lines): diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -409,7 +409,11 @@ utf8strlenmax(char *s, char *e, size_t m return len0; } if (len == max) { - *t = s; + /* add any following combining (zero width) characters */ + do { + *t = s; + s = nextcharn(s, e == NULL ? 4 : (size_t) (e - s), ); + } while (codepoint > 0 && charwidth(codepoint) == 0); return len; } } diff --git a/common/utils/mutf8.h b/common/utils/mutf8.h --- a/common/utils/mutf8.h +++ b/common/utils/mutf8.h @@ -63,3 +63,24 @@ nextchar(const char *s, uint32_t *c) *c = 0; return NULL; } + +/* like the above, but s is at most n bytes long */ +static inline char * +nextcharn(const char *s, size_t n, uint32_t *c) +{ + uint32_t codepoint = 0, state = 0; + while (n-- > 0 && *s) { + switch (decode(, , (uint8_t) *s++)) { + case UTF8_ACCEPT: + *c = codepoint; + return (char *) s; + case UTF8_REJECT: + *c = 0; + return NULL; + default: + break; + } + } + *c = 0; + return NULL; +} 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 @@ -5580,7 +5580,7 @@ static sql_rel * join_on_column_name(sql_query *query, sql_rel *rel, sql_rel *t1, sql_rel *t2, int op, int l_nil, int r_nil) { mvc *sql = query->sql; - int found = 0, full = (op != op_join); + int found = 0, full = (op == op_full), right = (op == op_right); list *exps = rel_projections(sql, t1, NULL, 1, 0); list *r_exps = rel_projections(sql, t2, NULL, 1, 0); list *outexps = new_exp_list(sql->sa); @@ -5604,18 +5604,22 @@ join_on_column_name(sql_query *query, sq found = 1; if (!(rel = rel_compare_exp(query, rel, le, re, "=", TRUE, 0, 0, 0, 0))) return NULL; + list_remove_data(r_exps, NULL, re); if (full) { sql_exp *cond = rel_unop_(sql, rel, le, "sys", "isnull", card_value); if (!cond) return NULL; set_has_no_nil(cond); + if (rel_convert_types(sql, NULL, NULL, , , 1, type_equal_no_any) < 0) + return NULL; if (!(le = rel_nop_(sql, rel, cond, re, le, NULL, "sys", "ifthenelse", card_value))) return NULL; + } else if (right) { + le = re; } exp_setname(sql, le, rname, name); set_not_unique(le); append(outexps, le); - list_remove_data(r_exps, NULL, re); } else { if (l_nil) set_has_nil(le); diff --git a/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test b/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test @@ -0,0 +1,30 @@ + +statement ok +CREATE TABLE t0(c0 INT) + +statement ok +CREATE TABLE t1(c0 VARCHAR) + +query II +SELECT * FROM t1 LEFT JOIN t0 ON t1.c0 = t0.c0 + + +query II +SELECT * FROM t1 RIGHT JOIN t0 ON t1.c0 = t0.c0 + + +query II +SELECT * FROM t1 FULL JOIN t0 ON t1.c0 = t0.c0 + + +query I +SELECT * FROM t1 NATURAL LEFT JOIN t0 + + +query I +SELECT * FROM t1 NATURAL RIGHT JOIN t0 + + +query I +SELECT * FROM t1 NATURAL FULL JOIN t0 + diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -59,3 +59,4 @@ 7511-password-hash-missing-error 7512-concurrent-globaltmp-instantiate-crash 7513-uri-authority-parse-issue 7514-wrong-window-function +7524-right-outer-join ___ checkin-list mailing list --
MonetDB: label - more clean up
Changeset: c96fd5fd3241 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c96fd5fd3241 Modified Files: sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_unnest.c Branch: label Log Message: more clean up diffs (59 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 @@ -1264,23 +1264,6 @@ exps_find_exp( list *l, sql_exp *e) return NULL; } -sql_exp* -exps_find_equal_exp( list *l, sql_exp *e) -{ - node *n; - - if (!l || !l->h) - return NULL; - - for(n=l->h; n; n = n->next) { - sql_exp *s = n->data; - if (exp_match(n->data, e) || (s->nid && s->nid == e->nid)) - return n->data; - } - return NULL; -} - - /* c refers to the parent p */ int exp_refers( sql_exp *p, sql_exp *c) diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h --- a/sql/server/rel_exp.h +++ b/sql/server/rel_exp.h @@ -147,7 +147,6 @@ extern int exp_refers( sql_exp *p, sql_e extern sql_exp *exps_refers( sql_exp *p, list *exps); extern int exp_match( sql_exp *e1, sql_exp *e2); extern sql_exp* exps_find_exp( list *l, sql_exp *e); -extern sql_exp* exps_find_equal_exp( list *l, sql_exp *e); extern int exp_match_exp( sql_exp *e1, sql_exp *e2); extern int exp_match_exp_semantics( sql_exp *e1, sql_exp *e2, bool semantics); extern sql_exp* exps_any_match(list *l, sql_exp *e); diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -3793,7 +3793,7 @@ rewrite_groupings(visitor *v, sql_rel *r for (node *nn = groups->h ; nn ; nn = nn->next) { sql_exp *exp = (sql_exp*) nn->data; - if (!exps_find_equal_exp(l, exp)) { + if (!exps_find_exp(l, exp)) { switch (ATOMstorage(a->data.vtype)) { case TYPE_bte: a->data.val.btval += (bte) (1 << counter); @@ -3822,7 +3822,7 @@ rewrite_groupings(visitor *v, sql_rel *r ne = exp_atom(v->sql->sa, a); if (exp_name(e)) exp_prop_alias(v->sql->sa, ne, e); - } else if (e->type == e_column && !exps_find_equal_exp(l, e) && !has_label(e)) { + } else if (e->type == e_column && !exps_find_exp(l, e) && !has_label(e)) { /* do not include in the output of the group by, but add to the project as null */ ne = exp_atom(v->sql->sa, atom_general(v->sql->sa, exp_subtype(e), NULL, 0)); if (exp_name(e)) ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: default - fixed issue #7524
Changeset: d3a2c0438f99 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d3a2c0438f99 Added Files: sql/test/BugTracker-2024/Tests/7524-right-outer-join.test Modified Files: sql/server/rel_select.c sql/test/BugTracker-2024/Tests/All Branch: default Log Message: fixed issue #7524 diffs (79 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 @@ -5556,7 +5556,7 @@ static sql_rel * join_on_column_name(sql_query *query, sql_rel *rel, sql_rel *t1, sql_rel *t2, int op, int l_nil, int r_nil) { mvc *sql = query->sql; - int found = 0, full = (op != op_join); + int found = 0, full = (op == op_full), right = (op == op_right); list *exps = rel_projections(sql, t1, NULL, 1, 0); list *r_exps = rel_projections(sql, t2, NULL, 1, 0); list *outexps = new_exp_list(sql->sa); @@ -5580,18 +5580,22 @@ join_on_column_name(sql_query *query, sq found = 1; if (!(rel = rel_compare_exp(query, rel, le, re, "=", TRUE, 0, 0, 0, 0))) return NULL; + list_remove_data(r_exps, NULL, re); if (full) { sql_exp *cond = rel_unop_(sql, rel, le, "sys", "isnull", card_value); if (!cond) return NULL; set_has_no_nil(cond); + if (rel_convert_types(sql, NULL, NULL, , , 1, type_equal_no_any) < 0) + return NULL; if (!(le = rel_nop_(sql, rel, cond, re, le, NULL, "sys", "ifthenelse", card_value))) return NULL; + } else if (right) { + le = re; } exp_setname(sql->sa, le, rname, name); set_not_unique(le); append(outexps, le); - list_remove_data(r_exps, NULL, re); } else { if (l_nil) set_has_nil(le); diff --git a/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test b/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test @@ -0,0 +1,30 @@ + +statement ok +CREATE TABLE t0(c0 INT) + +statement ok +CREATE TABLE t1(c0 VARCHAR) + +query II +SELECT * FROM t1 LEFT JOIN t0 ON t1.c0 = t0.c0 + + +query II +SELECT * FROM t1 RIGHT JOIN t0 ON t1.c0 = t0.c0 + + +query II +SELECT * FROM t1 FULL JOIN t0 ON t1.c0 = t0.c0 + + +query I +SELECT * FROM t1 NATURAL LEFT JOIN t0 + + +query I +SELECT * FROM t1 NATURAL RIGHT JOIN t0 + + +query I +SELECT * FROM t1 NATURAL FULL JOIN t0 + diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -59,3 +59,4 @@ 7511-password-hash-missing-error 7512-concurrent-globaltmp-instantiate-crash 7513-uri-authority-parse-issue 7514-wrong-window-function +7524-right-outer-join ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: label - approve small changes
Changeset: 834dc89e8cb8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/834dc89e8cb8 Modified Files: sql/test/BugTracker-2021/Tests/plan-not-optimal-view.Bug-7140.test sql/test/BugTracker-2022/Tests/dependencies.Bug-7328.test sql/test/rel-optimizers/Tests/groupjoin.test Branch: label Log Message: approve small changes diffs (49 lines): diff --git a/sql/test/BugTracker-2021/Tests/plan-not-optimal-view.Bug-7140.test b/sql/test/BugTracker-2021/Tests/plan-not-optimal-view.Bug-7140.test --- a/sql/test/BugTracker-2021/Tests/plan-not-optimal-view.Bug-7140.test +++ b/sql/test/BugTracker-2021/Tests/plan-not-optimal-view.Bug-7140.test @@ -125,7 +125,7 @@ project ( | | | | | | | select ( | | | | | | | | table("sys"."plantest0") [ "plantest0"."id" ] | | | | | | | ) [ ("plantest0"."id") >= (bigint(28) "15000") ] -| | | | | | ) [ "sys"."sql_div"("plantest0"."id" NOT NULL, int(24) "1000") NOT NULL as "id_div" ] +| | | | | | ) [ "plantest0"."id" NOT NULL as "v"."id", "sys"."sql_div"("plantest0"."id" NOT NULL, int(24) "1000") NOT NULL as "id_div" ] | | | | | ) [ "id_div" NOT NULL as "t"."id_r" ] | | | | ) [ "t"."id_r" NOT NULL ] [ "t"."id_r" NOT NULL, "sys"."count" no nil ("t"."id_r" NOT NULL) NOT NULL as "%1"."%1" ], | | | | group by ( @@ -134,7 +134,7 @@ project ( | | | | | | | select ( | | | | | | | | table("sys"."plantest1") [ "plantest1"."id" ] | | | | | | | ) [ ("plantest1"."id") >= (bigint(28) "15000") ] -| | | | | | ) [ "sys"."sql_div"("plantest1"."id" NOT NULL, int(24) "1000") NOT NULL as "id_div" ] +| | | | | | ) [ "plantest1"."id" NOT NULL as "v"."id", "sys"."sql_div"("plantest1"."id" NOT NULL, int(24) "1000") NOT NULL as "id_div" ] | | | | | ) [ "id_div" NOT NULL as "t"."id_r" ] | | | | ) [ "t"."id_r" NOT NULL ] [ "t"."id_r" NOT NULL, "sys"."count" no nil ("t"."id_r" NOT NULL) NOT NULL as "%1"."%1" ] | | | ) [ "t"."id_r" NOT NULL, "%1"."%1" NOT NULL ] diff --git a/sql/test/BugTracker-2022/Tests/dependencies.Bug-7328.test b/sql/test/BugTracker-2022/Tests/dependencies.Bug-7328.test --- a/sql/test/BugTracker-2022/Tests/dependencies.Bug-7328.test +++ b/sql/test/BugTracker-2022/Tests/dependencies.Bug-7328.test @@ -123,6 +123,10 @@ FROM sys.dependency_columns_on_functions WHERE function_name LIKE 'mmtest04' ORDER BY name +id +mmtest04 +1 +7 name mmtest04 1 diff --git a/sql/test/rel-optimizers/Tests/groupjoin.test b/sql/test/rel-optimizers/Tests/groupjoin.test --- a/sql/test/rel-optimizers/Tests/groupjoin.test +++ b/sql/test/rel-optimizers/Tests/groupjoin.test @@ -13,7 +13,7 @@ project ( | | table("sys"."integers") [ "integers"."i" as "i1"."i" ], | | project ( | | | table("sys"."integers") [ "integers"."i" ] -| | ) [ "integers"."i" as "%4"."%4" ] -| ) [ ("i1"."i") + = ("%4"."%4") ] [ boolean(1) "true" as "%5"."%5" ] -) [ "i1"."i", "sys"."or"("%5"."%5", "sys"."isnull"("i1"."i") NOT NULL) ] +| | ) [ "integers"."i" as "%1"."%1", "%1"."%1" as "integers"."i" ] +| ) [ ("i1"."i") + = ("%1"."%1"), ("i1"."i") = ("%1"."%1") ] [ boolean(1) "true" as "%4"."%4" ] +) [ "i1"."i", "sys"."or"("%4"."%4", "sys"."isnull"("i1"."i") NOT NULL) ] ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org