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; n

MonetDB: Dec2023 - The recommendation is to use ${RPM_BUILD_ROOT...

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: 370476ad5a92 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/370476ad5a92
Modified Files:
MonetDB.spec
Branch: Dec2023
Log Message:

The recommendation is to use ${RPM_BUILD_ROOT} instead of %{buildroot}.
The former is expanded at run time (which is when you want it), the
latter at parse time.


diffs (69 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -875,45 +875,45 @@ 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 %{buildroot}%{_bindir}/monetdb_mtest.sh
-rm -rf %{buildroot}%{_datadir}/monetdb # /cmake
+rm -f "${RPM_BUILD_ROOT}"%{_libdir}/monetdb5/lib_opt_sql_append.so
+rm -f "${RPM_BUILD_ROOT}"%{_libdir}/monetdb5/lib_microbenchmark*.so
+rm -f "${RPM_BUILD_ROOT}"%{_libdir}/monetdb5/lib_udf*.so
+rm -f "${RPM_BUILD_ROOT}"%{_bindir}/monetdb_mtest.sh
+rm -rf "${RPM_BUILD_ROOT}"%{_datadir}/monetdb # /cmake
 
 if [ -x /usr/sbin/hardlink ]; then
-/usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux
+/usr/sbin/hardlink -cv "${RPM_BUILD_ROOT}"%{_datadir}/selinux
 else
 # Fedora 31
-/usr/bin/hardlink -cv %{buildroot}%{_datadir}/selinux
+/usr/bin/hardlink -cv "${RPM_BUILD_ROOT}"%{_datadir}/selinux
 fi
 
 # update shebang lines for Python scripts
 %if %{?py3_shebang_fix:1}%{!?py3_shebang_fix:0}
 # Fedora has py3_shebang_fix macro
-%{py3_shebang_fix} %{buildroot}%{_bindir}/*.py
+%{py3_shebang_fix} "${RPM_BUILD_ROOT}"%{_bindir}/*.py
 %else
 # EPEL does not, but we can use the script directly
-/usr/bin/pathfix.py -pni "%{__python3} -s" %{buildroot}%{_bindir}/*.py
+/usr/bin/pathfix.py -pni "%{__python3} -s" 
"${RPM_BUILD_ROOT}"%{_bindir}/*.py
 %endif
 
 %changelog
___
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 - Merge with default branch.

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: 385c18ff602d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/385c18ff602d
Modified Files:
sql/server/rel_select.c
Branch: label
Log Message:

Merge with default branch.


diffs (132 lines):

diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake
--- a/cmake/monetdb-versions.cmake
+++ b/cmake/monetdb-versions.cmake
@@ -53,7 +53,8 @@ set(MAPI_VERSION_MINOR "2")
 set(MAPI_VERSION_PATCH "2")
 set(MAPI_VERSION 
"${MAPI_VERSION_MAJOR}.${MAPI_VERSION_MINOR}.${MAPI_VERSION_PATCH}")
 
-# version of the MONETDB5 library (subdirectory monetdb5, not including extras 
or sql)
+# version of the MONETDB5 library (subdirectory monetdb5, not including
+# extras, and tools/utils/msabaoth.[ch])
 set(MONETDB5_VERSION_MAJOR "35")
 set(MONETDB5_VERSION_MINOR "0")
 set(MONETDB5_VERSION_PATCH "4")
diff --git a/common/utils/copybinary.h b/common/utils/copybinary.h
--- a/common/utils/copybinary.h
+++ b/common/utils/copybinary.h
@@ -13,8 +13,6 @@
 #ifndef COPYBINARY_H
 #define COPYBINARY_H
 
-#include "monetdb_config.h"
-
 typedef struct {
uint8_t day;
uint8_t month;
diff --git a/common/utils/md5.c b/common/utils/md5.c
--- a/common/utils/md5.c
+++ b/common/utils/md5.c
@@ -50,7 +50,7 @@ static void MD5Transform(uint32_t [4], c
 static void Encode(uint8_t *, const uint32_t *, unsigned int);
 static void Decode(uint32_t *, const uint8_t *, unsigned int);
 
-static uint8_t PADDING[64] = {
+static uint8_t const PADDING[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
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
@@ -2830,15 +2830,42 @@ rel_logical_exp(sql_query *query, sql_re
char *compare_op = n->next->data.sval;
int quantifier = 0;
int is_semantics = 0;
+   bool is_distinct_from = false;
 
if (n->next->next->next)
quantifier = n->next->next->next->data.i_val + 1;
assert(quantifier == 0 || quantifier == 1 || quantifier == 2 || 
quantifier == 3 || quantifier == 4);
 
if (quantifier >= 3) {
+   if (quantifier == 4)
+   is_distinct_from = true;
quantifier = 0;
is_semantics = 1;
}
+   if (is_distinct_from) {
+   sql_exp* ls = rel_value_exp(query, &rel, lo, 
f|sql_farg, ek);
+   if (!ls)
+   return NULL;
+   sql_exp* rs = rel_value_exp(query, &rel, ro, 
f|sql_farg, ek);
+   if (!rs)
+   return NULL;
+
+   bool ls_is_non_null_atom = exp_is_atom(ls) && 
exp_is_not_null(ls);
+   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* 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)))
+   return sql_error(sql, 01, 
SQLSTATE(42000) "Cannot have a parameter for IS NULL operator");
+   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);
+   }
+   }
 
/* [NOT] DISTINCT FROM */
return rel_compare(query, rel, sc, lo, ro, compare_op, f, ek, 
quantifier, is_semantics);
diff --git a/sql/test/2024/Tests/distinct_from.test 
b/sql/test/2024/Tests/distinct_from.test
--- a/sql/test/2024/Tests/distinct_from.test
+++ b/sql/test/2024/Tests/distinct_from.test
@@ -107,6 +107,28 @@ 1
 1
 0
 
+query I nosort
+select s FROM foo WHERE s IS DISTINCT FROM 20;
+
+10
+NULL
+
+query I nosort
+select s FROM foo WHERE s IS NOT DISTINCT FROM 20;
+
+20
+
+query I nosort
+select s FROM foo WHERE s + 10 IS DISTINCT FROM s;
+
+10
+20
+
+query I nosort
+select s FROM foo WHERE s + 10 IS NOT DISTINCT FROM s;
+
+NULL
+
 statement ok
 create table bar(s) as values (20), (30), (NULL)
 
@@ -176,3 +198,16 @@ 20
 20
 NULL
 NULL
+
+statement ok
+create table baz(s int)
+
+query II rowsort
+SELECT * FROM baz RIGHT JOIN foo ON true WHERE (1 

MonetDB: default - Merging branch label into default.

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: ec2e89c6b469 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ec2e89c6b469
Branch: default
Log Message:

Merging branch label into default.


diffs (truncated from 10559 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/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1119,7 +1119,9 @@ 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 */
+   "case when k.type = 4 then 
sys.check_constraint(s.name, k.name) else null end " /* 5 */
 "FROM sys.objects kc, "
  "sys.keys k "
 "WHERE kc.id = k.id "
@@ -1132,14 +1134,15 @@ dump_column_definition(Mapi mid, stream 
"kc.nr, "   /* 1 */
"k.name, "  /* 2 */
"kc.id, "   /* 3 */
-   "k.type "   /* 4 */
+   "k.type, "  /* 4 */
+   "case when k.type = 4 then 
sys.check_constraint(s.name, k.name) else null end " /* 5 */
 "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 in (1, 3) "
+  "AND k.type in (1, 3, 4) "
   "AND t.schema_id = s.id "
   "AND s.name = '%s' "
   "AND t.name = '%s' "
@@ -1158,16 +1161,28 @@ dump_column_definition(Mapi mid, stream 
if (strcmp(kc_nr, "0") == 0) {
if (cnt)
mnstr_write(sqlf, ")", 1, 1);
+   cnt = 0;
mnstr_printf(sqlf, ",\n\t");
if (k_name) {
mnstr_printf(sqlf, "CONSTRAINT ");
dquoted_print(sqlf, k_name, " ");
}
-   mnstr_printf(sqlf, "UNIQUE%s (", strcmp(k_type, "1") == 
0 ? "" : " NULLS NOT DISTINCT");
-   cnt = 1;
+   if (strcmp(k_type, "4") == 0) {
+   const char *k_check = mapi_fetch_field(hdl, 5);
+   mnstr_printf(sqlf, "CHECK (%s)", k_check);
+   } else {
+   if (strcmp(k_type, "1") == 0) {
+   mnstr_printf(sqlf, "UNIQUE");
+   } else {
+   mnstr_printf(sqlf, "UNIQUE NULLS NOT 
DISTINCT");
+   }
+   mnstr_printf(sqlf, " (");
+   cnt = 1;
+   }
} else
mnstr_printf(sqlf, ", ");
-   dquoted_print(sqlf, c_column, NULL);
+   if (cnt)
+   dquoted_print(sqlf, c_column, NULL);
if (mnstr_errnr(sqlf) != MNSTR_NO__ERROR)
goto bailout;
}
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet

MonetDB: label - Closing branch label.

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: 98c28aabf74e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/98c28aabf74e
Branch: label
Log Message:

Closing branch label.

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: e1e9e22bf3d7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e1e9e22bf3d7
Modified Files:
MonetDB.spec
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (99 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -914,62 +914,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 %{buildroot}%{_bindir}/monetdb_mtest.sh
-rm -rf %{buildroot}%{_datadir}/monetdb # /cmake
+rm -f "${RPM_BUILD_ROOT}"%{_libdir}/monetdb5*/lib_opt_sql_append.so
+rm -f "${RPM_BUILD_ROOT}"%{_libdir}/monetdb5*/lib_microbenchmark*.so
+rm -f "${RPM_BUILD_ROOT}"%{_libdir}/monetdb5*/lib_udf*.so
+rm -f "${RPM_BUILD_ROOT}"%{_bindir}/monetdb_mtest.sh
+rm -rf "${RPM_BUILD_ROOT}"%{_datadir}/monetdb # /cmake
 
 if [ -x /usr/sbin/hardlink ]; then
-/usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux
+/usr/sbin/hardlink -cv "${RPM_BUILD_ROOT}"%{_datadir}/selinux
 else
 # Fedora 31
-/usr/bin/hardlink -cv %{buildroot}%{_datadir}/selinux
+/usr/bin/hardlink -cv "${RPM_BUILD_ROOT}"%{_datadir}/selinux
 fi
 
 # update shebang lines for Python scripts
 %if %{?py3_shebang_fix:1}%{!?py3_shebang_fix:0}
 # Fedora has py3_shebang_fix macro
-%{py3_shebang_fix} %{buildroot}%{_bindir}/*.py
+%{py3_shebang_fix} "${RPM_BUILD_ROOT}"%{_bindir}/*.py
 %else
 # EPEL does not, but we can use the script directly
-/usr/bin/pathfix.py -pni "%{__python3} -s" %{buildroot}%{_bindir}/*.py
+/usr/bin/pathfix.py -pni "%{__python3} -s" 
"${RPM_BUILD_ROOT}"%{_bindir}/*.py
 %endif
 
 %if %{with compat}
 # delete files that are not going to be installed in compat packages
-rm 
%{buildroot}%{_bindir}/{M{convert.py,test.py,z.py},bincopydata,example_proxy,m{alsample.pl,client,ktest.py,onetdb{,d},s{erver5,qldump},urltest},s{ample{0,1,4},hutdowntest,mack0{0,1},ql{logictest.py,sample.p{hp,l}},treamcat},testcondvar}
-rm -r %{buildroot}%{_datadir}/doc/MonetDB*
-rm %{buildroot}%{_datadir}/selinux/*/monetdb.pp
-rm -r %{buildroot}%{_includedir}/monetdb
-rm %{buildroot}%{_libdir}/*.so %{buildroot}%{_libdir}/libmonetdbe.so.*
-rm -r %{buildroot}%{_libdir}/pkgconfig
-rm -r %{buildroot}%{_localstatedir}/lib/monetdb 
%{buildroot}%{_localstatedir}/monetdb5
-rm -r %{buildroot}%{_mandir}/man1
-rm -r %{buildroot}%{python3_sitelib}/MonetDBtesting
-rm %{buildroot}%{_sysconfdir}/logrotate.d/monetdbd
-rm %{buildroot}%{_sysusersdir}/monetdb.conf
-rm %{buildroot}%{_tmpfilesdir}/monetdbd.conf
-rm %{buildroot}%{_unitdir}/monetdbd.service
+rm 
"${RPM_BUILD_ROOT}"%{_bindir}/{M{convert.py,test.py,z.py},bincopydata,example_proxy,m{alsample.pl,client,ktest.py,onetdb{,d},s{erver5,qldump},urltest},s{ample{0,1,4},hutdowntest,mack0{0,1},ql{logictest.py,sample.p{hp,l}},treamcat},testcondvar}
+rm -r "${RPM_BUILD_ROOT}"%{_datadir}/doc/MonetDB*
+rm "${RPM_BUILD_ROOT}"%{_datadir}/selinux/*/monetdb.pp
+rm -r "${RPM_BUILD_ROOT}"%{_includedir}/monetdb
+rm "${RPM_BUILD_ROOT}"%{_libdir}/*.so 
"${RPM_BUILD_ROOT}"%{_libdir}/libmonetdbe.so.*
+rm -r "${RPM_BUILD_ROOT}"%{_libdir}/pkgconfig
+rm -r "${RPM_BUILD_ROOT}"%{_localstatedir}/lib/monetdb 
"${RPM_BUILD_ROOT}"%{_localstatedir}/monetdb5
+rm -r "${RPM_BUILD_ROOT}"%{_mandir}/man1
+rm -r "${RPM_BUILD_ROOT}"%{python3_sitelib}/MonetDBtesting
+rm "${RPM_

MonetDB: default - Added tag Aug2024_root for changeset e1e9e22b...

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: 64692ec20faf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/64692ec20faf
Modified Files:
.hgtags
Branch: default
Log Message:

Added tag Aug2024_root for changeset e1e9e22bf3d7


diffs (8 lines):

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
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Step one towards a new stable branch "Aug2024".

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: ad8625ed769d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ad8625ed769d
Added Files:
ChangeLog.Aug2024
clients/ChangeLog.Aug2024
clients/mapilib/ChangeLog.Aug2024
clients/odbc/ChangeLog.Aug2024
common/stream/ChangeLog.Aug2024
gdk/ChangeLog.Aug2024
geom/ChangeLog.Aug2024
misc/ChangeLog.Aug2024
monetdb5/ChangeLog.Aug2024
sql/ChangeLog.Aug2024
testing/ChangeLog.Aug2024
tools/merovingian/ChangeLog.Aug2024
Removed Files:
ChangeLog
clients/ChangeLog
clients/mapilib/ChangeLog
clients/odbc/ChangeLog
common/stream/ChangeLog
gdk/ChangeLog
geom/ChangeLog
misc/ChangeLog
monetdb5/ChangeLog
sql/ChangeLog
testing/ChangeLog
tools/merovingian/ChangeLog
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
debian/control
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
sql/backends/monet5/sql_upgrades.c
Branch: Aug2024
Log Message:

Step one towards a new stable branch "Aug2024".

Incremented version numbers.
Moved ChangeLog file to ChangeLog.Aug2024.
The root of the stable branch is "Aug2024_root".


diffs (256 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.51.0
 commit = False
 tag = False
 
diff --git a/ChangeLog b/ChangeLog.Aug2024
rename from ChangeLog
rename 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.51.0
 
 %bcond_with compat
 
diff --git a/clients/ChangeLog b/clients/ChangeLog.Aug2024
rename from clients/ChangeLog
rename to clients/ChangeLog.Aug2024
diff --git a/clients/mapilib/ChangeLog b/clients/mapilib/ChangeLog.Aug2024
rename from clients/mapilib/ChangeLog
rename to clients/mapilib/ChangeLog.Aug2024
diff --git a/clients/mapilib/mapi.rc b/clients/mapilib/mapi.rc
--- a/clients/mapilib/mapi.rc
+++ b/clients/mapilib/mapi.rc
@@ -6,8 +6,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_U
 #define sversion(major,minor,patch)#major "." #minor "." #patch "\0"
 
 1 VERSIONINFO
-  FILEVERSION version(11,50,0)
-  PRODUCTVERSION version(11,50,0)
+  FILEVERSION version(11,51,0)
+  PRODUCTVERSION version(11,51,0)
   FILEFLAGSMASK 0x3fL
   FILEFLAGS 0
   FILEOS VOS_NT_WINDOWS32
@@ -21,14 +21,14 @@ BEGIN
   VALUE "Comments", "\0"
   VALUE "CompanyName", "MonetDB Foundation\0"
   VALUE "FileDescription", "MonetDB Application Interface DLL\0"
-  VALUE "FileVersion", sversion(11,50,0)
+  VALUE "FileVersion", sversion(11,51,0)
   VALUE "InternalName", "Mapi\0"
   VALUE "LegalCopyright", "Copyright (c) 2024 MonetDB Foundation\0"
   VALUE "LegalTrademarks", "\0"
   VALUE "OriginalFilename", "Mapi.dll\0"
   VALUE "PrivateBuild", "\0"
   VALUE "ProductName", "MonetDB Client Libraries\0"
-  VALUE "ProductVersion", sversion(11,50,0)
+  VALUE "ProductVersion", sversion(11,51,0)
   VALUE "SpecialBuild", "\0"
 END
   END
diff --git a/clients/odbc/ChangeLog b/clients/odbc/ChangeLog.Aug2024
rename from clients/odbc/ChangeLog
rename to clients/odbc/ChangeLog.Aug2024
diff --git a/clients/odbc/driver/driver.rc b/clients/odbc/driver/driver.rc
--- a/clients/odbc/driver/driver.rc
+++ b/clients/odbc/driver/driver.rc
@@ -6,8 +6,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_U
 #define sversion(major,minor,patch)#major "." #minor "." #patch "\0"
 
 1 VERSIONINFO
-  FILEVERSION version(11,50,0)
-  PRODUCTVERSION version(11,50,0)
+  FILEVERSION version(11,51,0)
+  PRODUCTVERSION version(11,51,0)
   FILEFLAGSMASK 0x3fL
   FILEFLAGS 0
   FILEOS VOS_NT_WINDOWS32
@@ -21,14 +21,14 @@ BEGIN
   VALUE "Comments", "\0"
   VALUE "CompanyName", "MonetDB Foundation\0"
   VALUE "FileDescription", "MonetDB ODBC Driver DLL\0"
-  VALUE "FileVersion", sversion(11,50,0)
+  VALUE "FileVersion", sversion(11,51,0)
   VALUE "InternalName", "MonetODBC\0"
   VALUE "LegalCopyright", "Copyright (c) 2024 MonetDB Foundation\0"
   VALUE "LegalTrademarks", "\0"
   VALUE "OriginalFilename", "MonetODBC.dll\0"
   VALUE "PrivateBuild", "\0"
   VALUE "ProductName", "MonetDB SQL Server\0"
-  VALUE "ProductVersion", sversion(11,50,0)
+  VALUE "ProductVersion", sversion(11,51,0)
   VALUE "SpecialBuild", "\0"
 END
   END
diff --git a/clients/odbc/winsetup/setup.rc b/clients/odbc/winsetup/setup.rc
--- a/clients/odbc/winsetup/setup.rc
+++ b/clients/odbc/winsetup/setup.rc
@@ -65,8 +65,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION version(11,50,0)
- 

MonetDB: default - Step two towards a new stable branch "Aug2024".

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: f4fbdb3437bf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f4fbdb3437bf
Modified Files:
.bumpversion.cfg
ChangeLog
MonetDB.spec
clients/ChangeLog
clients/mapilib/mapi.rc
clients/odbc/ChangeLog
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
common/stream/ChangeLog
debian/control
gdk/ChangeLog
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
sql/ChangeLog
Branch: default
Log Message:

Step two towards a new stable branch "Aug2024".

Increment version numbers.

>From now on, *all* bug fixes, and *only* bug fixes, *must* go to the
stable branch with the name "Aug2024".


diffs (truncated from 418 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/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
 
diff --git a/clients/ChangeLog b/clients/ChangeLog
--- a/clients/ChangeLog
+++ b/clients/ChangeLog
@@ -1,25 +1,3 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
-* Thu Jan 25 2024 Sjoerd Mullender 
-- Msqldump now accepts --output and --outputdir options.  When the
-  --outputdir option is used, the dump is placed in the file dump.sql in
-  the specified directory and all tables are dumped to separate CSV files.
-  In this way it is feasible to edit the dump script by hand if needed,
-  even for a large database.
-
-* Wed Jan 24 2024 Sjoerd Mullender 
-- The --table (-t) option of msqldump now accepts SQL-style % wildcard
-  characters to dump all tables that match the pattern.  E.g. -t
-  %test%.%test% dumps all tables with 'test' in both the schema and
-  table name.
-
-* Wed Jan 10 2024 Sjoerd Mullender 
-- Implemented interrupt handling in mclient.  When using mclient
-  interactively, an interrupt (usually control-C) stops whatever the
-  client is doing.  When editing a line, the line is discarded; when
-  editing a second or later line of a query, the whole query is discarded;
-  when a query is being executed, the server is asked to stop the query
-  at its earliest convenience.  Stopping a running query can only be
-  done with an up-to-date server.  All of this does not work on Windows.
-
diff --git a/clients/ChangeLog b/clients/ChangeLog.Aug2024
copy from clients/ChangeLog
copy to clients/ChangeLog.Aug2024
diff --git a/clients/mapilib/ChangeLog b/clients/mapilib/ChangeLog.Aug2024
copy from clients/mapilib/ChangeLog
copy to clients/mapilib/ChangeLog.Aug2024
diff --git a/clients/mapilib/mapi.rc b/clients/mapilib/mapi.rc
--- a/clients/mapilib/mapi.rc
+++ b/clients/mapilib/mapi.rc
@@ -6,8 +6,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_U
 #define sversion(major,minor,patch)#major "." #minor "." #patch "\0"
 
 1 VERSIONINFO
-  FILEVERSION version(11,50,0)
-  PRODUCTVERSION version(11,50,0)
+  FILEVERSION version(11,52,0)
+  PRODUCTVERSION version(11,52,0)
   FILEFLAGSMASK 0x3fL
   FILEFLAGS 0
   FILEOS VOS_NT_WINDOWS32
@@ -21,14 +21,14 @@ BEGIN
   VALUE "Comments", "\0"
   VALUE "CompanyName", "MonetDB Foundation\0"
   VALUE "FileDescription", "MonetDB Application Interface DLL\0"
-  VALUE "FileVersion", sversion(11,50,0)
+  VALUE "FileVersion", sversion(11,52,0)
   VALUE "InternalName", "Mapi\0"
   VALUE "LegalCopyright", "Copyright (c) 2024 MonetDB Foundation\0"
   VALUE "LegalTrademarks", "\0"
   VALUE "OriginalFilename", "Mapi.dll\0"
   VALUE "PrivateBuild", "\0"
   VALUE "ProductName", "MonetDB Client Libraries\0"
-  VALUE "ProductVersion", sversion(11,50,0)
+  VALUE "ProductVersion", sversion(11,52,0)
   VALUE "SpecialBuild", "\0"
 END
   END
diff --git a/clients/odbc/ChangeLog b/clients/odbc/ChangeLog
--- a/clients/odbc/ChangeLog
+++ b/clients/odbc/C

MonetDB: default - Adds tests from merge_unions opt

2024-06-04 Thread stefanos mavros via checkin-list
Changeset: faf3deaa31c4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/faf3deaa31c4
Added Files:
sql/test/rel-optimizers/Tests/merge-unions-base.test
sql/test/rel-optimizers/Tests/merge-unions.reqtests
sql/test/rel-optimizers/Tests/merge-unions.test
Modified Files:
sql/test/rel-optimizers/Tests/All
Branch: default
Log Message:

Adds tests from merge_unions opt


diffs (truncated from 363 to 300 lines):

diff --git a/sql/test/rel-optimizers/Tests/All 
b/sql/test/rel-optimizers/Tests/All
--- a/sql/test/rel-optimizers/Tests/All
+++ b/sql/test/rel-optimizers/Tests/All
@@ -10,3 +10,5 @@ local-replica
 local-replica-with-actual-remote
 remote-replica-plan
 remote-replica
+merge-unions-base
+merge-unions
diff --git a/sql/test/rel-optimizers/Tests/merge-unions-base.test 
b/sql/test/rel-optimizers/Tests/merge-unions-base.test
new file mode 100644
--- /dev/null
+++ b/sql/test/rel-optimizers/Tests/merge-unions-base.test
@@ -0,0 +1,76 @@
+statement ok
+create table f1 (n int)
+
+statement ok
+create table f2 (n int)
+
+statement ok
+create table f3 (n int)
+
+statement ok
+create table f4 (n int)
+
+statement ok
+insert into f1 values (1), (2)
+
+statement ok
+insert into f2 values  (2), (3)
+
+statement ok
+insert into f3 values   (3), (4)
+
+statement ok
+insert into f4 values(4), (5)
+
+statement ok
+create view f_uchain as
+select * from f1
+union all
+select * from f2
+union all
+select * from f3
+union all
+select * from f4
+
+statement ok
+create merge table f12 (n int)
+
+statement ok
+alter table f12 add table f1
+
+statement ok
+alter table f12 add table f2
+
+statement ok
+create merge table f34 (n int)
+
+statement ok
+alter table f34 add table f3
+
+statement ok
+alter table f34 add table f4
+
+statement ok
+create merge table f_merge_rec (n int)
+
+statement ok
+alter table f_merge_rec add table f12
+
+statement ok
+alter table f_merge_rec add table f34
+
+statement ok
+create merge table f_merge (n int)
+
+statement ok
+alter table f_merge add table f1
+
+statement ok
+alter table f_merge add table f2
+
+statement ok
+alter table f_merge add table f3
+
+statement ok
+alter table f_merge add table f4
+
diff --git a/sql/test/rel-optimizers/Tests/merge-unions.reqtests 
b/sql/test/rel-optimizers/Tests/merge-unions.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/rel-optimizers/Tests/merge-unions.reqtests
@@ -0,0 +1,1 @@
+merge-unions-base
diff --git a/sql/test/rel-optimizers/Tests/merge-unions.test 
b/sql/test/rel-optimizers/Tests/merge-unions.test
new file mode 100644
--- /dev/null
+++ b/sql/test/rel-optimizers/Tests/merge-unions.test
@@ -0,0 +1,262 @@
+query I rowsort
+select * from f_uchain
+
+1
+2
+2
+3
+3
+4
+4
+5
+
+query T nosort
+plan select * from f_uchain
+
+munion (
+| project (
+| | table("sys"."f4") [ "f4"."n" UNIQUE ]
+| ) [ "f4"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | table("sys"."f3") [ "f3"."n" UNIQUE ]
+| ) [ "f3"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | table("sys"."f1") [ "f1"."n" UNIQUE ]
+| ) [ "f1"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | table("sys"."f2") [ "f2"."n" UNIQUE ]
+| ) [ "f2"."n" UNIQUE as "f_uchain"."n" ]
+) [ "f_uchain"."n" ]
+
+query I rowsort
+select * from f_uchain
+where n > 1 and n < 5
+
+2
+2
+3
+3
+4
+4
+
+query T nosort
+plan select * from f_uchain
+ where n > 1 and n < 5
+
+munion (
+| project (
+| | select (
+| | | table("sys"."f4") [ "f4"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f4"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f4"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f3") [ "f3"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f3"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f3"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f1") [ "f1"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f1"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f1"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f2") [ "f2"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f2"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f2"."n" UNIQUE as "f_uchain"."n" ]
+) [ "f_uchain"."n" ]
+
+query II rowsort
+select n, count(n) from f_uchain group by n 
+
+1
+1
+2
+2
+3
+2
+4
+2
+5
+1
+
+query T nosort
+plan select * from f_uchain
+ where n > 1 and n < 5
+
+munion (
+| project (
+| | select (
+| | | table("sys"."f4") [ "f4"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f4"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f4"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f3") [ "f3"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f3"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f3"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f1") [ "f1"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f1"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f1"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f2") [ "f2"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f2"."n" UNIQUE) < (i

MonetDB: Aug2024 - Grafts merge_unions opt tests from default

2024-06-04 Thread stefanos mavros via checkin-list
Changeset: 5fa7d5d1bb6b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5fa7d5d1bb6b
Added Files:
sql/test/rel-optimizers/Tests/merge-unions-base.test
sql/test/rel-optimizers/Tests/merge-unions.reqtests
sql/test/rel-optimizers/Tests/merge-unions.test
Modified Files:
sql/test/rel-optimizers/Tests/All
Branch: Aug2024
Log Message:

Grafts merge_unions opt tests from default


diffs (truncated from 363 to 300 lines):

diff --git a/sql/test/rel-optimizers/Tests/All 
b/sql/test/rel-optimizers/Tests/All
--- a/sql/test/rel-optimizers/Tests/All
+++ b/sql/test/rel-optimizers/Tests/All
@@ -10,3 +10,5 @@ local-replica
 local-replica-with-actual-remote
 remote-replica-plan
 remote-replica
+merge-unions-base
+merge-unions
diff --git a/sql/test/rel-optimizers/Tests/merge-unions-base.test 
b/sql/test/rel-optimizers/Tests/merge-unions-base.test
new file mode 100644
--- /dev/null
+++ b/sql/test/rel-optimizers/Tests/merge-unions-base.test
@@ -0,0 +1,76 @@
+statement ok
+create table f1 (n int)
+
+statement ok
+create table f2 (n int)
+
+statement ok
+create table f3 (n int)
+
+statement ok
+create table f4 (n int)
+
+statement ok
+insert into f1 values (1), (2)
+
+statement ok
+insert into f2 values  (2), (3)
+
+statement ok
+insert into f3 values   (3), (4)
+
+statement ok
+insert into f4 values(4), (5)
+
+statement ok
+create view f_uchain as
+select * from f1
+union all
+select * from f2
+union all
+select * from f3
+union all
+select * from f4
+
+statement ok
+create merge table f12 (n int)
+
+statement ok
+alter table f12 add table f1
+
+statement ok
+alter table f12 add table f2
+
+statement ok
+create merge table f34 (n int)
+
+statement ok
+alter table f34 add table f3
+
+statement ok
+alter table f34 add table f4
+
+statement ok
+create merge table f_merge_rec (n int)
+
+statement ok
+alter table f_merge_rec add table f12
+
+statement ok
+alter table f_merge_rec add table f34
+
+statement ok
+create merge table f_merge (n int)
+
+statement ok
+alter table f_merge add table f1
+
+statement ok
+alter table f_merge add table f2
+
+statement ok
+alter table f_merge add table f3
+
+statement ok
+alter table f_merge add table f4
+
diff --git a/sql/test/rel-optimizers/Tests/merge-unions.reqtests 
b/sql/test/rel-optimizers/Tests/merge-unions.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/rel-optimizers/Tests/merge-unions.reqtests
@@ -0,0 +1,1 @@
+merge-unions-base
diff --git a/sql/test/rel-optimizers/Tests/merge-unions.test 
b/sql/test/rel-optimizers/Tests/merge-unions.test
new file mode 100644
--- /dev/null
+++ b/sql/test/rel-optimizers/Tests/merge-unions.test
@@ -0,0 +1,262 @@
+query I rowsort
+select * from f_uchain
+
+1
+2
+2
+3
+3
+4
+4
+5
+
+query T nosort
+plan select * from f_uchain
+
+munion (
+| project (
+| | table("sys"."f4") [ "f4"."n" UNIQUE ]
+| ) [ "f4"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | table("sys"."f3") [ "f3"."n" UNIQUE ]
+| ) [ "f3"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | table("sys"."f1") [ "f1"."n" UNIQUE ]
+| ) [ "f1"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | table("sys"."f2") [ "f2"."n" UNIQUE ]
+| ) [ "f2"."n" UNIQUE as "f_uchain"."n" ]
+) [ "f_uchain"."n" ]
+
+query I rowsort
+select * from f_uchain
+where n > 1 and n < 5
+
+2
+2
+3
+3
+4
+4
+
+query T nosort
+plan select * from f_uchain
+ where n > 1 and n < 5
+
+munion (
+| project (
+| | select (
+| | | table("sys"."f4") [ "f4"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f4"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f4"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f3") [ "f3"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f3"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f3"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f1") [ "f1"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f1"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f1"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f2") [ "f2"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f2"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f2"."n" UNIQUE as "f_uchain"."n" ]
+) [ "f_uchain"."n" ]
+
+query II rowsort
+select n, count(n) from f_uchain group by n 
+
+1
+1
+2
+2
+3
+2
+4
+2
+5
+1
+
+query T nosort
+plan select * from f_uchain
+ where n > 1 and n < 5
+
+munion (
+| project (
+| | select (
+| | | table("sys"."f4") [ "f4"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f4"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f4"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f3") [ "f3"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f3"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f3"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f1") [ "f1"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f1"."n" UNIQUE) < (int(2) "5") ]
+| ) [ "f1"."n" UNIQUE as "f_uchain"."n" ],
+| project (
+| | select (
+| | | table("sys"."f2") [ "f2"."n" UNIQUE ]
+| | ) [ (int(2) "1") < ("f2"."n" UN

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(&GDKdebug) & 
FORCEMITOMASK ? 5 : 100;
+   const lng min_changes = ATOMIC_GET(&GDKdebug) & 
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: Aug2024 - Fixes merge_unions tests

2024-06-04 Thread stefanos mavros via checkin-list
Changeset: d437ce53766a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d437ce53766a
Modified Files:
sql/test/rel-optimizers/Tests/merge-unions.test
Branch: Aug2024
Log Message:

Fixes merge_unions tests


diffs (30 lines):

diff --git a/sql/test/rel-optimizers/Tests/merge-unions.test 
b/sql/test/rel-optimizers/Tests/merge-unions.test
--- a/sql/test/rel-optimizers/Tests/merge-unions.test
+++ b/sql/test/rel-optimizers/Tests/merge-unions.test
@@ -209,20 +209,18 @@ query I rowsort
 select * from f_merge_rec
 where n > 1 and n < 5
 
-1
 2
 2
 3
 3
 4
 4
-5
 
 query T nosort
 plan select * from f_merge_rec
  where n > 1 and n < 5
 
-tmunion (
+munion (
 | project (
 | | select (
 | | | table("sys"."f1") [ "f1"."n" UNIQUE as "f_merge_rec"."n" ]
@@ -259,4 +257,3 @@ 2
 5
 1
 
-
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Merge with Dec2023 branch.

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: 8f14f1d9f9d6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8f14f1d9f9d6
Modified Files:
sql/storage/bat/bat_storage.c
sql/storage/store.c
Branch: Aug2024
Log Message:

Merge with Dec2023 branch.


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
@@ -4729,7 +4729,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);
@@ -4809,7 +4809,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
@@ -4070,7 +4070,7 @@ sql_trans_commit(sql_trans *tr)
const bool log = !tr->parent && tr->logchanges > 0;
 
if (log) {
-   const int min_changes = ATOMIC_GET(&GDKdebug) & 
FORCEMITOMASK ? 5 : 100;
+   const lng min_changes = ATOMIC_GET(&GDKdebug) & 
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: default - Merge with Aug2024 branch.

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: 98dcbf57d359 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/98dcbf57d359
Modified Files:
sql/test/rel-optimizers/Tests/merge-unions.test
Branch: default
Log Message:

Merge with Aug2024 branch.


diffs (81 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
@@ -4729,7 +4729,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);
@@ -4809,7 +4809,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
@@ -4070,7 +4070,7 @@ sql_trans_commit(sql_trans *tr)
const bool log = !tr->parent && tr->logchanges > 0;
 
if (log) {
-   const int min_changes = ATOMIC_GET(&GDKdebug) & 
FORCEMITOMASK ? 5 : 100;
+   const lng min_changes = ATOMIC_GET(&GDKdebug) & 
FORCEMITOMASK ? 5 : 100;
flush = (tr->logchanges > min_changes && 
list_empty(store->changes));
}
 
diff --git a/sql/test/rel-optimizers/Tests/merge-unions.test 
b/sql/test/rel-optimizers/Tests/merge-unions.test
--- a/sql/test/rel-optimizers/Tests/merge-unions.test
+++ b/sql/test/rel-optimizers/Tests/merge-unions.test
@@ -137,7 +137,7 @@ munion (
 | ) [ "f_merge"."n" UNIQUE ]
 ) [ "f_merge"."n" ]
 
-query T nosort
+query T rowsort
 select * from f_merge
 where n > 1 and n < 5
 
@@ -209,20 +209,18 @@ query I rowsort
 select * from f_merge_rec
 where n > 1 and n < 5
 
-1
 2
 2
 3
 3
 4
 4
-5
 
 query T nosort
 plan select * from f_merge_rec
  where n > 1 and n < 5
 
-tmunion (
+munion (
 | project (
 | | select (
 | | | table("sys"."f1") [ "f1"."n" UNIQUE as "f_merge_rec"."n" ]
@@ -245,7 +243,7 @@ tmunion (
 | ) [ "f_merge_rec"."n" UNIQUE ]
 ) [ "f_merge_rec"."n" ]
 
-query II nosort
+query II rowsort
 select n, count(n) from f_merge_rec group by n 
 
 1
@@ -259,4 +257,3 @@ 2
 5
 1
 
-
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - Don't try to allocate 0 bytes.

2024-06-04 Thread Sjoerd Mullender via checkin-list
Changeset: 744f5a714ec4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/744f5a714ec4
Modified Files:
monetdb5/modules/mal/txtsim.c
Branch: Dec2023
Log Message:

Don't try to allocate 0 bytes.
Fixes #7530.


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
@@ -464,6 +464,10 @@ str_2_codepointseq(str_item *s)
const char *p = s->val;
int c;
 
+   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);
@@ -566,20 +570,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(&xi)) != MAL_SUCCEED)
goto bailout;
 
-   yi.val = *y;
-   yi.len = UTF8_strlen(*y);
if ((msg = str_2_codepointseq(&yi)) != MAL_SUCCEED)
goto bailout;
 
___
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(&i->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(&i->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(&col->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(&t->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(&col->base
-   return res;
-
if (isNew(col)) { /* remove create from changes */
trans_del(tr, &col->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(&i->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 - 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: 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: 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(&i->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(&i->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(&col->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(&t->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(&col->base
-   return res;
-
if (isNew(col)) { /* remove create from changes */
trans_del(tr, &col->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(&i->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 - 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, 
batarg("l",oid),batarg("r",oid),batarg("gen",bte),batarg("low",bte),batarg("hgh",bte),batarg("lc",oid),batarg("rc",

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, $3)