MonetDB: default - use new thetaselect for 'is distinct from'

2024-06-19 Thread Niels Nes via checkin-list
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

2024-06-19 Thread Niels Nes via checkin-list
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...

2024-06-19 Thread Niels Nes via checkin-list
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...

2024-06-19 Thread Niels Nes via checkin-list
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

2024-06-19 Thread Niels Nes via checkin-list
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

2024-06-19 Thread Niels Nes via checkin-list
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...

2024-06-19 Thread Niels Nes via checkin-list
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

2024-06-17 Thread Niels Nes via checkin-list
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

2024-06-17 Thread Niels Nes via checkin-list
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...

2024-06-15 Thread Niels Nes via checkin-list
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...

2024-06-15 Thread Niels Nes via checkin-list
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

2024-06-13 Thread Niels Nes via checkin-list
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

2024-06-13 Thread Niels Nes via checkin-list
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

2024-06-13 Thread Niels Nes via checkin-list
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

2024-06-13 Thread Niels Nes via checkin-list
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

2024-06-13 Thread Niels Nes via checkin-list
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...

2024-06-13 Thread Niels Nes via checkin-list
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

2024-06-11 Thread Niels Nes via checkin-list
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...

2024-06-11 Thread Niels Nes via checkin-list
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...

2024-06-11 Thread Niels Nes via checkin-list
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

2024-06-10 Thread Niels Nes via checkin-list
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

2024-06-10 Thread Niels Nes via checkin-list
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 ...

2024-06-10 Thread Niels Nes via checkin-list
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.

2024-06-08 Thread Niels Nes via checkin-list
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

2024-06-07 Thread Niels Nes via checkin-list
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

2024-06-07 Thread Niels Nes via checkin-list
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

2024-06-07 Thread Niels Nes via checkin-list
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

2024-06-07 Thread Niels Nes via checkin-list
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...

2024-06-07 Thread Niels Nes via checkin-list
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...

2024-06-07 Thread Niels Nes via checkin-list
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

2024-06-06 Thread Niels Nes via checkin-list
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...

2024-06-06 Thread Niels Nes via checkin-list
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

2024-06-06 Thread Niels Nes via checkin-list
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

2024-06-06 Thread Niels Nes via checkin-list
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...

2024-06-06 Thread Niels Nes via checkin-list
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 ...

2024-06-06 Thread Niels Nes via checkin-list
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

2024-06-05 Thread Niels Nes via checkin-list
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...

2024-06-05 Thread Niels Nes via checkin-list
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

2024-06-05 Thread Niels Nes via checkin-list
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...

2024-06-05 Thread Niels Nes via checkin-list
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...

2024-06-05 Thread Niels Nes via checkin-list
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.

2024-06-04 Thread Niels Nes via checkin-list
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

2024-06-04 Thread Niels Nes via checkin-list
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...

2024-06-04 Thread Niels Nes via checkin-list
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...

2024-06-04 Thread Niels Nes via checkin-list
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

2024-06-04 Thread Niels Nes via checkin-list
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

2024-06-04 Thread Niels Nes via checkin-list
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...

2024-06-04 Thread Niels Nes via checkin-list
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

2024-06-04 Thread Niels Nes via checkin-list
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

2024-06-04 Thread Niels Nes via checkin-list
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

2024-06-03 Thread Niels Nes via checkin-list
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...

2024-06-03 Thread Niels Nes via checkin-list
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

2024-06-02 Thread Niels Nes via checkin-list
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

2024-06-02 Thread Niels Nes via checkin-list
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

2024-06-02 Thread Niels Nes via checkin-list
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

2024-06-01 Thread Niels Nes via checkin-list
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

2024-06-01 Thread Niels Nes via checkin-list
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 .

2024-05-31 Thread Niels Nes via checkin-list
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

2024-05-31 Thread Niels Nes via checkin-list
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

2024-05-31 Thread Niels Nes via checkin-list
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

2024-05-31 Thread Niels Nes via checkin-list
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...

2024-05-31 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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...

2024-05-30 Thread Niels Nes via checkin-list
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...

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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 ...

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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...

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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...

2024-05-30 Thread Niels Nes via checkin-list
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 ...

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-30 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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...

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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...

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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

2024-05-29 Thread Niels Nes via checkin-list
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


  1   2   3   4   5   6   7   8   9   10   >