MonetDB: label - cleanup more string based lookups
Changeset: 871baa54ab84 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/871baa54ab84 Modified Files: sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimize_proj.c sql/server/rel_unnest.c sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.test sql/test/miscellaneous/Tests/simple_plans.test Branch: label Log Message: cleanup more string based lookups diffs (250 lines): diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -753,6 +753,8 @@ exp_propagate(allocator *sa, sql_exp *ne set_no_nil(ne); if (!has_nil(oe)) set_has_no_nil(ne); + if (has_nil(oe)) + set_has_nil(ne); if (is_unique(oe)) set_unique(ne); if (is_basecol(oe)) @@ -780,6 +782,8 @@ exp_ref_by_label(allocator *sa, sql_exp e->tpe = *t; if (!has_nil(o)) set_has_no_nil(e); + if (has_nil(o)) + set_has_nil(e); if (is_unique(o)) set_unique(e); if (is_intern(o)) @@ -1846,6 +1850,55 @@ rel_find_exp(sql_rel *rel, sql_exp *e) return rel_find_exp_and_corresponding_rel(rel, e, false, NULL, NULL); } +bool +rel_find_nid(sql_rel *rel, int nid) +{ + if (rel) { + switch(rel->op) { + case op_left: + case op_right: + case op_full: + case op_join: + case op_semi: + case op_anti: + if (rel_find_nid(rel->l, nid)) + return true; + if (is_join(rel->op)) + return rel_find_nid(rel->r, nid); + break; + case op_table: + case op_basetable: + case op_munion: + case op_union: + case op_inter: + case op_except: + case op_project: + case op_groupby: + if (rel->exps) { + if (exps_bind_nid(rel->exps, nid)) + return true; + } else if (rel->op == op_basetable) + return rel_base_has_nid(rel, nid); + break; + case op_select: + case op_topn: + case op_sample: + if (rel_find_nid(rel->l, nid)) + return true; + break; + case op_ddl: + case op_insert: + case op_update: + case op_delete: + case op_truncate: + case op_merge: + return false; + + } + } + return false; +} + int exp_is_true(sql_exp *e) { diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h --- a/sql/server/rel_exp.h +++ b/sql/server/rel_exp.h @@ -140,6 +140,7 @@ extern const char *exp_find_rel_name(sql extern sql_exp *rel_find_exp(sql_rel *rel, sql_exp *e); extern sql_exp *rel_find_exp_and_corresponding_rel(sql_rel *rel, sql_exp *e, bool subexp, sql_rel **res, bool *under_join); +extern bool rel_find_nid(sql_rel *rel, int nid); extern int exp_cmp( sql_exp *e1, sql_exp *e2); extern int exp_equal( sql_exp *e1, sql_exp *e2); diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -387,10 +387,8 @@ exp_rename(mvc *sql, sql_exp *e, sql_rel return e; sql_exp *oe = e; e = NULL; - if (exp_name(ne) && ne->r && ne->l) - e = rel_bind_column2(sql, t, ne->l, ne->r, 0); - if (!e && ne->r) - e = rel_bind_column(sql, t, ne->r, 0, 1); + if (ne && ne->nid) + e = rel_find_exp(t, ne); if (!e) { sql->session->status = 0; sql->errstr[0] = 0; @@ -398,7 +396,10 @@ exp_rename(mvc *sql, sql_exp *e, sql_rel return ne; return oe; } - return exp_ref(sql, e); + ne = exp_ref(sql, e); + if (oe) + exp_propagate(sql->sa, ne, oe); + return ne; case e_cmp: if (e->flag == cmp_or || e->flag == cmp_filter) { e->l = exps_rename(sql, e->l, f, t); @@ -585,22 +586,6 @@ rel_push_project_up_(visitor *v, sql_rel r_exps = rel_projections(v->sql, r, NULL, 1, 1); if (rel->attr) append(r_exps, exp_ref(v->sql, rel->attr->h->data)); - if (0) - for(n = l_exps->h; n; n
MonetDB: Dec2023 - The recommendation is to use ${RPM_BUILD_ROOT...
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
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.
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.
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.
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.
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...
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".
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".
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
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
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...
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
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.
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.
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.
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
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
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...
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...
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
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.
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)