MonetDB: Nov2019 - Compilation fixes
Changeset: accb7aec7991 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=accb7aec7991 Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_result.c sql/backends/monet5/sql_result.h sql/server/sql_mvc.c sql/storage/bat/res_table.c sql/storage/sql_storage.h Branch: Nov2019 Log Message: Compilation fixes diffs (183 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -5684,7 +5684,7 @@ rel_bin(backend *be, sql_rel *rel) { mvc *sql = be->mvc; list *refs = sa_list(sql->sa); - int sqltype = sql->type; + sql_query_t sqltype = sql->type; stmt *s = subrel_bin(be, rel, refs); if (sqltype == Q_SCHEMA) diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -2225,7 +2225,7 @@ mvc_result_set_wrap( Client cntxt, MalBl b = BATdescriptor(bid); if ( b == NULL) throw(MAL,"sql.resultset", SQLSTATE(HY005) "Cannot access column descriptor"); - res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 5), 1, b); + res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 5), Q_TABLE, b); if (res < 0) msg = createException(SQL, "sql.resultSet", SQLSTATE(45000) "Result table construction failed"); BBPunfix(b->batCacheid); @@ -2316,7 +2316,7 @@ mvc_export_table_wrap( Client cntxt, Mal order = BATdescriptor(bid); if ( order == NULL) throw(MAL,"sql.resultset", SQLSTATE(HY005) "Cannot access column descriptor"); - res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 12), 1, order); + res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 12), Q_TABLE, order); t = m->results; if (res < 0){ msg = createException(SQL, "sql.resultSet", SQLSTATE(45000) "Result set construction failed"); @@ -2433,7 +2433,7 @@ mvc_row_result_wrap( Client cntxt, MalBl return msg; if ((msg = checkSQLContext(cntxt)) != NULL) return msg; - res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 5), 1, NULL); + res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 5), Q_TABLE, NULL); if (res < 0) throw(SQL, "sql.resultset", SQLSTATE(HY001) MAL_MALLOC_FAIL); @@ -2518,7 +2518,7 @@ mvc_export_row_wrap( Client cntxt, MalBl throw(MAL, "sql.resultSet", "cannot transfer files to client"); } - res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 12), 1, NULL); + res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 12), Q_TABLE, NULL); t = m->results; if (res < 0){ @@ -2616,7 +2616,7 @@ mvc_table_result_wrap(Client cntxt, MalB str msg; int *res_id; int nr_cols; - int qtype; + sql_query_t qtype; bat order_bid; if ( pci->argc > 6) @@ -2624,7 +2624,7 @@ mvc_table_result_wrap(Client cntxt, MalB res_id = getArgReference_int(stk, pci, 0); nr_cols = *getArgReference_int(stk, pci, 1); - qtype = *getArgReference_int(stk, pci, 2); + qtype = (sql_query_t) *getArgReference_int(stk, pci, 2); order_bid = *getArgReference_bat(stk, pci, 3); if ((msg = getSQLContext(cntxt, mb, , NULL)) != NULL) @@ -2778,7 +2778,7 @@ mvc_scalar_value_wrap(Client cntxt, MalB p = *(ptr *) p; // scalar values are single-column result sets - if((res_id = mvc_result_table(b->mvc, mb->tag, 1, 1, NULL)) < 0) + if ((res_id = mvc_result_table(b->mvc, mb->tag, 1, Q_TABLE, NULL)) < 0) throw(SQL, "sql.exportValue", SQLSTATE(HY001) MAL_MALLOC_FAIL); if (mvc_result_value(b->mvc, tn, cn, type, digits, scale, p, mtype)) throw(SQL, "sql.exportValue", SQLSTATE(45000) "Result set construction failed"); diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c --- a/sql/backends/monet5/sql_result.c +++ b/sql/backends/monet5/sql_result.c @@ -857,17 +857,14 @@ mvc_import_table(Client cntxt, BAT ***ba if (!bs) { sql_error(m, 500, "no stream (pointer) provided"); - m->type = -1; return NULL; } if (mnstr_errnr(bs->s)) { sql_error(m, 500, "stream not open %d", mnstr_errnr(bs->s)); - m->type = -1; return NULL; } if (offset < 0 || offset > (lng) BUN_MAX) { sql_error(m, 500, "offset out of range"); - m->type = -1; return NULL; } @@ -2601,7 +2598,7 @@ mvc_export_chunk(backend *b, stream
MonetDB: Nov2019 - Ported to Fedora 31.
Changeset: 8b136b2feca9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8b136b2feca9 Modified Files: MonetDB.spec configure.ag sql/server/sql_parser.y Branch: Nov2019 Log Message: Ported to Fedora 31. diffs (95 lines): diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -84,9 +84,9 @@ %bcond_without rintegration %endif -# On Fedora and RHEL 7, create the MonetDB-python2 package. +# On Fedora <= 30 and RHEL 7, create the MonetDB-python2 package. # On RHEL 6, numpy is too old. -%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7 +%if 0%{?rhel} == 7 || %{!?fedora:1000}%{?fedora} <= 30 %bcond_without py2integration %endif %if %{?rhel:0}%{!?rhel:1} @@ -164,12 +164,7 @@ BuildRequires: python-devel # RedHat Enterprise Linux calls it simply numpy BuildRequires: numpy %else -%if (0%{?fedora} >= 24) BuildRequires: python2-numpy -%else -# Fedora <= 23 doesn't have python2-numpy -BuildRequires: numpy -%endif %endif %endif %if %{with py3integration} @@ -1053,7 +1048,12 @@ do install -p -m 644 buildtools/selinux/monetdb.pp.${selinuxvariant} \ %{buildroot}%{_datadir}/selinux/${selinuxvariant}/monetdb.pp done -/usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux +if [ -x /usr/sbin/hardlink ]; then +/usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux +else +# Fedora 31 +/usr/bin/hardlink -cv %{buildroot}%{_datadir}/selinux +fi %endif %post -p /sbin/ldconfig diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -1013,7 +1013,7 @@ AC_PROG_LN_S AC_CHECK_PROGS([DIFF], [gdiff diff]) AC_DEFINE_UNQUOTED([DIFF], ["$DIFF"], [Program to perform diffs]) -AC_CHECK_PROGS([RPMBUILD], [rpmbuild]) +AC_CHECK_PROG([RPMBUILD], [rpmbuild], [rpmbuild], [false]) # This is how we use the various Python-related configuration variables. # PYTHON - the Python interpreter we use for testing. This can either @@ -2268,7 +2268,6 @@ AC_CHECK_HEADERS([ \ sys/param.h \ sys/resource.h \ sys/socket.h \ - sys/sysctl.h \ sys/time.h \ sys/times.h \ sys/types.h \ @@ -2283,12 +2282,14 @@ AC_CHECK_HEADERS([ \ ]) # on OpenBSD, sys/sysctl.h requires sys/param.h to be included beforehand -AC_CHECK_HEADERS([sys/sysctl.h], [], [], -[ - @%:@ifdef HAVE_SYS_PARAM_H - @%:@ include - @%:@endif -]) +AS_CASE([$host_os], + [linux*], [], + [AC_CHECK_HEADERS([sys/sysctl.h], [], [], + [ + @%:@ifdef HAVE_SYS_PARAM_H + @%:@ include + @%:@endif + ])]) SOCKET_LIBS="" 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 @@ -164,7 +164,7 @@ uescape_xform(char *restrict s, const ch %lex-param { void *m } /* reentrant parser */ -%pure-parser +%define api.pure %union { int i_val,bval; lng l_val,operation; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Merge with Nov2019 branch
Changeset: a90c13e966b2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a90c13e966b2 Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_upgrades.c sql/include/sql_catalog.h sql/server/rel_psm.c sql/server/rel_select.c sql/server/sql_env.c sql/server/sql_mvc.c sql/server/sql_mvc.h sql/server/sql_qc.c sql/server/sql_qc.h sql/storage/sql_storage.h sql/storage/store.c sql/storage/store_dependency.c sql/test/subquery/Tests/correlated.stable.err sql/test/subquery/Tests/correlated.stable.out sql/test/subquery/Tests/subquery.sql sql/test/subquery/Tests/subquery.stable.err Branch: default Log Message: Merge with Nov2019 branch diffs (truncated from 1256 to 300 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -5698,7 +5698,7 @@ output_rel_bin(backend *be, sql_rel *rel { mvc *sql = be->mvc; list *refs = sa_list(sql->sa); - int sqltype = sql->type; + sql_query_t sqltype = sql->type; stmt *s; if (refs == NULL) diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c --- a/sql/backends/monet5/sql_cat.c +++ b/sql/backends/monet5/sql_cat.c @@ -768,17 +768,15 @@ create_func(mvc *sql, char *sname, char if (!s) s = cur_schema(sql); nf = mvc_create_func(sql, NULL, s, f->base.name, f->ops, f->res, f->type, f->lang, f->mod, f->imp, f->query, f->varres, f->vararg, f->system); - if (nf && nf->query && nf->lang <= FUNC_LANG_SQL) { + if (nf && nf->query && !LANG_EXT(nf->lang)) { char *buf; sql_rel *r = NULL; sql_allocator *sa = sql->sa; - sql->sa = sa_create(); - if(!sql->sa) - throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); - buf = sa_strdup(sql->sa, nf->query); - if(!buf) - throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); + if (!(sql->sa = sa_create())) + throw(SQL, "sql.catalog", SQLSTATE(HY001) MAL_MALLOC_FAIL); + if (!(buf = sa_strdup(sql->sa, nf->query))) + throw(SQL, "sql.catalog", SQLSTATE(HY001) MAL_MALLOC_FAIL); r = rel_parse(sql, s, buf, m_deps); if (r) r = rel_unnest(sql, r); diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -81,7 +81,7 @@ sql_fix_system_tables(Client c, mvc *sql " (%d, '%s', '%s', '%s'," " %d, %d, %s, %s, %s, %d, %s);\n", func->base.id, func->base.name, - func->imp, func->mod, FUNC_LANG_INT, + func->imp, func->mod, (int) FUNC_LANG_INT, (int) func->type, func->side_effect ? "true" : "false", func->varres ? "true" : "false", @@ -149,7 +149,7 @@ sql_fix_system_tables(Client c, mvc *sql " (%d, '%s', '%s', '%s', %d, %d, false," " %s, %s, %d, %s);\n", aggr->base.id, aggr->base.name, aggr->imp, - aggr->mod, FUNC_LANG_INT, (int) aggr->type, + aggr->mod, (int) FUNC_LANG_INT, (int) aggr->type, aggr->varres ? "true" : "false", aggr->vararg ? "true" : "false", aggr->s ? aggr->s->base.id : s->base.id, diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -11,6 +11,7 @@ #include "sql_mem.h" #include "sql_list.h" +#include "sql_querytype.h" #include "stream.h" #define tr_none0 @@ -40,21 +41,23 @@ #define PRIV_COPYFROMFILE 1 #define PRIV_COPYINTOFILE 2 -#define SCHEMA_DEPENDENCY 1 -#define TABLE_DEPENDENCY 2 -#define COLUMN_DEPENDENCY 3 -#define KEY_DEPENDENCY 4 -#define VIEW_DEPENDENCY 5 -#define USER_DEPENDENCY 6 -#define FUNC_DEPENDENCY 7 -#define TRIGGER_DEPENDENCY 8 -#define OWNER_DEPENDENCY 9 -#define INDEX_DEPENDENCY 10 -#define FKEY_DEPENDENCY 11 -#define SEQ_DEPENDENCY 12 -#define PROC_DEPENDENCY 13 -#define BEDROPPED_DEPENDENCY 14/*The object must be dropped when the dependent object is dropped independently of the DROP type.*/ -#define TYPE_DEPENDENCY 15 +typedef enum sql_dependency { + SCHEMA_DEPENDENCY = 1, + TABLE_DEPENDENCY
MonetDB: Nov2019 - Show the right UDF language in the error message
Changeset: 5b6116c98b9c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5b6116c98b9c Modified Files: sql/backends/monet5/sql_cat.c sql/server/rel_psm.c Branch: Nov2019 Log Message: Show the right UDF language in the error message diffs (152 lines): diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c --- a/sql/backends/monet5/sql_cat.c +++ b/sql/backends/monet5/sql_cat.c @@ -768,17 +768,15 @@ create_func(mvc *sql, char *sname, char if (!s) s = cur_schema(sql); nf = mvc_create_func(sql, NULL, s, f->base.name, f->ops, f->res, f->type, f->lang, f->mod, f->imp, f->query, f->varres, f->vararg, f->system); - if (nf && nf->query && nf->lang <= FUNC_LANG_SQL) { + if (nf && nf->query && !LANG_EXT(nf->lang)) { char *buf; sql_rel *r = NULL; sql_allocator *sa = sql->sa; - sql->sa = sa_create(); - if(!sql->sa) - throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); - buf = sa_strdup(sql->sa, nf->query); - if(!buf) - throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); + if (!(sql->sa = sa_create())) + throw(SQL, "sql.catalog", SQLSTATE(HY001) MAL_MALLOC_FAIL); + if (!(buf = sa_strdup(sql->sa, nf->query))) + throw(SQL, "sql.catalog", SQLSTATE(HY001) MAL_MALLOC_FAIL); r = rel_parse(sql, s, buf, m_deps); if (r) r = rel_unnest(sql, r); diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c --- a/sql/server/rel_psm.c +++ b/sql/server/rel_psm.c @@ -818,17 +818,13 @@ rel_create_func(sql_query *query, dlist if ((sf = sql_bind_func_(sql->sa, s, fname, type_list, type)) != NULL && create) { if (replace) { sql_func *func = sf->func; - int action = 0; - if (!mvc_schema_privs(sql, s)) { + if (!mvc_schema_privs(sql, s)) return sql_error(sql, 02, SQLSTATE(42000) "CREATE OR REPLACE %s%s: access denied for %s to schema ;'%s'", KF, F, stack_get_string(sql, "current_user"), s->base.name); - } if (mvc_check_dependency(sql, func->base.id, !IS_PROC(func) ? FUNC_DEPENDENCY : PROC_DEPENDENCY, NULL)) return sql_error(sql, 02, SQLSTATE(42000) "CREATE OR REPLACE %s%s: there are database objects dependent on %s%s %s;", KF, F, kf, fn, func->base.name); - if (!func->s) { + if (!func->s) return sql_error(sql, 02, SQLSTATE(42000) "CREATE OR REPLACE %s%s: not allowed to replace system %s%s %s;", KF, F, kf, fn, func->base.name); - } - - if(mvc_drop_func(sql, s, func, action)) + if (mvc_drop_func(sql, s, func, 0)) return sql_error(sql, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL); sf = NULL; } else { @@ -860,9 +856,8 @@ rel_create_func(sql_query *query, dlist } list_destroy(type_list); if (create && !mvc_schema_privs(sql, s)) { - return sql_error(sql, 02, SQLSTATE(42000) "CREATE %s%s: insufficient privileges " - "for user '%s' in schema '%s'", KF, F, - stack_get_string(sql, "current_user"), s->base.name); + return sql_error(sql, 02, SQLSTATE(42000) "CREATE %s%s: insufficient privileges for user '%s' in schema '%s'", KF, F, +stack_get_string(sql, "current_user"), s->base.name); } else { char *q = QUERY(sql->scanner); list *l = NULL; @@ -889,28 +884,42 @@ rel_create_func(sql_query *query, dlist if (!restype) return sql_error(sql, 01, SQLSTATE(42000) "CREATE %s%s: failed to get restype", KF, F); } - if (body && lang > FUNC_LANG_SQL) { - char *lang_body = body->h->data.sval; - char *mod = - (lang == FUNC_LANG_R)?"rapi": - (lang == FUNC_LANG_C || lang == FUNC_LANG_CPP)?"capi": - (lang == FUNC_LANG_J)?"japi": - (lang == FUNC_LANG_PY)?"pyapi": - (lang == FUNC_LANG_MAP_PY)?"pyapimap":"unknown"; + if (body && LANG_EXT(lang)) { + char *lang_body = body->h->data.sval, *mod = NULL, *slang = NULL; + switch (lang) { + case
MonetDB: Nov2019 - Use C enum for SQL function language
Changeset: d5dd59459b7b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d5dd59459b7b Modified Files: sql/backends/monet5/sql_upgrades.c sql/include/sql_catalog.h sql/server/rel_psm.c sql/server/sql_env.c sql/server/sql_mvc.c sql/server/sql_mvc.h sql/storage/sql_storage.h sql/storage/store.c Branch: Nov2019 Log Message: Use C enum for SQL function language diffs (247 lines): diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -81,7 +81,7 @@ sql_fix_system_tables(Client c, mvc *sql " (%d, '%s', '%s', '%s'," " %d, %d, %s, %s, %s, %d, %s);\n", func->base.id, func->base.name, - func->imp, func->mod, FUNC_LANG_INT, + func->imp, func->mod, (int) FUNC_LANG_INT, (int) func->type, func->side_effect ? "true" : "false", func->varres ? "true" : "false", @@ -149,7 +149,7 @@ sql_fix_system_tables(Client c, mvc *sql " (%d, '%s', '%s', '%s', %d, %d, false," " %s, %s, %d, %s);\n", aggr->base.id, aggr->base.name, aggr->imp, - aggr->mod, FUNC_LANG_INT, (int) aggr->type, + aggr->mod, (int) FUNC_LANG_INT, (int) aggr->type, aggr->varres ? "true" : "false", aggr->vararg ? "true" : "false", aggr->s ? aggr->s->base.id : s->base.id, diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -372,20 +372,22 @@ typedef enum sql_ftype { #define IS_ANALYTIC(f) (f->type == F_ANALYTIC) #define IS_LOADER(f) (f->type == F_LOADER) -#define FUNC_LANG_INT 0/* internal */ -#define FUNC_LANG_MAL 1 /* create sql external mod.func */ -#define FUNC_LANG_SQL 2 /* create ... sql function/procedure */ -#define FUNC_LANG_R 3 /* create .. language R */ -#define FUNC_LANG_C 4 /* create .. language C */ -#define FUNC_LANG_J 5 -// this should probably be done in a better way -#define FUNC_LANG_PY 6 /* create .. language PYTHON */ -#define FUNC_LANG_MAP_PY 7 /* create .. language PYTHON_MAP */ -#define FUNC_LANG_PY2 8 /* create .. language PYTHON2 */ -#define FUNC_LANG_MAP_PY2 9 /* create .. language PYTHON2_MAP */ -#define FUNC_LANG_PY3 10 /* create .. language PYTHON3 */ -#define FUNC_LANG_MAP_PY3 11 /* create .. language PYTHON3_MAP */ -#define FUNC_LANG_CPP 12 /* create .. language CPP */ +typedef enum sql_flang { + FUNC_LANG_INT = 0, /* internal */ + FUNC_LANG_MAL = 1, /* create sql external mod.func */ + FUNC_LANG_SQL = 2, /* create ... sql function/procedure */ + FUNC_LANG_R = 3, /* create .. language R */ + FUNC_LANG_C = 4, /* create .. language C */ + FUNC_LANG_J = 5, /* create .. language JAVASCRIPT (not implemented) */ + /* this should probably be done in a better way */ + FUNC_LANG_PY = 6, /* create .. language PYTHON */ + FUNC_LANG_MAP_PY = 7, /* create .. language PYTHON_MAP */ + FUNC_LANG_PY2 = 8, /* create .. language PYTHON2 */ + FUNC_LANG_MAP_PY2 = 9, /* create .. language PYTHON2_MAP */ + FUNC_LANG_PY3 = 10, /* create .. language PYTHON3 */ + FUNC_LANG_MAP_PY3 = 11, /* create .. language PYTHON3_MAP */ + FUNC_LANG_CPP = 12 /* create .. language CPP */ +} sql_flang; #define LANG_EXT(l) (l>FUNC_LANG_SQL) @@ -402,7 +404,7 @@ typedef struct sql_func { 1 sql 2 sql instantiated proc */ - int lang; + sql_flang lang; char *query;/* sql code */ bit side_effect; bit varres; /* variable output result */ diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c --- a/sql/server/rel_psm.c +++ b/sql/server/rel_psm.c @@ -776,7 +776,7 @@ rel_create_function(sql_allocator *sa, c } static sql_rel * -rel_create_func(sql_query *query, dlist *qname, dlist *params, symbol *res, dlist *ext_name, dlist *body, sql_ftype type, int lang, int replace) +rel_create_func(sql_query *query, dlist *qname, dlist *params, symbol *res, dlist *ext_name, dlist *body, sql_ftype type, sql_flang lang, int replace) { mvc *sql = query->sql; const char *fname = qname_table(qname); @@ -1470,7 +1470,7 @@ rel_psm(sql_query *query, symbol *s) { dlist *l = s->data.lval; sql_ftype type = (sql_ftype) l->h->next->next->next->next->next->data.i_val; - int lang =
MonetDB: mosaic - Merge with default.
Changeset: ed99763ed02a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ed99763ed02a Added Files: sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.err sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.py sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.stable.err sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.stable.out Modified Files: clients/mapiclient/mclient.c gdk/gdk_bbp.c gdk/gdk_heap.c gdk/gdk_interprocess.c gdk/gdk_logger.c gdk/gdk_storage.c monetdb5/modules/mal/tablet.c sql/backends/monet5/UDF/pyapi/pyapi.c sql/backends/monet5/sql.c sql/backends/monet5/sql_upgrades.c sql/server/rel_optimizer.c sql/server/rel_psm.c sql/server/rel_schema.c sql/server/rel_semantic.c sql/storage/store.c sql/test/BugTracker-2018/Tests/All sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.stable.out sql/test/BugTracker-2019/Tests/All sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.err sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.out sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.sql sql/test/BugTracker-2019/Tests/sequence-first-next-value.Bug-6743.stable.out sql/test/subquery/Tests/subquery2.sql sql/test/testdb-reload/Tests/reload.py testing/process.py tools/merovingian/daemon/controlrunner.c Branch: mosaic Log Message: Merge with default. diffs (truncated from 2876 to 300 lines): diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3664,6 +3664,9 @@ main(int argc, char **argv) if (mode == SQL) dump_version(mid, toConsole, "Database:"); + mnstr_printf(toConsole, "FOLLOW US on https://twitter.com/MonetDB "); + mnstr_printf(toConsole, "or https://github.com/MonetDB/MonetDB\n;); + mnstr_printf(toConsole, "Type \\q to quit, \\? for a list of available commands\n"); if (mode == SQL) mnstr_printf(toConsole, "auto commit mode: %s\n", diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -1742,7 +1742,7 @@ BBPdir_subcommit(int cnt, bat *subcommit assert(subcommit[n - 1] < subcommit[n]); #endif - if ((nbbpf = GDKfilelocate(0, "BBP", "w", "dir")) == NULL) + if ((nbbpf = GDKfilelocate(0, "BBP", "wx", "dir")) == NULL) return GDK_FAIL; n = (bat) ATOMIC_GET(); @@ -1854,7 +1854,7 @@ BBPdir(int cnt, bat *subcommit) return BBPdir_subcommit(cnt, subcommit); IODEBUG fprintf(stderr, "#BBPdir: writing BBP.dir (%d bats).\n", (int) (bat) ATOMIC_GET()); - if ((fp = GDKfilelocate(0, "BBP", "w", "dir")) == NULL) { + if ((fp = GDKfilelocate(0, "BBP", "wx", "dir")) == NULL) { goto bailout; } diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c --- a/gdk/gdk_heap.c +++ b/gdk/gdk_heap.c @@ -61,7 +61,7 @@ HEAPcreatefile(int farmid, size_t *maxsz fn = path; } /* round up to mulitple of GDK_mmap_pagesize */ - fd = GDKfdlocate(NOFARM, fn, "wb", NULL); + fd = GDKfdlocate(NOFARM, fn, "wxb", NULL); if (fd >= 0) { close(fd); base = GDKload(NOFARM, fn, NULL, *maxsz, maxsz, STORE_MMAP); @@ -119,36 +119,12 @@ HEAPalloc(Heap *h, size_t nitems, size_t } if (!GDKinmemory() && h->base == NULL) { char *nme; - struct stat st; - if(!(nme = GDKfilepath(h->farmid, BATDIR, h->filename, NULL))) { - GDKerror("HEAPalloc: malloc failure"); + nme = GDKfilepath(h->farmid, BATDIR, h->filename, NULL); + if (nme == NULL) return GDK_FAIL; - } - if (stat(nme, ) < 0) { - h->storage = STORE_MMAP; - h->base = HEAPcreatefile(NOFARM, >size, nme); - } else { - int fd; - - fd = GDKfdlocate(NOFARM, nme, "wb", NULL); - if (fd >= 0) { - char of[sizeof(h->filename)]; - char *ext; - close(fd); - strncpy(of, h->filename, sizeof(of)); -#ifdef STATIC_CODE_ANALYSIS - /* help coverity */ -
MonetDB: mosaic - Update TODO's.
Changeset: 3bcbac3e0e4e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3bcbac3e0e4e Modified Files: monetdb5/modules/mosaic/TODO_MOSAIC.txt Branch: mosaic Log Message: Update TODO's. diffs (23 lines): diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt b/monetdb5/modules/mosaic/TODO_MOSAIC.txt --- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt +++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt @@ -1,16 +1,16 @@ technical depth -Somehow log/print which compression is being used. Potentially use (3) +Add asserts for unknown compression strategies. Test null semantics mosaic.select (c,nil:any_1, nil:any_1,true,true,(true|false)) is not working correctly: should result in c == nil or c!=nil(anti). dictionary encoding should use the ordered property of its dictionary in the algebraic operators Use bit vectors more aggressively in mosaic_delta --- then resolve test mosaic_delta_timestamp --- and possibly other compression techniques as well. -Somehow force mosaic to only use specified compressions even if inefficient. +Somehow force mosaic to only use specified compressions even if inefficient. This poses a design problem for dictionary compression though. Add test for float/double delta compression: check if the hardcoded compression expression are correct. See also (2) Add asserts on type degeneration for bit => bte daytime => lng timestmap => lng date => int. Remove task-factor and range->factor or refactor them. See if we can re-introduce landmark stuff somehow. -Fix/check/test MOSlayout. (3*) +Fix/check/test MOSlayout. benchmark code issues ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - ALGODEBUG prints compression specific operator...
Changeset: 3185af24066b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3185af24066b Added Files: monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.options5 monetdb5/modules/mosaic/Tests/mosaic_bit_1.frame.options5 monetdb5/modules/mosaic/Tests/mosaic_bit_1.prefix.options5 monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.options5 monetdb5/modules/mosaic/Tests/mosaic_bit_2.linear.options5 monetdb5/modules/mosaic/Tests/mosaic_bit_2.runlength.options5 monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.options5 monetdb5/modules/mosaic/Tests/mosaic_date_1.dictionary.options5 monetdb5/modules/mosaic/Tests/mosaic_date_1.frame.options5 monetdb5/modules/mosaic/Tests/mosaic_date_1.prefix.options5 monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.options5 monetdb5/modules/mosaic/Tests/mosaic_date_2.linear.options5 monetdb5/modules/mosaic/Tests/mosaic_date_2.runlength.options5 monetdb5/modules/mosaic/Tests/mosaic_lng_1.delta.options5 monetdb5/modules/mosaic/Tests/mosaic_lng_1.dictionary.options5 monetdb5/modules/mosaic/Tests/mosaic_lng_1.frame.options5 monetdb5/modules/mosaic/Tests/mosaic_lng_1.prefix.options5 monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.options5 monetdb5/modules/mosaic/Tests/mosaic_lng_2.linear.options5 monetdb5/modules/mosaic/Tests/mosaic_lng_2.runlength.options5 monetdb5/modules/mosaic/Tests/mosaic_oid_1.delta.options5 monetdb5/modules/mosaic/Tests/mosaic_oid_1.dictionary.options5 monetdb5/modules/mosaic/Tests/mosaic_oid_1.frame.options5 monetdb5/modules/mosaic/Tests/mosaic_oid_1.prefix.options5 monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.options5 monetdb5/modules/mosaic/Tests/mosaic_oid_2.linear.options5 monetdb5/modules/mosaic/Tests/mosaic_oid_2.runlength.options5 monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.dictionary.options5 monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.frame.options5 monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.prefix.options5 monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.options5 monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.linear.options5 monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.runlength.options5 Modified Files: monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_2.runlength.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_2.mal monetdb5/modules/mosaic/Tests/mosaic_date_2.runlength.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_1.delta.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_2.runlength.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.delta.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_2.runlength.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.mal monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.runlength.stable.out monetdb5/modules/mosaic/mosaic.c Branch: mosaic Log Message: ALGODEBUG prints compression specific operators in use: - Adjust
MonetDB: mosaic - Remove calendar from mosaic.
Changeset: 529d523e4931 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=529d523e4931 Removed Files: monetdb5/modules/mosaic/Tests/mosaic_calendar.malC monetdb5/modules/mosaic/Tests/mosaic_calendar.stable.err monetdb5/modules/mosaic/Tests/mosaic_calendar.stable.out monetdb5/modules/mosaic/mosaic_calendar.c monetdb5/modules/mosaic/mosaic_calendar.h Modified Files: monetdb5/modules/mosaic/Makefile.ag monetdb5/modules/mosaic/mosaic.c monetdb5/modules/mosaic/mosaic.h Branch: mosaic Log Message: Remove calendar from mosaic. diffs (truncated from 961 to 300 lines): diff --git a/monetdb5/modules/mosaic/Makefile.ag b/monetdb5/modules/mosaic/Makefile.ag --- a/monetdb5/modules/mosaic/Makefile.ag +++ b/monetdb5/modules/mosaic/Makefile.ag @@ -27,7 +27,6 @@ lib_mosaic = { mosaic_delta.c mosaic_delta.h \ mosaic_linear.c mosaic_linear.h \ mosaic_frame.c mosaic_frame.h \ - mosaic_calendar.c mosaic_calendar.h \ mosaic_prefix.c mosaic_prefix.h \ mosaic_private.h } diff --git a/monetdb5/modules/mosaic/Tests/mosaic_calendar.malC b/monetdb5/modules/mosaic/Tests/mosaic_calendar.malC deleted file mode 100644 --- a/monetdb5/modules/mosaic/Tests/mosaic_calendar.malC +++ /dev/null @@ -1,32 +0,0 @@ -# Calendar compressions - - -d:= bat.new(:date); -bat.append(d,"2014-08-14":date); -bat.append(d,"2014-08-14":date); -bat.append(d,"2014-08-14":date); -bat.append(d,"2014-08-14":date); -bat.append(d,"2014-08-15":date); -bat.append(d,"2015-07-11":date); -#bat.append(d,"2015-07-12":date); -#bat.append(d,"2016-12-31":date); - -io.print(d); -mosaic.compress(d,"calendar"); -d:= mosaic.decompress(d); -io.print(d); - -bs:= bat.new(:timestamp); -bat.append(bs,"2014-08-14 12:00:00":timestamp); -bat.append(bs,"2014-08-14 12:00:00":timestamp); -bat.append(bs,"2014-08-14 12:00:00":timestamp); -bat.append(bs,"2014-08-14 12:00:00":timestamp); -bat.append(bs,"2014-08-14 12:00:00":timestamp); -bat.append(bs,"2014-08-14 12:01:00":timestamp); -bat.append(bs,"2014-08-14 12:02:00":timestamp); -bs:= bat.append(bs,bs); - -io.print(bs); -mosaic.compress(bs,"calendar"); -mosaic.decompress(bs); -io.print(bs); diff --git a/monetdb5/modules/mosaic/Tests/mosaic_calendar.stable.err b/monetdb5/modules/mosaic/Tests/mosaic_calendar.stable.err deleted file mode 100644 --- a/monetdb5/modules/mosaic/Tests/mosaic_calendar.stable.err +++ /dev/null @@ -1,36 +0,0 @@ -stderr of test 'mosaic_calendar` in directory 'monetdb5/modules/mosaic` itself: - - -# 11:44:50 > -# 11:44:50 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=34331" "--set" "mapi_usock=/var/tmp/mtest-15740/.s.monetdb.34331" "--set" "monet_prompt=" "--forcemito" "--dbpath=/export/scratch1/mk/mosaic//Linux/var/MonetDB/mTests_monetdb5_modules_mosaic" "--set" "embedded_r=yes" "--set" "embedded_py=true" -# 11:44:50 > - -# builtin opt gdk_dbpath = /export/scratch1/mk/mosaic//Linux/var/monetdb5/dbfarm/demo -# builtin opt gdk_debug = 0 -# builtin opt gdk_vmtrim = no -# builtin opt monet_prompt = > -# builtin opt monet_daemon = no -# builtin opt mapi_port = 5 -# builtin opt mapi_open = false -# builtin opt mapi_autosense = false -# builtin opt sql_optimizer = default_pipe -# builtin opt sql_debug = 0 -# cmdline opt gdk_nr_threads = 0 -# cmdline opt mapi_open = true -# cmdline opt mapi_port = 34331 -# cmdline opt mapi_usock = /var/tmp/mtest-15740/.s.monetdb.34331 -# cmdline opt monet_prompt = -# cmdline opt gdk_dbpath = /export/scratch1/mk/mosaic//Linux/var/MonetDB/mTests_monetdb5_modules_mosaic -# cmdline opt embedded_r = yes -# cmdline opt embedded_py = true -# cmdline opt gdk_debug = 536870922 - -# 11:44:51 > -# 11:44:51 > "mclient" "-lmal" "-ftest" "-Eutf-8" "--host=/var/tmp/mtest-15740" "--port=34331" -# 11:44:51 > - - -# 11:44:51 > -# 11:44:51 > "Done." -# 11:44:51 > - diff --git a/monetdb5/modules/mosaic/Tests/mosaic_calendar.stable.out b/monetdb5/modules/mosaic/Tests/mosaic_calendar.stable.out deleted file mode 100644 --- a/monetdb5/modules/mosaic/Tests/mosaic_calendar.stable.out +++ /dev/null @@ -1,88 +0,0 @@ -stdout of test 'mosaic_calendar` in directory 'monetdb5/modules/mosaic` itself: - - -# 11:44:50 > -# 11:44:50 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=34331" "--set" "mapi_usock=/var/tmp/mtest-15740/.s.monetdb.34331" "--set" "monet_prompt=" "--forcemito" "--dbpath=/export/scratch1/mk/mosaic//Linux/var/MonetDB/mTests_monetdb5_modules_mosaic" "--set" "embedded_r=yes" "--set" "embedded_py=true" -# 11:44:50 > - -# MonetDB 5 server v11.26.0 -# This is an unreleased version -# Serving database 'mTests_monetdb5_modules_mosaic', using 8 threads -# Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers -# Found 15.589 GiB available main-memory. -# Copyright (c)
MonetDB: mosaic - Update TODO's.
Changeset: 4a06e3e7784a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4a06e3e7784a Modified Files: monetdb5/modules/mosaic/TODO_MOSAIC.txt Branch: mosaic Log Message: Update TODO's. diffs (25 lines): diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt b/monetdb5/modules/mosaic/TODO_MOSAIC.txt --- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt +++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt @@ -2,17 +2,19 @@ Somehow log/print which compression is being used. Potentially use (3) Test null semantics mosaic.select (c,nil:any_1, nil:any_1,true,true,(true|false)) is not working correctly: should result in c == nil or c!=nil(anti). +dictionary encoding should use the ordered property of its dictionary in the algebraic operators Use bit vectors more aggressively in mosaic_delta --- then resolve test mosaic_delta_timestamp --- and possibly other compression techniques as well. +Somehow force mosaic to only use specified compressions even if inefficient. Add test for float/double -dictionary encoding should use the ordered property of its dictionary in the algebraic operators delta compression: check if the hardcoded compression expression are correct. See also (2) Add asserts on type degeneration for bit => bte daytime => lng timestmap => lng date => int. -Somehow force mosaic to only use specified compressions even if inefficient. Remove task-factor and range->factor or refactor them. See if we can re-introduce landmark stuff somehow. Fix/check/test MOSlayout. (3*) +benchmark code issues mosaic_prefix.c: prefix code does not use macro's mosaic_delta.c: improve the macro's: for instance get rid of hardcoded expression arguments in DELTAcompress. (2*) mosaic_.c: for type macro's use macro-wised inline functions. +Improve the administration of the various hard coded compression techniques. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Approve test output.
Changeset: 70a5020b7996 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=70a5020b7996 Modified Files: sql/test/mosaic/Tests/xqueries_delta.stable.err Branch: mosaic Log Message: Approve test output. diffs (16 lines): diff --git a/sql/test/mosaic/Tests/xqueries_delta.stable.err b/sql/test/mosaic/Tests/xqueries_delta.stable.err --- a/sql/test/mosaic/Tests/xqueries_delta.stable.err +++ b/sql/test/mosaic/Tests/xqueries_delta.stable.err @@ -30,6 +30,12 @@ stderr of test 'xqueries_delta` in direc # 21:39:36 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-26302" "--port=38894" # 21:39:36 > +MAPI = (monetdb) /var/tmp/mtest-12023/.s.monetdb.37223 +QUERY = alter table dtmp3 alter column b set storage 'delta'; +ERROR = !No valid compression technique given or available for type: bit +MAPI = (monetdb) /var/tmp/mtest-12023/.s.monetdb.37223 +QUERY = alter table dtmp3 alter column f set storage 'delta'; +ERROR = !No valid compression technique given or available for type: flt # 21:39:36 > # 21:39:36 > "Done." ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Update TODO's.
Changeset: 869562145dba for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=869562145dba Modified Files: monetdb5/modules/mosaic/TODO_MOSAIC.txt Branch: mosaic Log Message: Update TODO's. diffs (29 lines): diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt b/monetdb5/modules/mosaic/TODO_MOSAIC.txt --- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt +++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt @@ -1,17 +1,18 @@ technical depth +Somehow log/print which compression is being used. Potentially use (3) Test null semantics mosaic.select (c,nil:any_1, nil:any_1,true,true,(true|false)) is not working correctly: should result in c == nil or c!=nil(anti). +Use bit vectors more aggressively in mosaic_delta --- then resolve test mosaic_delta_timestamp --- and possibly other compression techniques as well. Add test for float/double -Add test for bit -Remove task-factor and range->factor or refactor them. -Somehow log/print which compression is being used. +dictionary encoding should use the ordered property of its dictionary in the algebraic operators delta compression: check if the hardcoded compression expression are correct. See also (2) -Use bit vectors more aggressively in mosaic_delta --- then resolve test mosaic_delta_timestamp --- and possibly other compression techniques as well. -dictionary encoding should use the ordered property of its dictionary in the algebraic operators +Add asserts on type degeneration for bit => bte daytime => lng timestmap => lng date => int. +Somehow force mosaic to only use specified compressions even if inefficient. +Remove task-factor and range->factor or refactor them. See if we can re-introduce landmark stuff somehow. -Add asserts on type degeneration for bit => bte daytime => lng timestmap => lng date => int. +Fix/check/test MOSlayout. (3*) code issues mosaic_prefix.c: prefix code does not use macro's -mosaic_delta.c: improve the macro's: for instance get rid of hardcoded expression arguments in DELTAcompress. (2) +mosaic_delta.c: improve the macro's: for instance get rid of hardcoded expression arguments in DELTAcompress. (2*) mosaic_.c: for type macro's use macro-wised inline functions. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Migrate all timestamp tests to Python.
Changeset: d30f2cff39d9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d30f2cff39d9 Added Files: monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.delta.MAL.py monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.delta.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.dictionary.MAL.py monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.dictionary.stable.err monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.frame.MAL.py monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.frame.stable.err monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.mal monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.prefix.MAL.py monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.prefix.stable.err monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.MAL.py monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.stable.err monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.linear.MAL.py monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.linear.stable.err monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.mal monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.runlength.MAL.py monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.runlength.stable.err monetdb5/modules/mosaic/Tests/mosaic_timestamp_2.runlength.stable.out Removed Files: monetdb5/modules/mosaic/Tests/mosaic_delta_timestamp.malC monetdb5/modules/mosaic/Tests/mosaic_delta_timestamp.stable.err monetdb5/modules/mosaic/Tests/mosaic_delta_timestamp.stable.out monetdb5/modules/mosaic/Tests/mosaic_dictionary_timestamp.malC monetdb5/modules/mosaic/Tests/mosaic_dictionary_timestamp.stable.err monetdb5/modules/mosaic/Tests/mosaic_dictionary_timestamp.stable.out monetdb5/modules/mosaic/Tests/mosaic_frame_timestamp.malC monetdb5/modules/mosaic/Tests/mosaic_frame_timestamp.stable.err monetdb5/modules/mosaic/Tests/mosaic_frame_timestamp.stable.out monetdb5/modules/mosaic/Tests/mosaic_linear_timestamp.malC monetdb5/modules/mosaic/Tests/mosaic_linear_timestamp.stable.err monetdb5/modules/mosaic/Tests/mosaic_linear_timestamp.stable.out monetdb5/modules/mosaic/Tests/mosaic_prefix_timestamp.malC monetdb5/modules/mosaic/Tests/mosaic_prefix_timestamp.stable.err monetdb5/modules/mosaic/Tests/mosaic_prefix_timestamp.stable.out monetdb5/modules/mosaic/Tests/mosaic_raw_timestamp.malC monetdb5/modules/mosaic/Tests/mosaic_raw_timestamp.stable.err monetdb5/modules/mosaic/Tests/mosaic_raw_timestamp.stable.out monetdb5/modules/mosaic/Tests/mosaic_runlength_timestamp.malC monetdb5/modules/mosaic/Tests/mosaic_runlength_timestamp.stable.err monetdb5/modules/mosaic/Tests/mosaic_runlength_timestamp.stable.out Modified Files: monetdb5/modules/mosaic/Tests/All Branch: mosaic Log Message: Migrate all timestamp tests to Python. diffs (truncated from 20149 to 300 lines): diff --git a/monetdb5/modules/mosaic/Tests/All b/monetdb5/modules/mosaic/Tests/All --- a/monetdb5/modules/mosaic/Tests/All +++ b/monetdb5/modules/mosaic/Tests/All @@ -30,39 +30,39 @@ mosaic_bit_1.raw mosaic_lng_1.raw mosaic_oid_1.raw mosaic_date_1.raw -mosaic_raw_timestamp +mosaic_timestamp_1.raw mosaic_bit_2.runlength mosaic_lng_2.runlength mosaic_oid_2.runlength mosaic_date_2.runlength -mosaic_runlength_timestamp +mosaic_timestamp_2.runlength mosaic_bit_1.dictionary mosaic_lng_1.dictionary mosaic_oid_1.dictionary mosaic_date_1.dictionary -mosaic_dictionary_timestamp +mosaic_timestamp_1.dictionary mosaic_lng_1.delta mosaic_oid_1.delta mosaic_date_1.delta -mosaic_delta_timestamp +#mosaic_timestamp_1.delta mosaic_bit_2.linear mosaic_lng_2.linear mosaic_oid_2.linear mosaic_date_2.linear -mosaic_linear_timestamp +mosaic_timestamp_2.linear mosaic_bit_1.frame mosaic_lng_1.frame mosaic_oid_1.frame mosaic_date_1.frame -mosaic_frame_timestamp +mosaic_timestamp_1.frame mosaic_bit_1.prefix mosaic_lng_1.prefix mosaic_oid_1.prefix mosaic_date_1.prefix -mosaic_prefix_timestamp +mosaic_timestamp_1.prefix diff --git a/monetdb5/modules/mosaic/Tests/mosaic_delta_timestamp.malC b/monetdb5/modules/mosaic/Tests/mosaic_delta_timestamp.malC deleted file mode 100644 --- a/monetdb5/modules/mosaic/Tests/mosaic_delta_timestamp.malC +++ /dev/null @@ -1,874 +0,0 @@ -TODO := "Does not use delta compression! Fix hardcoded type of delta!":str; -io.print(TODO); - -a:= bat.new(:timestamp); -bat.append(a,"2014-08-14 12:10:00":timestamp);
MonetDB: mosaic - Migrate all date tests to Python.
Changeset: 1a1e5f30de2e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1a1e5f30de2e Added Files: monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.MAL.py monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.stable.err monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.dictionary.MAL.py monetdb5/modules/mosaic/Tests/mosaic_date_1.dictionary.stable.err monetdb5/modules/mosaic/Tests/mosaic_date_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.frame.MAL.py monetdb5/modules/mosaic/Tests/mosaic_date_1.frame.stable.err monetdb5/modules/mosaic/Tests/mosaic_date_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.mal monetdb5/modules/mosaic/Tests/mosaic_date_1.prefix.MAL.py monetdb5/modules/mosaic/Tests/mosaic_date_1.prefix.stable.err monetdb5/modules/mosaic/Tests/mosaic_date_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.MAL.py monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.stable.err monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_2.linear.MAL.py monetdb5/modules/mosaic/Tests/mosaic_date_2.linear.stable.err monetdb5/modules/mosaic/Tests/mosaic_date_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_date_2.mal monetdb5/modules/mosaic/Tests/mosaic_date_2.runlength.MAL.py monetdb5/modules/mosaic/Tests/mosaic_date_2.runlength.stable.err monetdb5/modules/mosaic/Tests/mosaic_date_2.runlength.stable.out Removed Files: monetdb5/modules/mosaic/Tests/mosaic_delta_date.malC monetdb5/modules/mosaic/Tests/mosaic_delta_date.stable.err monetdb5/modules/mosaic/Tests/mosaic_delta_date.stable.out monetdb5/modules/mosaic/Tests/mosaic_dictionary_date.malC monetdb5/modules/mosaic/Tests/mosaic_dictionary_date.stable.err monetdb5/modules/mosaic/Tests/mosaic_dictionary_date.stable.out monetdb5/modules/mosaic/Tests/mosaic_frame_date.malC monetdb5/modules/mosaic/Tests/mosaic_frame_date.stable.err monetdb5/modules/mosaic/Tests/mosaic_frame_date.stable.out monetdb5/modules/mosaic/Tests/mosaic_linear_date.malC monetdb5/modules/mosaic/Tests/mosaic_linear_date.stable.err monetdb5/modules/mosaic/Tests/mosaic_linear_date.stable.out monetdb5/modules/mosaic/Tests/mosaic_prefix_date.malC monetdb5/modules/mosaic/Tests/mosaic_prefix_date.stable.err monetdb5/modules/mosaic/Tests/mosaic_prefix_date.stable.out monetdb5/modules/mosaic/Tests/mosaic_raw_date.malC monetdb5/modules/mosaic/Tests/mosaic_raw_date.stable.err monetdb5/modules/mosaic/Tests/mosaic_raw_date.stable.out monetdb5/modules/mosaic/Tests/mosaic_runlength_date.malC monetdb5/modules/mosaic/Tests/mosaic_runlength_date.stable.err monetdb5/modules/mosaic/Tests/mosaic_runlength_date.stable.out Modified Files: monetdb5/modules/mosaic/Tests/All Branch: mosaic Log Message: Migrate all date tests to Python. diffs (truncated from 20417 to 300 lines): diff --git a/monetdb5/modules/mosaic/Tests/All b/monetdb5/modules/mosaic/Tests/All --- a/monetdb5/modules/mosaic/Tests/All +++ b/monetdb5/modules/mosaic/Tests/All @@ -29,40 +29,40 @@ mosaic_mix_joins mosaic_bit_1.raw mosaic_lng_1.raw mosaic_oid_1.raw -mosaic_raw_date +mosaic_date_1.raw mosaic_raw_timestamp mosaic_bit_2.runlength mosaic_lng_2.runlength mosaic_oid_2.runlength -mosaic_runlength_date +mosaic_date_2.runlength mosaic_runlength_timestamp mosaic_bit_1.dictionary mosaic_lng_1.dictionary mosaic_oid_1.dictionary -mosaic_dictionary_date +mosaic_date_1.dictionary mosaic_dictionary_timestamp mosaic_lng_1.delta mosaic_oid_1.delta -mosaic_delta_date +mosaic_date_1.delta mosaic_delta_timestamp mosaic_bit_2.linear mosaic_lng_2.linear mosaic_oid_2.linear -mosaic_linear_date +mosaic_date_2.linear mosaic_linear_timestamp mosaic_bit_1.frame mosaic_lng_1.frame mosaic_oid_1.frame -mosaic_frame_date +mosaic_date_1.frame mosaic_frame_timestamp mosaic_bit_1.prefix mosaic_lng_1.prefix mosaic_oid_1.prefix -mosaic_prefix_date +mosaic_date_1.prefix mosaic_prefix_timestamp diff --git a/monetdb5/modules/mosaic/Tests/mosaic_lng_1.dictionary.MAL.py b/monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.MAL.py copy from monetdb5/modules/mosaic/Tests/mosaic_lng_1.dictionary.MAL.py copy to monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.MAL.py diff --git a/monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.stable.err b/monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.stable.err new file mode 100644 --- /dev/null +++ b/monetdb5/modules/mosaic/Tests/mosaic_date_1.delta.stable.err @@ -0,0 +1,30 @@ +stderr of test 'mosaic_date_1.delta` in directory 'monetdb5/modules/mosaic` itself: + + +# 14:02:13
MonetDB: mosaic - Migrate all oid tests to Python.
Changeset: bb3b1c086568 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bb3b1c086568 Added Files: monetdb5/modules/mosaic/Tests/mosaic_oid_1.delta.MAL.py monetdb5/modules/mosaic/Tests/mosaic_oid_1.delta.stable.err monetdb5/modules/mosaic/Tests/mosaic_oid_1.delta.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.dictionary.MAL.py monetdb5/modules/mosaic/Tests/mosaic_oid_1.dictionary.stable.err monetdb5/modules/mosaic/Tests/mosaic_oid_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.frame.MAL.py monetdb5/modules/mosaic/Tests/mosaic_oid_1.frame.stable.err monetdb5/modules/mosaic/Tests/mosaic_oid_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.mal monetdb5/modules/mosaic/Tests/mosaic_oid_1.prefix.MAL.py monetdb5/modules/mosaic/Tests/mosaic_oid_1.prefix.stable.err monetdb5/modules/mosaic/Tests/mosaic_oid_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.MAL.py monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.stable.err monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_2.linear.MAL.py monetdb5/modules/mosaic/Tests/mosaic_oid_2.linear.stable.err monetdb5/modules/mosaic/Tests/mosaic_oid_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_oid_2.mal monetdb5/modules/mosaic/Tests/mosaic_oid_2.runlength.MAL.py monetdb5/modules/mosaic/Tests/mosaic_oid_2.runlength.stable.err monetdb5/modules/mosaic/Tests/mosaic_oid_2.runlength.stable.out Removed Files: monetdb5/modules/mosaic/Tests/mosaic_delta_oid.malC monetdb5/modules/mosaic/Tests/mosaic_delta_oid.stable.err monetdb5/modules/mosaic/Tests/mosaic_delta_oid.stable.out monetdb5/modules/mosaic/Tests/mosaic_dictionary_oid.malC monetdb5/modules/mosaic/Tests/mosaic_dictionary_oid.stable.err monetdb5/modules/mosaic/Tests/mosaic_dictionary_oid.stable.out monetdb5/modules/mosaic/Tests/mosaic_frame_oid.malC monetdb5/modules/mosaic/Tests/mosaic_frame_oid.stable.err monetdb5/modules/mosaic/Tests/mosaic_frame_oid.stable.out monetdb5/modules/mosaic/Tests/mosaic_linear_oid.malC monetdb5/modules/mosaic/Tests/mosaic_linear_oid.stable.err monetdb5/modules/mosaic/Tests/mosaic_linear_oid.stable.out monetdb5/modules/mosaic/Tests/mosaic_prefix_oid.malC monetdb5/modules/mosaic/Tests/mosaic_prefix_oid.stable.err monetdb5/modules/mosaic/Tests/mosaic_prefix_oid.stable.out monetdb5/modules/mosaic/Tests/mosaic_raw_oid.malC monetdb5/modules/mosaic/Tests/mosaic_raw_oid.stable.err monetdb5/modules/mosaic/Tests/mosaic_raw_oid.stable.out monetdb5/modules/mosaic/Tests/mosaic_runlength_oid.malC monetdb5/modules/mosaic/Tests/mosaic_runlength_oid.stable.err monetdb5/modules/mosaic/Tests/mosaic_runlength_oid.stable.out Modified Files: monetdb5/modules/mosaic/Tests/All Branch: mosaic Log Message: Migrate all oid tests to Python. diffs (truncated from 19758 to 300 lines): diff --git a/monetdb5/modules/mosaic/Tests/All b/monetdb5/modules/mosaic/Tests/All --- a/monetdb5/modules/mosaic/Tests/All +++ b/monetdb5/modules/mosaic/Tests/All @@ -28,41 +28,41 @@ mosaic_mix_joins mosaic_bit_1.raw mosaic_lng_1.raw -mosaic_raw_oid +mosaic_oid_1.raw mosaic_raw_date mosaic_raw_timestamp mosaic_bit_2.runlength mosaic_lng_2.runlength -mosaic_runlength_oid +mosaic_oid_2.runlength mosaic_runlength_date mosaic_runlength_timestamp mosaic_bit_1.dictionary mosaic_lng_1.dictionary -mosaic_dictionary_oid +mosaic_oid_1.dictionary mosaic_dictionary_date mosaic_dictionary_timestamp -mosaic_delta_oid mosaic_lng_1.delta +mosaic_oid_1.delta mosaic_delta_date mosaic_delta_timestamp mosaic_bit_2.linear mosaic_lng_2.linear -mosaic_linear_oid +mosaic_oid_2.linear mosaic_linear_date mosaic_linear_timestamp mosaic_bit_1.frame mosaic_lng_1.frame -mosaic_frame_oid +mosaic_oid_1.frame mosaic_frame_date mosaic_frame_timestamp mosaic_bit_1.prefix mosaic_lng_1.prefix -mosaic_prefix_oid +mosaic_oid_1.prefix mosaic_prefix_date mosaic_prefix_timestamp diff --git a/monetdb5/modules/mosaic/Tests/mosaic_delta_oid.malC b/monetdb5/modules/mosaic/Tests/mosaic_delta_oid.malC deleted file mode 100644 --- a/monetdb5/modules/mosaic/Tests/mosaic_delta_oid.malC +++ /dev/null @@ -1,688 +0,0 @@ -a:= bat.new(:oid); -bat.append(a,1000:oid); -bat.append(a,1001:oid); -bat.append(a,999:oid); -bat.append(a,1002:oid); -bat.append(a,998:oid); -bat.append(a,1010:oid); -bat.append(a,990:oid); -bat.append(a,995:oid); -bat.append(a,1005:oid); -bat.append(a,1002:oid); -bat.append(a,1000:oid); -bat.append(a,1001:oid); -bat.append(a,999:oid); -bat.append(a,1002:oid); -bat.append(a,998:oid); -bat.append(a,1010:oid); -bat.append(a,990:oid);
MonetDB: mosaic - Migrate all bit tests to Python.
Changeset: 04a3cde748da for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=04a3cde748da Added Files: monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.MAL.py monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.stable.err monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_1.frame.MAL.py monetdb5/modules/mosaic/Tests/mosaic_bit_1.frame.stable.err monetdb5/modules/mosaic/Tests/mosaic_bit_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_1.mal monetdb5/modules/mosaic/Tests/mosaic_bit_1.prefix.MAL.py monetdb5/modules/mosaic/Tests/mosaic_bit_1.prefix.stable.err monetdb5/modules/mosaic/Tests/mosaic_bit_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.MAL.py monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.stable.err monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_2.linear.MAL.py monetdb5/modules/mosaic/Tests/mosaic_bit_2.linear.stable.err monetdb5/modules/mosaic/Tests/mosaic_bit_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_bit_2.mal monetdb5/modules/mosaic/Tests/mosaic_bit_2.runlength.MAL.py monetdb5/modules/mosaic/Tests/mosaic_bit_2.runlength.stable.err monetdb5/modules/mosaic/Tests/mosaic_bit_2.runlength.stable.out Removed Files: monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.malC monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_frame_bit.malC monetdb5/modules/mosaic/Tests/mosaic_frame_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_frame_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_linear_bit.malC monetdb5/modules/mosaic/Tests/mosaic_linear_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_linear_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_prefix_bit.malC monetdb5/modules/mosaic/Tests/mosaic_prefix_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_prefix_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_raw_bit.malC monetdb5/modules/mosaic/Tests/mosaic_raw_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_raw_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_runlength_bit.malC monetdb5/modules/mosaic/Tests/mosaic_runlength_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_runlength_bit.stable.out Modified Files: monetdb5/modules/mosaic/Tests/All Branch: mosaic Log Message: Migrate all bit tests to Python. diffs (truncated from 15721 to 300 lines): diff --git a/monetdb5/modules/mosaic/Tests/All b/monetdb5/modules/mosaic/Tests/All --- a/monetdb5/modules/mosaic/Tests/All +++ b/monetdb5/modules/mosaic/Tests/All @@ -26,19 +26,19 @@ mosaic_linear_joins mosaic_prefix_joins mosaic_mix_joins -mosaic_raw_bit +mosaic_bit_1.raw mosaic_lng_1.raw mosaic_raw_oid mosaic_raw_date mosaic_raw_timestamp -mosaic_runlength_bit +mosaic_bit_2.runlength mosaic_lng_2.runlength mosaic_runlength_oid mosaic_runlength_date mosaic_runlength_timestamp -mosaic_dictionary_bit +mosaic_bit_1.dictionary mosaic_lng_1.dictionary mosaic_dictionary_oid mosaic_dictionary_date @@ -49,19 +49,19 @@ mosaic_lng_1.delta mosaic_delta_date mosaic_delta_timestamp -mosaic_linear_bit +mosaic_bit_2.linear mosaic_lng_2.linear mosaic_linear_oid mosaic_linear_date mosaic_linear_timestamp -mosaic_frame_bit +mosaic_bit_1.frame mosaic_lng_1.frame mosaic_frame_oid mosaic_frame_date mosaic_frame_timestamp -mosaic_prefix_bit +mosaic_bit_1.prefix mosaic_lng_1.prefix mosaic_prefix_oid mosaic_prefix_date diff --git a/monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.MAL.py b/monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.MAL.py new file mode 100644 --- /dev/null +++ b/monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.MAL.py @@ -0,0 +1,2 @@ +from run_mal_client import main +main(__file__) diff --git a/monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.stable.err b/monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.stable.err new file mode 100644 --- /dev/null +++ b/monetdb5/modules/mosaic/Tests/mosaic_bit_1.dictionary.stable.err @@ -0,0 +1,30 @@ +stderr of test 'mosaic_bit_1.dictionary` in directory 'monetdb5/modules/mosaic` itself: + + +# 13:33:18 > +# 13:33:18 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=39905" "--set" "mapi_usock=/var/tmp/mtest-8288/.s.monetdb.39905" "--forcemito" "--dbpath=/home/aris/sources/monetdb/build/installation/var/MonetDB/mTests_monetdb5_modules_mosaic" "--set" "embedded_c=true" +# 13:33:18 > + +# builtin opt gdk_dbpath = /home/aris/sources/monetdb/build/installation/var/monetdb5/dbfarm/demo +#
MonetDB: mosaic - Migrate all lng tests to Python.
Changeset: 6c089e08154c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6c089e08154c Added Files: monetdb5/modules/mosaic/Tests/mosaic_lng_1.delta.MAL.py monetdb5/modules/mosaic/Tests/mosaic_lng_1.delta.stable.err monetdb5/modules/mosaic/Tests/mosaic_lng_1.delta.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_1.dictionary.MAL.py monetdb5/modules/mosaic/Tests/mosaic_lng_1.dictionary.stable.err monetdb5/modules/mosaic/Tests/mosaic_lng_1.dictionary.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_1.frame.MAL.py monetdb5/modules/mosaic/Tests/mosaic_lng_1.frame.stable.err monetdb5/modules/mosaic/Tests/mosaic_lng_1.frame.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_1.prefix.MAL.py monetdb5/modules/mosaic/Tests/mosaic_lng_1.prefix.stable.err monetdb5/modules/mosaic/Tests/mosaic_lng_1.prefix.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_2.linear.MAL.py monetdb5/modules/mosaic/Tests/mosaic_lng_2.linear.stable.err monetdb5/modules/mosaic/Tests/mosaic_lng_2.linear.stable.out monetdb5/modules/mosaic/Tests/mosaic_lng_2.mal monetdb5/modules/mosaic/Tests/mosaic_lng_2.runlength.MAL.py monetdb5/modules/mosaic/Tests/mosaic_lng_2.runlength.stable.err monetdb5/modules/mosaic/Tests/mosaic_lng_2.runlength.stable.out Removed Files: monetdb5/modules/mosaic/Tests/mosaic_delta_lng.malC monetdb5/modules/mosaic/Tests/mosaic_delta_lng.stable.err monetdb5/modules/mosaic/Tests/mosaic_delta_lng.stable.out monetdb5/modules/mosaic/Tests/mosaic_dictionary_lng.malC monetdb5/modules/mosaic/Tests/mosaic_dictionary_lng.stable.err monetdb5/modules/mosaic/Tests/mosaic_dictionary_lng.stable.out monetdb5/modules/mosaic/Tests/mosaic_frame_lng.malC monetdb5/modules/mosaic/Tests/mosaic_frame_lng.stable.err monetdb5/modules/mosaic/Tests/mosaic_frame_lng.stable.out monetdb5/modules/mosaic/Tests/mosaic_linear_lng.malC monetdb5/modules/mosaic/Tests/mosaic_linear_lng.stable.err monetdb5/modules/mosaic/Tests/mosaic_linear_lng.stable.out monetdb5/modules/mosaic/Tests/mosaic_prefix_lng.malC monetdb5/modules/mosaic/Tests/mosaic_prefix_lng.stable.err monetdb5/modules/mosaic/Tests/mosaic_prefix_lng.stable.out monetdb5/modules/mosaic/Tests/mosaic_runlength_lng.malC monetdb5/modules/mosaic/Tests/mosaic_runlength_lng.stable.err monetdb5/modules/mosaic/Tests/mosaic_runlength_lng.stable.out Modified Files: monetdb5/modules/mosaic/Tests/All Branch: mosaic Log Message: Migrate all lng tests to Python. diffs (truncated from 30528 to 300 lines): diff --git a/monetdb5/modules/mosaic/Tests/All b/monetdb5/modules/mosaic/Tests/All --- a/monetdb5/modules/mosaic/Tests/All +++ b/monetdb5/modules/mosaic/Tests/All @@ -33,36 +33,36 @@ mosaic_raw_date mosaic_raw_timestamp mosaic_runlength_bit -mosaic_runlength_lng +mosaic_lng_2.runlength mosaic_runlength_oid mosaic_runlength_date mosaic_runlength_timestamp mosaic_dictionary_bit -mosaic_dictionary_lng +mosaic_lng_1.dictionary mosaic_dictionary_oid mosaic_dictionary_date mosaic_dictionary_timestamp mosaic_delta_oid -mosaic_delta_lng +mosaic_lng_1.delta mosaic_delta_date mosaic_delta_timestamp mosaic_linear_bit -mosaic_linear_lng +mosaic_lng_2.linear mosaic_linear_oid mosaic_linear_date mosaic_linear_timestamp mosaic_frame_bit -mosaic_frame_lng +mosaic_lng_1.frame mosaic_frame_oid mosaic_frame_date mosaic_frame_timestamp mosaic_prefix_bit -mosaic_prefix_lng +mosaic_lng_1.prefix mosaic_prefix_oid mosaic_prefix_date mosaic_prefix_timestamp diff --git a/monetdb5/modules/mosaic/Tests/mosaic_delta_lng.malC b/monetdb5/modules/mosaic/Tests/mosaic_delta_lng.malC deleted file mode 100644 --- a/monetdb5/modules/mosaic/Tests/mosaic_delta_lng.malC +++ /dev/null @@ -1,687 +0,0 @@ -a:= bat.new(:lng); -bat.append(a,1000:lng); -bat.append(a,1001:lng); -bat.append(a,999:lng); -bat.append(a,1002:lng); -bat.append(a,998:lng); -bat.append(a,1010:lng); -bat.append(a,990:lng); -bat.append(a,995:lng); -bat.append(a,1005:lng); -bat.append(a,1002:lng); -bat.append(a,1000:lng); -bat.append(a,1001:lng); -bat.append(a,999:lng); -bat.append(a,1002:lng); -bat.append(a,998:lng); -bat.append(a,1010:lng); -bat.append(a,990:lng); -bat.append(a,995:lng); -bat.append(a,1005:lng); -bat.append(a,1002:lng); -bat.append(a,1000:lng); -bat.append(a,1001:lng); -bat.append(a,999:lng); -bat.append(a,1002:lng); -bat.append(a,998:lng); -bat.append(a,1010:lng); -bat.append(a,990:lng); -bat.append(a,995:lng); -bat.append(a,1005:lng); -bat.append(a,1002:lng); -mosaic.compress(a,"delta"); -c:= mosaic.decompress(a); -io.print(a, c); - -sa:= algebra.select(a,nil:lng, nil:lng,false,false,false); -sc:= mosaic.select (c,nil:lng, nil:lng,false,false,false); -io.print(sa, sc); - -sa:=
MonetDB: mosaic - Introduce a Python mini test framework for Mos...
Changeset: 7663ed65f293 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7663ed65f293 Added Files: monetdb5/modules/mosaic/Tests/mosaic_lng_1.mal monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.MAL.py monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.stable.err monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.stable.out monetdb5/modules/mosaic/Tests/run_mal_client.py Removed Files: monetdb5/modules/mosaic/Tests/mosaic_raw_lng.malC monetdb5/modules/mosaic/Tests/mosaic_raw_lng.stable.err monetdb5/modules/mosaic/Tests/mosaic_raw_lng.stable.out Modified Files: monetdb5/modules/mosaic/Tests/All Branch: mosaic Log Message: Introduce a Python mini test framework for Mosaic MAL tests: This framework will help to deduplicate lots of test script code due to testing the same input under different compression techniques. diffs (truncated from 7417 to 300 lines): diff --git a/monetdb5/modules/mosaic/Tests/All b/monetdb5/modules/mosaic/Tests/All --- a/monetdb5/modules/mosaic/Tests/All +++ b/monetdb5/modules/mosaic/Tests/All @@ -27,7 +27,7 @@ mosaic_prefix_joins mosaic_mix_joins mosaic_raw_bit -mosaic_raw_lng +mosaic_lng_1.raw mosaic_raw_oid mosaic_raw_date mosaic_raw_timestamp diff --git a/monetdb5/modules/mosaic/Tests/mosaic_lng_1.mal b/monetdb5/modules/mosaic/Tests/mosaic_lng_1.mal new file mode 100644 --- /dev/null +++ b/monetdb5/modules/mosaic/Tests/mosaic_lng_1.mal @@ -0,0 +1,687 @@ +a:= bat.new(:lng); +bat.append(a,1000:lng); +bat.append(a,1001:lng); +bat.append(a,999:lng); +bat.append(a,1002:lng); +bat.append(a,998:lng); +bat.append(a,1010:lng); +bat.append(a,990:lng); +bat.append(a,995:lng); +bat.append(a,1005:lng); +bat.append(a,1002:lng); +bat.append(a,1000:lng); +bat.append(a,1001:lng); +bat.append(a,999:lng); +bat.append(a,1002:lng); +bat.append(a,998:lng); +bat.append(a,1010:lng); +bat.append(a,990:lng); +bat.append(a,995:lng); +bat.append(a,1005:lng); +bat.append(a,1002:lng); +bat.append(a,1000:lng); +bat.append(a,1001:lng); +bat.append(a,999:lng); +bat.append(a,1002:lng); +bat.append(a,998:lng); +bat.append(a,1010:lng); +bat.append(a,990:lng); +bat.append(a,995:lng); +bat.append(a,1005:lng); +bat.append(a,1002:lng); +mosaic.compress(a,"{compression_type}"); +c:= mosaic.decompress(a); +io.print(a, c); + +sa:= algebra.select(a,nil:lng, nil:lng,false,false,false); +sc:= mosaic.select (c,nil:lng, nil:lng,false,false,false); +io.print(sa, sc); + +sa:= algebra.select(a,nil:lng, nil:lng,false,false,true); +sc:= mosaic.select (c,nil:lng, nil:lng,false,false,true); +io.print(sa, sc); + +sa:= algebra.select(a,1000:lng, nil:lng,false,false,false); +sc:= mosaic.select (c,1000:lng, nil:lng,false,false,false); +tsa:= algebra.thetaselect(a,1000:lng, ">"); +tsc:= mosaic.thetaselect (c,1000:lng, ">"); +io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,nil:lng, 1000:lng,false,false,false); +sc:= mosaic.select (c,nil:lng, 1000:lng,false,false,false); +tsa:= algebra.thetaselect(a,1000:lng, "<"); +tsc:= mosaic.thetaselect (c,1000:lng, "<"); +io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,900:lng, nil:lng,false,false,false); +sc:= mosaic.select (c,900:lng, nil:lng,false,false,false); +tsa:= algebra.thetaselect(a,900:lng, ">"); +tsc:= mosaic.thetaselect (c,900:lng, ">"); +io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,nil:lng, 900:lng,false,false,false); +sc:= mosaic.select (c,nil:lng, 900:lng,false,false,false); +tsa:= algebra.thetaselect(a,900:lng, "<"); +tsc:= mosaic.thetaselect (c,900:lng, "<"); +#io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,900:lng, nil:lng,true,false,false); +sc:= mosaic.select (c,900:lng, nil:lng,true,false,false); +tsa:= algebra.thetaselect(a,900:lng, ">="); +tsc:= mosaic.thetaselect (c,900:lng, ">="); +io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,nil:lng, 900:lng,false,true,false); +sc:= mosaic.select (c,nil:lng, 900:lng,false,true,false); +tsa:= algebra.thetaselect(a,900:lng, "<="); +tsc:= mosaic.thetaselect (c,900:lng, "<="); +io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,1000:lng, nil:lng,true,false,false); +sc:= mosaic.select (c,1000:lng, nil:lng,true,false,false); +tsa:= algebra.thetaselect(a,1000:lng, ">="); +tsc:= mosaic.thetaselect (c,1000:lng, ">="); +io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,nil:lng, 1000:lng,false,true,false); +sc:= mosaic.select (c,nil:lng, 1000:lng,false,true,false); +tsa:= algebra.thetaselect(a,1000:lng, "<="); +tsc:= mosaic.thetaselect (c,1000:lng, "<="); +io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,1000:lng, 1000:lng,true,true,false); +sc:= mosaic.select (c,1000:lng, 1000:lng,true,true,false); +tsa:= algebra.thetaselect(a,1000:lng, "=="); +tsc:= mosaic.thetaselect (c,1000:lng, "=="); +io.print(sa, sc, tsa, tsc); + +sa:= algebra.select(a,1000:lng, 1000:lng,true,true,true); +sc:= mosaic.select (c,1000:lng, 1000:lng,true,true,true); +tsa:= algebra.thetaselect(a,1000:lng, "!="); +tsc:= mosaic.thetaselect (c,1000:lng,
MonetDB: mosaic - Update TODO's.
Changeset: c1c8714d044a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c1c8714d044a Modified Files: monetdb5/modules/mosaic/TODO_MOSAIC.txt Branch: mosaic Log Message: Update TODO's. diffs (17 lines): diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt b/monetdb5/modules/mosaic/TODO_MOSAIC.txt --- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt +++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt @@ -1,5 +1,4 @@ technical depth -Check which compressions can handle bit/boolean types. Test null semantics mosaic.select (c,nil:any_1, nil:any_1,true,true,(true|false)) is not working correctly: should result in c == nil or c!=nil(anti). Add test for float/double @@ -10,6 +9,7 @@ delta compression: check if the hardcode Use bit vectors more aggressively in mosaic_delta --- then resolve test mosaic_delta_timestamp --- and possibly other compression techniques as well. dictionary encoding should use the ordered property of its dictionary in the algebraic operators See if we can re-introduce landmark stuff somehow. +Add asserts on type degeneration for bit => bte daytime => lng timestmap => lng date => int. code issues mosaic_prefix.c: prefix code does not use macro's ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - raw, runlength, dictionary, frame and prefix s...
Changeset: 5aad6a66e189 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5aad6a66e189 Added Files: monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.malC monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_frame_bit.malC monetdb5/modules/mosaic/Tests/mosaic_frame_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_frame_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_linear_bit.malC monetdb5/modules/mosaic/Tests/mosaic_linear_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_linear_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_prefix_bit.malC monetdb5/modules/mosaic/Tests/mosaic_prefix_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_prefix_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_raw_bit.malC monetdb5/modules/mosaic/Tests/mosaic_raw_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_raw_bit.stable.out monetdb5/modules/mosaic/Tests/mosaic_runlength_bit.malC monetdb5/modules/mosaic/Tests/mosaic_runlength_bit.stable.err monetdb5/modules/mosaic/Tests/mosaic_runlength_bit.stable.out Modified Files: monetdb5/modules/mosaic/Tests/All monetdb5/modules/mosaic/mosaic_dictionary.c monetdb5/modules/mosaic/mosaic_frame.c monetdb5/modules/mosaic/mosaic_linear.c monetdb5/modules/mosaic/mosaic_prefix.c monetdb5/modules/mosaic/mosaic_raw.c monetdb5/modules/mosaic/mosaic_runlength.c Branch: mosaic Log Message: raw, runlength, dictionary, frame and prefix support the bit/boolean type. diffs (truncated from 23173 to 300 lines): diff --git a/monetdb5/modules/mosaic/Tests/All b/monetdb5/modules/mosaic/Tests/All --- a/monetdb5/modules/mosaic/Tests/All +++ b/monetdb5/modules/mosaic/Tests/All @@ -26,37 +26,43 @@ mosaic_linear_joins mosaic_prefix_joins mosaic_mix_joins +mosaic_raw_bit mosaic_raw_lng mosaic_raw_oid mosaic_raw_date mosaic_raw_timestamp +mosaic_runlength_bit mosaic_runlength_lng mosaic_runlength_oid mosaic_runlength_date mosaic_runlength_timestamp +mosaic_dictionary_bit mosaic_dictionary_lng mosaic_dictionary_oid mosaic_dictionary_date mosaic_dictionary_timestamp +mosaic_delta_oid +mosaic_delta_lng +mosaic_delta_date +mosaic_delta_timestamp + +mosaic_linear_bit mosaic_linear_lng mosaic_linear_oid mosaic_linear_date mosaic_linear_timestamp -mosaic_prefix_lng -mosaic_prefix_oid -mosaic_prefix_date -mosaic_prefix_timestamp - +mosaic_frame_bit mosaic_frame_lng mosaic_frame_oid mosaic_frame_date mosaic_frame_timestamp -mosaic_delta_oid -mosaic_delta_lng -mosaic_delta_date -mosaic_delta_timestamp +mosaic_prefix_bit +mosaic_prefix_lng +mosaic_prefix_oid +mosaic_prefix_date +mosaic_prefix_timestamp diff --git a/monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.malC b/monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.malC new file mode 100644 --- /dev/null +++ b/monetdb5/modules/mosaic/Tests/mosaic_dictionary_bit.malC @@ -0,0 +1,413 @@ +a:= bat.new(:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,false:bit); +bat.append(a,true:bit); +bat.append(a,true:bit); +bat.append(a,false:bit); +mosaic.compress(a,"dictionary"); +c:= mosaic.decompress(a); +io.print(a, c); + +sa:= algebra.select(a,nil:bit, nil:bit,false,false,false); +sc:= mosaic.select (c,nil:bit, nil:bit,false,false,false); +io.print(sa, sc); + +sa:= algebra.select(a,true:bit, nil:bit,false,false,false); +sc:=
MonetDB: mosaic - Code clean up: Use macro's.
Changeset: e355db1f2f40 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e355db1f2f40 Modified Files: monetdb5/modules/mosaic/mosaic_linear.c monetdb5/modules/mosaic/mosaic_prefix.c Branch: mosaic Log Message: Code clean up: Use macro's. diffs (57 lines): diff --git a/monetdb5/modules/mosaic/mosaic_linear.c b/monetdb5/modules/mosaic/mosaic_linear.c --- a/monetdb5/modules/mosaic/mosaic_linear.c +++ b/monetdb5/modules/mosaic/mosaic_linear.c @@ -142,22 +142,7 @@ MOSestimate_linear(MOStask task) case TYPE_sht: Estimate(sht); break; case TYPE_int: Estimate(int); break; case TYPE_oid: Estimate(oid); break; - case TYPE_lng: { - lng *v = ((lng*) task->src)+task->start, val = *v++; - lng step = *v - val; - BUN limit = task->stop - task->start > MOSAICMAXCNT? MOSAICMAXCNT: task->stop - task->start; - if( task->range[MOSAIC_LINEAR] > task->start + 1){ - i = task->range[MOSAIC_LINEAR] - task->start; - if (i * sizeof(lng) <= wordaligned( MosaicBlkSize + 2 * sizeof(lng),lng)) return 0.0; - factor = ((flt) i * sizeof(lng))/ wordaligned(MosaicBlkSize + 2 * sizeof(lng),lng); - return factor; - } - for( i=1; i < limit; i++, val = *v, v++) if ( *v - val != step) break; - if(i * sizeof(lng) <= wordaligned( MosaicBlkSize + 2 * sizeof(lng),lng)) return 0.0; - if( task->dst + wordaligned(MosaicBlkSize + 2 * sizeof(lng),lng) >= task->bsrc->tmosaic->base + task->bsrc->tmosaic->size) return 0.0; - factor = ( (flt)i * sizeof(lng))/wordaligned( MosaicBlkSize + 2 * sizeof(lng),lng); - } -; break; + case TYPE_lng: Estimate(lng); break; case TYPE_flt: Estimate(flt); break; case TYPE_dbl: Estimate(dbl); break; #ifdef HAVE_HGE diff --git a/monetdb5/modules/mosaic/mosaic_prefix.c b/monetdb5/modules/mosaic/mosaic_prefix.c --- a/monetdb5/modules/mosaic/mosaic_prefix.c +++ b/monetdb5/modules/mosaic/mosaic_prefix.c @@ -849,25 +849,7 @@ MOSprojection_prefix( MOStask task) case TYPE_int: projection_prefix(int, unsigned int); break; case TYPE_lng: projection_prefix(lng, ulng); break; case TYPE_oid: projection_prefix(oid, ulng); break; - case TYPE_flt: //projection_prefix(flt, unsigned int); break; -{ flt *r; -unsigned int *dst = (unsigned int*) MOScodevector(task); -unsigned int mask = *dst++, val = *dst++,v; -flt value; - bits = (int) val & (~mask); - val = val & mask; - base = (BitVector) dst; - r= (flt*) task->src; - for(; first < last; first++,i++){ - MOSskipit(); - v = val | decompress(base,i,bits); - value = (flt) ((unsigned int)val |(unsigned int) v); - *r++ = value; - task->cnt++; - } - task->src = (char*) r; -} -break; + case TYPE_flt: projection_prefix(flt, unsigned int); break; case TYPE_dbl: projection_prefix(dbl, ulng); break; #ifdef HAVE_HGE case TYPE_hge: projection_prefix(hge, unsigned long long); break; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Bug fix: wrong function.
Changeset: 4849aa2df7c1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4849aa2df7c1 Modified Files: monetdb5/modules/mosaic/mosaic.c Branch: mosaic Log Message: Bug fix: wrong function. diffs (12 lines): diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c --- a/monetdb5/modules/mosaic/mosaic.c +++ b/monetdb5/modules/mosaic/mosaic.c @@ -32,7 +32,7 @@ bool MOSisTypeAllowed(int compression, B case MOSAIC_RLE:return MOStypes_runlength(b); case MOSAIC_DICT: return MOStypes_dictionary(b); case MOSAIC_DELTA: return MOStypes_delta(b); - case MOSAIC_LINEAR: return MOStypes_runlength(b); + case MOSAIC_LINEAR: return MOStypes_linear(b); case MOSAIC_FRAME: return MOStypes_frame(b); case MOSAIC_PREFIX: return MOStypes_prefix(b); case MOSAIC_CALENDAR: return MOStypes_calendar(b); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Bug fix.
Changeset: c25c0288d9cd for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c25c0288d9cd Modified Files: monetdb5/modules/mosaic/mosaic_dictionary.c Branch: mosaic Log Message: Bug fix. diffs (12 lines): diff --git a/monetdb5/modules/mosaic/mosaic_dictionary.c b/monetdb5/modules/mosaic/mosaic_dictionary.c --- a/monetdb5/modules/mosaic/mosaic_dictionary.c +++ b/monetdb5/modules/mosaic/mosaic_dictionary.c @@ -314,7 +314,7 @@ MOScompress_dictionary(MOStask task) MOSsetCnt(blk,0); switch(ATOMbasetype(task->type)){ - case TYPE_bte: DICTcompress(sht); break; + case TYPE_bte: DICTcompress(bte); break; case TYPE_sht: DICTcompress(sht); break; case TYPE_int: DICTcompress(int); break; case TYPE_lng: DICTcompress(lng); break; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Add TODO:
Changeset: 4724f468d2fc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4724f468d2fc Modified Files: monetdb5/modules/mosaic/TODO_MOSAIC.txt Branch: mosaic Log Message: Add TODO: mosaic.select (c,nil:any_1, nil:any_1,true,true,(true|false)). diffs (11 lines): diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt b/monetdb5/modules/mosaic/TODO_MOSAIC.txt --- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt +++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt @@ -1,6 +1,7 @@ technical depth Check which compressions can handle bit/boolean types. Test null semantics +mosaic.select (c,nil:any_1, nil:any_1,true,true,(true|false)) is not working correctly: should result in c == nil or c!=nil(anti). Add test for float/double Add test for bit Remove task-factor and range->factor or refactor them. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Some more code clean ups.
Changeset: 6e9b0b47ba99 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6e9b0b47ba99 Modified Files: monetdb5/modules/mosaic/mosaic_raw.c Branch: mosaic Log Message: Some more code clean ups. diffs (83 lines): diff --git a/monetdb5/modules/mosaic/mosaic_raw.c b/monetdb5/modules/mosaic/mosaic_raw.c --- a/monetdb5/modules/mosaic/mosaic_raw.c +++ b/monetdb5/modules/mosaic/mosaic_raw.c @@ -50,8 +50,8 @@ MOSlayout_raw(MOStask task, BAT *btech, case TYPE_bte: output = wordaligned( MosaicBlkSize + sizeof(bte)* MOSgetCnt(blk),bte); break; case TYPE_sht: output = wordaligned( MosaicBlkSize + sizeof(sht)* MOSgetCnt(blk),sht); break; case TYPE_int: output = wordaligned( MosaicBlkSize + sizeof(int)* MOSgetCnt(blk),int); break; + case TYPE_lng: output = wordaligned( MosaicBlkSize + sizeof(lng)* MOSgetCnt(blk),lng); break; case TYPE_oid: output = wordaligned( MosaicBlkSize + sizeof(oid)* MOSgetCnt(blk),oid); break; - case TYPE_lng: output = wordaligned( MosaicBlkSize + sizeof(lng)* MOSgetCnt(blk),lng); break; case TYPE_flt: output = wordaligned( MosaicBlkSize + sizeof(flt)* MOSgetCnt(blk),flt); break; case TYPE_dbl: output = wordaligned( MosaicBlkSize + sizeof(dbl)* MOSgetCnt(blk),dbl); break; #ifdef HAVE_HGE @@ -77,8 +77,8 @@ MOSadvance_raw(MOStask task) case TYPE_bte: task->blk = (MosaicBlk)( ((char*) task->blk) + wordaligned( MosaicBlkSize + sizeof(bte)* MOSgetCnt(blk),bte)); break; case TYPE_sht: task->blk = (MosaicBlk)( ((char*) task->blk) + wordaligned( MosaicBlkSize + sizeof(sht)* MOSgetCnt(blk),sht)); break; case TYPE_int: task->blk = (MosaicBlk)( ((char*) task->blk) + wordaligned( MosaicBlkSize + sizeof(int)* MOSgetCnt(blk),int)); break; + case TYPE_lng: task->blk = (MosaicBlk)( ((char*) task->blk) + wordaligned( MosaicBlkSize + sizeof(lng)* MOSgetCnt(blk),lng)); break; case TYPE_oid: task->blk = (MosaicBlk)( ((char*) task->blk) + wordaligned( MosaicBlkSize + sizeof(oid)* MOSgetCnt(blk),oid)); break; - case TYPE_lng: task->blk = (MosaicBlk)( ((char*) task->blk) + wordaligned( MosaicBlkSize + sizeof(lng)* MOSgetCnt(blk),lng)); break; case TYPE_flt: task->blk = (MosaicBlk)( ((char*) task->blk) + wordaligned( MosaicBlkSize + sizeof(flt)* MOSgetCnt(blk),flt)); break; case TYPE_dbl: task->blk = (MosaicBlk)( ((char*) task->blk) + wordaligned( MosaicBlkSize + sizeof(dbl)* MOSgetCnt(blk),dbl)); break; #ifdef HAVE_HGE @@ -119,8 +119,8 @@ MOScompress_raw(MOStask task) case TYPE_bte: RAWcompress(bte); break; case TYPE_sht: RAWcompress(sht); break; case TYPE_int: RAWcompress(int); break; + case TYPE_lng: RAWcompress(lng); break; case TYPE_oid: RAWcompress(oid); break; - case TYPE_lng: RAWcompress(lng); break; case TYPE_flt: RAWcompress(flt); break; case TYPE_dbl: RAWcompress(dbl); break; #ifdef HAVE_HGE @@ -153,8 +153,8 @@ MOSdecompress_raw(MOStask task) case TYPE_bte: RAWdecompress(bte); break; case TYPE_sht: RAWdecompress(sht); break; case TYPE_int: RAWdecompress(int); break; + case TYPE_lng: RAWdecompress(lng); break; case TYPE_oid: RAWdecompress(oid); break; - case TYPE_lng: RAWdecompress(lng); break; case TYPE_flt: RAWdecompress(flt); break; case TYPE_dbl: RAWdecompress(dbl); break; #ifdef HAVE_HGE @@ -253,8 +253,8 @@ MOSselect_raw( MOStask task, void *low, case TYPE_bte: select_raw(bte); break; case TYPE_sht: select_raw(sht); break; case TYPE_int: select_raw(int); break; + case TYPE_lng: select_raw(lng); break; case TYPE_oid: select_raw(oid); break; - case TYPE_lng: select_raw(lng); break; case TYPE_flt: select_raw(flt); break; case TYPE_dbl: select_raw(dbl); break; #ifdef HAVE_HGE @@ -329,8 +329,8 @@ MOSthetaselect_raw( MOStask task, void * case TYPE_bte: thetaselect_raw(bte); break; case TYPE_sht: thetaselect_raw(sht); break; case TYPE_int: thetaselect_raw(int); break; + case TYPE_lng: thetaselect_raw(lng); break; case TYPE_oid: thetaselect_raw(oid); break; - case TYPE_lng: thetaselect_raw(lng); break; case TYPE_flt: thetaselect_raw(flt); break; case TYPE_dbl: thetaselect_raw(dbl); break; #ifdef HAVE_HGE @@ -367,8 +367,8 @@ MOSprojection_raw( MOStask task) case TYPE_bte: projection_raw(bte); break; case TYPE_sht: projection_raw(sht); break; case TYPE_int: projection_raw(int); break; + case TYPE_lng: projection_raw(lng); break; case TYPE_oid: projection_raw(oid); break; - case TYPE_lng: projection_raw(lng); break; case TYPE_flt: projection_raw(flt); break; case TYPE_dbl: projection_raw(dbl); break; #ifdef HAVE_HGE @@ -407,8 +407,8 @@ MOSjoin_raw( MOStask task) case
MonetDB: mosaic - Some more code clean ups.
Changeset: c7c5e9e17d27 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c7c5e9e17d27 Modified Files: monetdb5/modules/mosaic/mosaic_runlength.c Branch: mosaic Log Message: Some more code clean ups. diffs (103 lines): diff --git a/monetdb5/modules/mosaic/mosaic_runlength.c b/monetdb5/modules/mosaic/mosaic_runlength.c --- a/monetdb5/modules/mosaic/mosaic_runlength.c +++ b/monetdb5/modules/mosaic/mosaic_runlength.c @@ -18,8 +18,8 @@ bool MOStypes_runlength(BAT* b) { switch(b->ttype){ + case TYPE_bit: return true; case TYPE_bte: return true; - case TYPE_bit: return true; case TYPE_sht: return true; case TYPE_int: return true; case TYPE_lng: return true; @@ -46,8 +46,8 @@ MOSlayout_runlength(MOStask task, BAT *b input = cnt * ATOMsize(task->type); switch(ATOMbasetype(task->type)){ + case TYPE_bit: output = wordaligned( MosaicBlkSize + sizeof(bit),bit); break; case TYPE_bte: output = wordaligned( MosaicBlkSize + sizeof(bte),bte); break; - case TYPE_bit: output = wordaligned( MosaicBlkSize + sizeof(bit),bit); break; case TYPE_sht: output = wordaligned( MosaicBlkSize + sizeof(sht),sht); break; case TYPE_int: output = wordaligned( MosaicBlkSize + sizeof(int),int); break; case TYPE_lng: output = wordaligned( MosaicBlkSize + sizeof(lng),lng); break; @@ -73,8 +73,8 @@ MOSadvance_runlength(MOStask task) task->start += MOSgetCnt(task->blk); //task->stop = task->stop; switch(ATOMbasetype(task->type)){ + case TYPE_bit: task->blk = (MosaicBlk)( ((char*)task->blk) + wordaligned( MosaicBlkSize + sizeof(bit),bit)); break; case TYPE_bte: task->blk = (MosaicBlk)( ((char*)task->blk) + wordaligned( MosaicBlkSize + sizeof(bte),bte)); break; - case TYPE_bit: task->blk = (MosaicBlk)( ((char*)task->blk) + wordaligned( MosaicBlkSize + sizeof(bit),bit)); break; case TYPE_sht: task->blk = (MosaicBlk)( ((char*)task->blk) + wordaligned( MosaicBlkSize + sizeof(sht),sht)); break; case TYPE_int: task->blk = (MosaicBlk)( ((char*)task->blk) + wordaligned( MosaicBlkSize + sizeof(int),int)); break; case TYPE_lng: task->blk = (MosaicBlk)( ((char*)task->blk) + wordaligned( MosaicBlkSize + sizeof(lng),lng)); break; @@ -120,35 +120,17 @@ MOSestimate_runlength(MOStask task) flt factor = 0.0; switch(ATOMbasetype(task->type)){ + case TYPE_bit: Estimate(bit); break; case TYPE_bte: Estimate(bte); break; - case TYPE_bit: Estimate(bit); break; case TYPE_sht: Estimate(sht); break; + case TYPE_int: Estimate(int); break; + case TYPE_lng: Estimate(lng); break; case TYPE_oid: Estimate(oid); break; - case TYPE_lng: Estimate(lng); break; case TYPE_flt: Estimate(flt); break; case TYPE_dbl: Estimate(dbl); break; #ifdef HAVE_HGE case TYPE_hge: Estimate(hge); break; #endif - case TYPE_int: - { int *v = ((int*)task->src)+ task->start, val = *v; - BUN limit = task->stop - task->start > MOSAICMAXCNT? MOSAICMAXCNT: task->stop - task->start; - if( task->range[MOSAIC_RLE] > task->start+1){ - if( (i= task->range[MOSAIC_RLE] - task->start) * sizeof(int) < wordaligned(MosaicBlkSize + sizeof(int),int)) - return 0.0; - factor = ((flt) i * sizeof(int))/ wordaligned(MosaicBlkSize + sizeof(int),int); - return factor; - } - for(v++,i =1; idst + wordaligned(MosaicBlkSize + sizeof(int),sizeof(int)) >= task->bsrc->tmosaic->base + task->bsrc->tmosaic->size) - return 0.0; - factor = ( (flt)i * sizeof(int))/ wordaligned( MosaicBlkSize + sizeof(int),int); - } - break; } task->factor[MOSAIC_RLE] = factor; task->range[MOSAIC_RLE] = task->start + i; @@ -179,9 +161,10 @@ MOScompress_runlength(MOStask task) MOSsetTag(blk, MOSAIC_RLE); switch(ATOMbasetype(task->type)){ + case TYPE_bit: RLEcompress(bit); break; case TYPE_bte: RLEcompress(bte); break; - case TYPE_bit: RLEcompress(bit); break; case TYPE_sht: RLEcompress(sht); break; + case TYPE_int: RLEcompress(int); break; case TYPE_lng: RLEcompress(lng); break; case TYPE_oid: RLEcompress(oid); break; case TYPE_flt: RLEcompress(flt); break; @@ -189,7 +172,6 @@ MOScompress_runlength(MOStask task) #ifdef HAVE_HGE case TYPE_hge: RLEcompress(hge); break; #endif - case TYPE_int: RLEcompress(int); break; } } @@ -213,8 +195,8 @@ MOSdecompress_runlength(MOStask task) compressed = (char*) blk + MosaicBlkSize; switch(ATOMbasetype(task->type)){ - case
MonetDB: mosaic - Add TODO_MOSAIC.txt.
Changeset: 1cf5eee00947 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1cf5eee00947 Added Files: monetdb5/modules/mosaic/TODO_MOSAIC.txt Branch: mosaic Log Message: Add TODO_MOSAIC.txt. diffs (21 lines): diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt b/monetdb5/modules/mosaic/TODO_MOSAIC.txt new file mode 100644 --- /dev/null +++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt @@ -0,0 +1,16 @@ +technical depth +Check which compressions can handle bit/boolean types. +Test null semantics +Add test for float/double +Add test for bit +Remove task-factor and range->factor or refactor them. +Somehow log/print which compression is being used. +delta compression: check if the hardcoded compression expression are correct. See also (2) +Use bit vectors more aggressively in mosaic_delta --- then resolve test mosaic_delta_timestamp --- and possibly other compression techniques as well. +dictionary encoding should use the ordered property of its dictionary in the algebraic operators +See if we can re-introduce landmark stuff somehow. + +code issues +mosaic_prefix.c: prefix code does not use macro's +mosaic_delta.c: improve the macro's: for instance get rid of hardcoded expression arguments in DELTAcompress. (2) +mosaic_.c: for type macro's use macro-wised inline functions. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Externally visible function must have a 'MOS'-...
Changeset: 061d92705ddd for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=061d92705ddd Modified Files: clients/Tests/exports.stable.out monetdb5/modules/mosaic/mosaic.c monetdb5/modules/mosaic/mosaic.h sql/backends/monet5/sql_cat.c Branch: mosaic Log Message: Externally visible function must have a 'MOS'-prefix. diffs (82 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -1535,6 +1535,7 @@ flt MOSestimate_runlength(MOStask task); char *MOSfiltername[]; void MOSinitHeader(MOStask task); void MOSinitializeScan(MOStask task, BAT *b); +bool MOSisTypeAllowed(int compression, BAT *b); str MOSjoin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str MOSjoin_calendar(MOStask task); str MOSjoin_delta(MOStask task); @@ -2758,7 +2759,6 @@ str transaction_rollbackRef; void trimMalVariables(MalBlkPtr mb, MalStkPtr stk); void trimMalVariables_(MalBlkPtr mb, MalStkPtr glb); void typeChecker(Module scope, MalBlkPtr mb, InstrPtr p, int silent); -bool type_allowed(int compression, BAT *b); str unescape_str(str *retval, str s); str uniqueRef; str unlockRef; diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c --- a/monetdb5/modules/mosaic/mosaic.c +++ b/monetdb5/modules/mosaic/mosaic.c @@ -26,7 +26,7 @@ char *MOSfiltername[]={"raw","runlength","dictionary","delta","linear","frame","prefix","calendar","EOL"}; -bool type_allowed(int compression, BAT* b) { +bool MOSisTypeAllowed(int compression, BAT* b) { switch (compression) { case MOSAIC_RAW:return MOStypes_raw(b); case MOSAIC_RLE:return MOStypes_runlength(b); @@ -49,7 +49,7 @@ MOSinitializeFilter(MOStask task, const if (!GDK_STRNIL(compressions)) { for(int i = 0; i< MOSAIC_METHODS-1; i++) { - if ( (task->filter[i] = strstr(compressions, MOSfiltername[i]) != 0 && type_allowed(i, task->bsrc)) ) { + if ( (task->filter[i] = strstr(compressions, MOSfiltername[i]) != 0 && MOSisTypeAllowed(i, task->bsrc)) ) { task->hdr->elms[i] = task->hdr->blks[i] = 0; is_not_compressible = false; } @@ -57,7 +57,7 @@ MOSinitializeFilter(MOStask task, const } else { for(int i = 0; i< MOSAIC_METHODS-1; i++) { - if ( (task->filter[i] = type_allowed(i, task->bsrc)) ) { + if ( (task->filter[i] = MOSisTypeAllowed(i, task->bsrc)) ) { task->hdr->elms[i] = task->hdr->blks[i] = 0; is_not_compressible = false; } @@ -1110,7 +1110,7 @@ makepatterns(int *patterns, int size, st int candidate[MOSAIC_METHODS]= {0}; for( i = 0; i < MOSAIC_METHODS-1; i++) - candidate[i] = (compressions == NULL || strstr(compressions,MOSfiltername[i]) != 0) && type_allowed(i, b); + candidate[i] = (compressions == NULL || strstr(compressions,MOSfiltername[i]) != 0) && MOSisTypeAllowed(i, b); for( k=0, i=0; in && task->cl ){\ mal_export char *MOSfiltername[]; -mal_export bool type_allowed(int compression, BAT* b); +mal_export bool MOSisTypeAllowed(int compression, BAT* b); mal_export str MOScompress(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str MOSdecompress(bat* ret, const bat* bid); mal_export str MOScompressInternal(BAT* bsrc, const char* compressions); diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c --- a/sql/backends/monet5/sql_cat.c +++ b/sql/backends/monet5/sql_cat.c @@ -913,7 +913,7 @@ alter_table(Client cntxt, mvc *sql, char int contains_explicit_raw = strstr(c->storage_type,"raw") != NULL ? 1 : 0; for(int i = 0, nr_strategies = 0; i< MOSAIC_METHODS-1; i++){ - if ( (strstr(c->storage_type,MOSfiltername[i]) && type_allowed(i, b) )) + if ( (strstr(c->storage_type,MOSfiltername[i]) && MOSisTypeAllowed(i, b) )) { if ( (++nr_strategies - contains_explicit_raw) > 1) { BBPunfix(b->batCacheid); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Get rid of MCstartMaintenance and MCexitMainte...
Changeset: b9c74a8bec29 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b9c74a8bec29 Modified Files: clients/Tests/exports.stable.out monetdb5/mal/mal_client.c monetdb5/mal/mal_client.h Branch: mosaic Log Message: Get rid of MCstartMaintenance and MCexitMaintenance. diffs (99 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -1449,7 +1449,6 @@ str MBMuniform(bat *ret, oid *base, lng int MCactiveClients(void); str MCawakeClient(int id); void MCcloseClient(Client c); -str MCexitMaintenance(Client cntxt); Client MCforkClient(Client father); Client MCgetClient(int id); bool MCinit(void); @@ -1457,7 +1456,6 @@ Client MCinitClient(oid user, bstream *f int MCinitClientThread(Client c); int MCpushClientInput(Client c, bstream *new_input, int listing, char *prompt); int MCshutdowninprogress(void); -str MCstartMaintenance(Client cntxt, lng timeout, int abort); void MCstopClients(Client c); str MCsuspendClient(int id); int MCvalid(Client c); diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c --- a/monetdb5/mal/mal_client.c +++ b/monetdb5/mal/mal_client.c @@ -518,64 +518,6 @@ MCawakeClient(int id) } /* - * Server maintenance modes without stopping it completery calls for care. - * Any new client connection should be temporily be refused - * and all clients should stop at a MAL instruction. - * In rare cases, all running queries should be aborted. - */ -str -MCstartMaintenance(Client cntxt, lng timeout, int abort) -{ - int active=1; - Client c = mal_clients; - (void) abort; - - MT_lock_set(_contextLock); - for(c= mal_clients +1; c < mal_clients+MAL_MAXCLIENTS; c++) - if( cntxt != c) - c-> itrace = 'S'; - // wait for all running users to stop - while (active && timeout > 0){ - active = 0; - for(c= mal_clients +1; c < mal_clients+MAL_MAXCLIENTS; c++) - if( cntxt!= c && c->mode == RUNCLIENT){ - if (abort ){ - c->mode = FINISHCLIENT; - active++; - } else - if( cntxt != c) - active += c->itrace == 'S'; - } else - if (cntxt!= c && c->mode == FINISHCLIENT) - active++; - if( active == 0) - break; - MT_sleep_ms(1000); - timeout--; - } - if( timeout == 0 && active){ - for(c= mal_clients +1; c < mal_clients+MAL_MAXCLIENTS; c++) - if( c->itrace == 'W' || c->itrace == 'S') - c->itrace = 0; - throw(MAL,"clients.startmaintenance","timeout"); - } - return MAL_SUCCEED; -} - -str -MCexitMaintenance(Client cntxt) -{ - Client c = mal_clients; - (void) cntxt; - - for(c= mal_clients +1; c < mal_clients+MAL_MAXCLIENTS; c++) - if( c->itrace == 'W' || c->itrace == 'S') - c->itrace = 0; - MT_lock_unset(_contextLock); - return MAL_SUCCEED; -} - -/* * Input to be processed is collected in a Client specific buffer. It * is filled by reading information from a stream, a terminal, or by * scheduling strings constructed internally. The latter involves diff --git a/monetdb5/mal/mal_client.h b/monetdb5/mal/mal_client.h --- a/monetdb5/mal/mal_client.h +++ b/monetdb5/mal/mal_client.h @@ -201,8 +201,6 @@ mal_export str MCsuspendClient(int i mal_export str MCawakeClient(int id); mal_export int MCpushClientInput(Client c, bstream *new_input, int listing, char *prompt); mal_export intMCvalid(Client c); -mal_export str MCstartMaintenance(Client cntxt, lng timeout, int abort); -mal_export str MCexitMaintenance(Client cntxt); mal_export str PROFinitClient(Client c); mal_export str PROFexitClient(Client c); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Simplify code.
Changeset: e4b8ad8f22ab for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e4b8ad8f22ab Modified Files: monetdb5/modules/mosaic/mosaic.c Branch: mosaic Log Message: Simplify code. diffs (11 lines): diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c --- a/monetdb5/modules/mosaic/mosaic.c +++ b/monetdb5/modules/mosaic/mosaic.c @@ -325,7 +325,6 @@ MOScompressInternal(BAT* bsrc, const cha if( task->dst >= bsrc->tmosaic->base + bsrc->tmosaic->size - 2 * MosaicBlkSize ){ MOSdestroy(bsrc); msg= createException(MAL,"mosaic.compress","abort compression due to size"); - task->hdr = 0; goto finalize; } assert (task->dst < bsrc->tmosaic->base + bsrc->tmosaic->size ); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Bug fix: properly clean up mosaic heap.
Changeset: f159db39677b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f159db39677b Modified Files: monetdb5/modules/mosaic/mosaic.c Branch: mosaic Log Message: Bug fix: properly clean up mosaic heap. diffs (11 lines): diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c --- a/monetdb5/modules/mosaic/mosaic.c +++ b/monetdb5/modules/mosaic/mosaic.c @@ -305,6 +305,7 @@ MOScompressInternal(BAT* bsrc, const cha task->blk->cnt= 0; MOSinitHeader(task); if (MOSinitializeFilter(task, compressions)) { + MOSdestroy(bsrc); msg = createException(MAL, "mosaic.compress", "No valid compression technique given or available for type: %s", ATOMname(task->type)); goto finalize; } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Nov2019 - Use C enum for SQL dependency types
Changeset: b5a620add8d3 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b5a620add8d3 Modified Files: sql/include/sql_catalog.h sql/server/sql_mvc.c sql/server/sql_mvc.h sql/storage/sql_storage.h sql/storage/store.c sql/storage/store_dependency.c Branch: Nov2019 Log Message: Use C enum for SQL dependency types diffs (truncated from 497 to 300 lines): diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -41,21 +41,23 @@ #define PRIV_COPYFROMFILE 1 #define PRIV_COPYINTOFILE 2 -#define SCHEMA_DEPENDENCY 1 -#define TABLE_DEPENDENCY 2 -#define COLUMN_DEPENDENCY 3 -#define KEY_DEPENDENCY 4 -#define VIEW_DEPENDENCY 5 -#define USER_DEPENDENCY 6 -#define FUNC_DEPENDENCY 7 -#define TRIGGER_DEPENDENCY 8 -#define OWNER_DEPENDENCY 9 -#define INDEX_DEPENDENCY 10 -#define FKEY_DEPENDENCY 11 -#define SEQ_DEPENDENCY 12 -#define PROC_DEPENDENCY 13 -#define BEDROPPED_DEPENDENCY 14/*The object must be dropped when the dependent object is dropped independently of the DROP type.*/ -#define TYPE_DEPENDENCY 15 +typedef enum sql_dependency { + SCHEMA_DEPENDENCY = 1, + TABLE_DEPENDENCY = 2, + COLUMN_DEPENDENCY = 3, + KEY_DEPENDENCY = 4, + VIEW_DEPENDENCY = 5, + USER_DEPENDENCY = 6, + FUNC_DEPENDENCY = 7, + TRIGGER_DEPENDENCY = 8, + OWNER_DEPENDENCY = 9, + INDEX_DEPENDENCY = 10, + FKEY_DEPENDENCY = 11, + SEQ_DEPENDENCY = 12, + PROC_DEPENDENCY = 13, + BEDROPPED_DEPENDENCY = 14, /*The object must be dropped when the dependent object is dropped independently of the DROP type.*/ + TYPE_DEPENDENCY = 15 +} sql_dependency; #define NO_DEPENDENCY 0 #define HAS_DEPENDENCY 1 diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c --- a/sql/server/sql_mvc.c +++ b/sql/server/sql_mvc.c @@ -1408,7 +1408,7 @@ mvc_drop_column(mvc *m, sql_table *t, sq } void -mvc_create_dependency(mvc *m, sqlid id, sqlid depend_id, sht depend_type) +mvc_create_dependency(mvc *m, sqlid id, sqlid depend_id, sql_dependency depend_type) { if (mvc_debug) fprintf(stderr, "#mvc_create_dependency %d %d %d\n", id, depend_id, depend_type); @@ -1417,13 +1417,13 @@ mvc_create_dependency(mvc *m, sqlid id, } void -mvc_create_dependencies(mvc *m, list *id_l, sqlid depend_id, sht dep_type) +mvc_create_dependencies(mvc *m, list *id_l, sqlid depend_id, sql_dependency dep_type) { node *n = id_l->h; int i; if (mvc_debug) - fprintf(stderr, "#mvc_create_dependencies on %d of type %d\n", depend_id, dep_type); + fprintf(stderr, "#mvc_create_dependencies on %d of type %d\n", depend_id, (int) dep_type); for (i = 0; i < list_length(id_l); i++) { @@ -1433,38 +1433,38 @@ mvc_create_dependencies(mvc *m, list *id } int -mvc_check_dependency(mvc * m, sqlid id, sht type, list *ignore_ids) +mvc_check_dependency(mvc * m, sqlid id, sql_dependency type, list *ignore_ids) { list *dep_list = NULL; if (mvc_debug) fprintf(stderr, "#mvc_check_dependency on %d\n", id); - switch(type) { - case OWNER_DEPENDENCY : + switch (type) { + case OWNER_DEPENDENCY: dep_list = sql_trans_owner_schema_dependencies(m->session->tr, id); break; - case SCHEMA_DEPENDENCY : + case SCHEMA_DEPENDENCY: dep_list = sql_trans_schema_user_dependencies(m->session->tr, id); break; - case TABLE_DEPENDENCY : + case TABLE_DEPENDENCY: dep_list = sql_trans_get_dependencies(m->session->tr, id, TABLE_DEPENDENCY, NULL); break; - case VIEW_DEPENDENCY : + case VIEW_DEPENDENCY: dep_list = sql_trans_get_dependencies(m->session->tr, id, TABLE_DEPENDENCY, NULL); break; - case FUNC_DEPENDENCY : - case PROC_DEPENDENCY : + case FUNC_DEPENDENCY: + case PROC_DEPENDENCY: dep_list = sql_trans_get_dependencies(m->session->tr, id, FUNC_DEPENDENCY, ignore_ids); break; default: dep_list = sql_trans_get_dependencies(m->session->tr, id, COLUMN_DEPENDENCY, NULL); } - if(!dep_list) + if (!dep_list) return DEPENDENCY_CHECK_ERROR; - if ( list_length(dep_list) >= 2 ) { + if (list_length(dep_list) >= 2) { list_destroy(dep_list); return HAS_DEPENDENCY; } diff --git a/sql/server/sql_mvc.h b/sql/server/sql_mvc.h --- a/sql/server/sql_mvc.h +++ b/sql/server/sql_mvc.h @@ -218,11 +218,10 @@ extern
MonetDB: Nov2019 - Use sql_query_t enum instead of int
Changeset: 0ef2a3e24c4b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0ef2a3e24c4b Modified Files: sql/backends/monet5/rel_bin.c sql/include/sql_catalog.h sql/server/sql_mvc.h sql/server/sql_qc.c sql/server/sql_qc.h Branch: Nov2019 Log Message: Use sql_query_t enum instead of int diffs (95 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -5698,7 +5698,7 @@ output_rel_bin(backend *be, sql_rel *rel { mvc *sql = be->mvc; list *refs = sa_list(sql->sa); - int sqltype = sql->type; + sql_query_t sqltype = sql->type; stmt *s; if (refs == NULL) diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -11,6 +11,7 @@ #include "sql_mem.h" #include "sql_list.h" +#include "sql_querytype.h" #include "stream.h" #define tr_none0 @@ -652,7 +653,7 @@ typedef struct res_col { typedef struct res_table { int id; oid query_id; - int query_type; + sql_query_t query_type; int nr_cols; int cur_col; const char *tsep; diff --git a/sql/server/sql_mvc.h b/sql/server/sql_mvc.h --- a/sql/server/sql_mvc.h +++ b/sql/server/sql_mvc.h @@ -125,7 +125,7 @@ typedef struct mvc { sql_session *session; - int type; /* query type */ + sql_query_t type; /* query type */ int pushdown; /* AND or OR query handling */ unsigned int label; /* numbers for relational projection labels */ int remote; diff --git a/sql/server/sql_qc.c b/sql/server/sql_qc.c --- a/sql/server/sql_qc.c +++ b/sql/server/sql_qc.c @@ -150,7 +150,7 @@ param_cmp(sql_subtype *t1, sql_subtype * } static int -param_list_cmp(sql_subtype *typelist, atom **atoms, int plen, int type) +param_list_cmp(sql_subtype *typelist, atom **atoms, int plen, sql_query_t type) { int i; @@ -222,7 +222,7 @@ qc_find(qc *cache, int id) } cq * -qc_match(qc *cache, mvc *sql, symbol *s, atom **params, int plen, int key) +qc_match(qc *cache, mvc *sql, symbol *s, atom **params, int plen, int key) { cq *q; @@ -238,7 +238,7 @@ qc_match(qc *cache, mvc *sql, symbol *s, } cq * -qc_insert(qc *cache, sql_allocator *sa, sql_rel *r, char *qname, symbol *s, atom **params, int paramlen, int key, int type, char *cmd, int no_mitosis, int prepared) +qc_insert(qc *cache, sql_allocator *sa, sql_rel *r, char *qname, symbol *s, atom **params, int paramlen, int key, sql_query_t type, char *cmd, int no_mitosis, int prepared) { int i, namelen; cq *n = MNEW(cq); diff --git a/sql/server/sql_qc.h b/sql/server/sql_qc.h --- a/sql/server/sql_qc.h +++ b/sql/server/sql_qc.h @@ -19,7 +19,7 @@ typedef struct cq { struct cq *next;/* link them into a queue */ int prepared; /* prepared or cached query */ - int type; /* sql_query_t: Q_PARSE,Q_SCHEMA,.. */ + sql_query_t type; /* sql_query_t: Q_PARSE,Q_SCHEMA,.. */ sql_allocator *sa; /* the symbols are allocated from this sa */ sql_rel *rel; /* relational query */ symbol *s; /* the SQL parse tree */ @@ -47,7 +47,7 @@ extern void qc_destroy(qc *cache); extern void qc_clean(qc *cache); extern cq *qc_find(qc *cache, int id); extern cq *qc_match(qc *cache, mvc *sql, symbol *s, atom **params, int plen, int key); -extern cq *qc_insert(qc *cache, sql_allocator *sa, sql_rel *r, char *qname, symbol *s, atom **params, int paramlen, int key, int type, char *codedstr, int no_mitosis, int prepared); +extern cq *qc_insert(qc *cache, sql_allocator *sa, sql_rel *r, char *qname, symbol *s, atom **params, int paramlen, int key, sql_query_t type, char *codedstr, int no_mitosis, int prepared); extern void qc_delete(qc *cache, cq *q); extern int qc_size(qc *cache); extern int qc_isaquerytemplate(char *nme); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Apr2019 - Stick test in transaction to not influence ot...
Changeset: e54d02f8ceb7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e54d02f8ceb7 Modified Files: sql/test/BugTracker-2009/Tests/insert_into_done_by_procedure.SF-2607293.sql Branch: Apr2019 Log Message: Stick test in transaction to not influence other tests. diffs (15 lines): diff --git a/sql/test/BugTracker-2009/Tests/insert_into_done_by_procedure.SF-2607293.sql b/sql/test/BugTracker-2009/Tests/insert_into_done_by_procedure.SF-2607293.sql --- a/sql/test/BugTracker-2009/Tests/insert_into_done_by_procedure.SF-2607293.sql +++ b/sql/test/BugTracker-2009/Tests/insert_into_done_by_procedure.SF-2607293.sql @@ -1,3 +1,5 @@ +start transaction; + create table get_results (schem string, clust string, real_time bigint); create procedure save_times (schem string, clust string) BEGIN @@ -14,3 +16,5 @@ select * from get_results; drop ALL procedure save_times; drop table get_results; + +rollback; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Nov2019 - Throw a better error message when attempting ...
Changeset: 0762ea11401e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0762ea11401e Modified Files: sql/server/rel_select.c sql/test/subquery/Tests/correlated.stable.err sql/test/subquery/Tests/correlated.stable.out sql/test/subquery/Tests/subquery.sql sql/test/subquery/Tests/subquery.stable.err Branch: Nov2019 Log Message: Throw a better error message when attempting to nest aggregation functions diffs (289 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 @@ -3906,7 +3906,7 @@ static sql_exp * if (uaname) GDKfree(uaname); return e; - } else if(is_sql_groupby(f) || (is_sql_partitionby(f) && groupby->op != op_groupby)) { + } else if (is_sql_groupby(f) || (is_sql_partitionby(f) && groupby->op != op_groupby)) { const char *clause = is_sql_groupby(f) ? "GROUP BY":"PARTITION BY"; char *uaname = GDKmalloc(strlen(aname) + 1); sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: aggregate function '%s' not allowed in %s clause", @@ -3916,7 +3916,14 @@ static sql_exp * return e; } else if (!query_has_outer(query) && is_sql_where(f)) { char *uaname = GDKmalloc(strlen(aname) + 1); - sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: not allowed in WHERE clause", + sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: aggregate functions not allowed in WHERE clause", + uaname ? toUpperCopy(uaname, aname) : aname); + if (uaname) + GDKfree(uaname); + return e; + } else if (is_sql_aggr(f)) { + char *uaname = GDKmalloc(strlen(aname) + 1); + sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: aggregate functions cannot be nested", uaname ? toUpperCopy(uaname, aname) : aname); if (uaname) GDKfree(uaname); diff --git a/sql/test/subquery/Tests/correlated.stable.err b/sql/test/subquery/Tests/correlated.stable.err --- a/sql/test/subquery/Tests/correlated.stable.err +++ b/sql/test/subquery/Tests/correlated.stable.err @@ -64,7 +64,7 @@ ERROR = !Subquery result missing CODE = 42000 MAPI = (monetdb) /var/tmp/mtest-8372/.s.monetdb.37437 QUERY = SELECT SUM((SELECT SUM(i))) FROM integers; -- error -ERROR = !SELECT: subquery result missing +ERROR = !SUM: aggregate functions cannot be nested CODE = 42000 MAPI = (monetdb) /var/tmp/mtest-11357/.s.monetdb.35326 QUERY = SELECT (SELECT SUM(i + i1.i), 1 FROM integers) FROM integers i1; --error, the subquery should output only one column diff --git a/sql/test/subquery/Tests/correlated.stable.out b/sql/test/subquery/Tests/correlated.stable.out --- a/sql/test/subquery/Tests/correlated.stable.out +++ b/sql/test/subquery/Tests/correlated.stable.out @@ -26,7 +26,7 @@ stdout of test 'correlated` in directory #INSERT INTO integers VALUES (1), (2), (3), (NULL); [ 4] #SELECT i, (SELECT 42+i1.i) AS j FROM integers i1 ORDER BY i; -% sys.i1, .L3 # table_name +% sys.i1, .L1 # table_name % i, j # name % int, bigint # type % 1, 2 # length @@ -44,7 +44,7 @@ stdout of test 'correlated` in directory [ 2] [ 1] #SELECT i, (SELECT i FROM integers WHERE 1=0 AND i1.i=i) AS j FROM integers i1 ORDER BY i; -% sys.i1, .L5 # table_name +% sys.i1, .L2 # table_name % i, j # name % int, int # type % 1, 1 # length @@ -53,7 +53,7 @@ stdout of test 'correlated` in directory [ 2, NULL] [ 3, NULL] #SELECT i, EXISTS(SELECT i FROM integers WHERE 1=0 AND i1.i=i) AS j FROM integers i1 ORDER BY i; -% sys.i1, .L5 # table_name +% sys.i1, .L2 # table_name % i, j # name % int, boolean # type % 1, 5 # length @@ -62,7 +62,7 @@ stdout of test 'correlated` in directory [ 2, NULL] [ 3, NULL] #SELECT i, i=ANY(SELECT i FROM integers WHERE 1=0 AND i1.i=i) AS j FROM integers i1 ORDER BY i; -% .i1, .L4 # table_name +% .i1, .L1 # table_name % i, j # name % int, boolean # type % 1, 5 # length @@ -71,7 +71,7 @@ stdout of test 'correlated` in directory [ 2, NULL] [ 3, NULL] #SELECT i, (SELECT 42 WHERE i1.i>2) AS j FROM integers i1 ORDER BY i; -% .i1, .L5 # table_name +% .i1, .L3 # table_name % i, j # name % int, tinyint # type % 1, 2 # length @@ -80,7 +80,7 @@ stdout of test 'correlated` in directory [ 2, NULL] [ 3, 42 ] #SELECT i, (SELECT 42 WHERE i1.i IS NULL) AS j FROM integers i1 ORDER BY i; -% .i1, .L5 # table_name +% .i1, .L3 # table_name % i, j # name % int, tinyint # type % 1, 2 # length @@ -89,7 +89,7 @@ stdout of test 'correlated` in directory [ 2, NULL] [ 3, NULL] #SELECT i, (SELECT i+i1.i FROM integers WHERE i=1) AS j FROM
MonetDB: grouping-analytics - Approved new test
Changeset: 4d6e2240810d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4d6e2240810d Added Files: sql/test/analytics/Tests/analytics12.sql sql/test/analytics/Tests/analytics12.stable.err sql/test/analytics/Tests/analytics12.stable.out Modified Files: sql/test/analytics/Tests/All Branch: grouping-analytics Log Message: Approved new test diffs (173 lines): diff --git a/sql/test/analytics/Tests/All b/sql/test/analytics/Tests/All --- a/sql/test/analytics/Tests/All +++ b/sql/test/analytics/Tests/All @@ -13,3 +13,4 @@ analytics09 # Rollup, Cube tests analytics10 analytics11 +analytics12 diff --git a/sql/test/analytics/Tests/analytics12.sql b/sql/test/analytics/Tests/analytics12.sql new file mode 100644 --- /dev/null +++ b/sql/test/analytics/Tests/analytics12.sql @@ -0,0 +1,24 @@ +START TRANSACTION; + +CREATE TABLE tbl_ProductSales (ColID int, Product_Category varchar(64), Product_Name varchar(64), TotalSales int); +INSERT INTO tbl_ProductSales VALUES (1,'Game','Mobo Game',200),(2,'Game','PKO Game',400),(3,'Fashion','Shirt',500),(4,'Fashion','Shorts',100); + +SELECT +GROUPING(Product_Category, Product_Name, ColID), GROUPING(ColID, Product_Category, Product_Name), +GROUPING(Product_Category, Product_Name), GROUPING(Product_Name, Product_Category) +FROM tbl_ProductSales +GROUP BY ROLLUP(Product_Category, Product_Name, ColID); + +WITH "groupings" AS ( +SELECT +ROW_NUMBER() OVER (ORDER BY ColID) as "rows", +GROUPING(Product_Category, Product_Name, ColID) AS col1, GROUPING(ColID, Product_Category, Product_Name) AS col2, +GROUPING(Product_Category, Product_Name) col3, GROUPING(Product_Name, Product_Category) "col4" +FROM tbl_ProductSales +GROUP BY GROUPING SETS ( Product_Category, (Product_Name), ColID, +ROLLUP (Product_Category, ColID), +CUBE (Product_Name, Product_Category), +() ) +) SELECT "rows", col1, col2, col3, col4 FROM "groupings" ORDER BY col1, col2, col3, col4; + +ROLLBACK; diff --git a/sql/test/analytics/Tests/analytics12.stable.err b/sql/test/analytics/Tests/analytics12.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/analytics/Tests/analytics12.stable.err @@ -0,0 +1,30 @@ +stderr of test 'analytics12` in directory 'sql/test/analytics` itself: + + +# 13:38:13 > +# 13:38:13 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=36935" "--set" "mapi_usock=/var/tmp/mtest-32373/.s.monetdb.36935" "--forcemito" "--dbpath=/home/ferreira/repositories/MonetDB-grouping-analytics/BUILD/var/MonetDB/mTests_sql_test_analytics" "--set" "embedded_c=true" +# 13:38:13 > + +# builtin opt gdk_dbpath = /home/ferreira/repositories/MonetDB-grouping-analytics/BUILD/var/monetdb5/dbfarm/demo +# builtin opt mapi_port = 5 +# builtin opt mapi_open = false +# builtin opt mapi_ipv6 = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 36935 +# cmdline opt mapi_usock = /var/tmp/mtest-32373/.s.monetdb.36935 +# cmdline opt gdk_dbpath = /home/ferreira/repositories/MonetDB-grouping-analytics/BUILD/var/MonetDB/mTests_sql_test_analytics +# cmdline opt embedded_c = true + +# 13:38:13 > +# 13:38:13 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-32373" "--port=36935" +# 13:38:13 > + + +# 13:38:13 > +# 13:38:13 > "Done." +# 13:38:13 > + diff --git a/sql/test/analytics/Tests/analytics12.stable.out b/sql/test/analytics/Tests/analytics12.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/analytics/Tests/analytics12.stable.out @@ -0,0 +1,96 @@ +stdout of test 'analytics12` in directory 'sql/test/analytics` itself: + + +# 13:38:13 > +# 13:38:13 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=36935" "--set" "mapi_usock=/var/tmp/mtest-32373/.s.monetdb.36935" "--forcemito" "--dbpath=/home/ferreira/repositories/MonetDB-grouping-analytics/BUILD/var/MonetDB/mTests_sql_test_analytics" "--set" "embedded_c=true" +# 13:38:13 > + +# MonetDB 5 server v11.36.0 (hg id: a8baa8ce96d6+218824eb44c5+) +# This is an unreleased version +# Serving database 'mTests_sql_test_analytics', using 8 threads +# Compiled for x86_64-pc-linux-gnu/64bit with 128bit integers +# Found 15.527 GiB available main-memory. +# Copyright (c) 1993 - July 2008 CWI. +# Copyright (c) August 2008 - 2019 MonetDB B.V., all rights reserved +# Visit https://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://localhost.localdomain:36935/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-32373/.s.monetdb.36935 +# MonetDB/GIS module loaded +# MonetDB/SQL module loaded + +# 13:38:13 >
MonetDB: Apr2019 - Stethoscope should be consistent in its output
Changeset: 3513cc0fa3c2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3513cc0fa3c2 Modified Files: clients/mapiclient/stethoscope.c Branch: Apr2019 Log Message: Stethoscope should be consistent in its output Thanks to Jiading Guo for pointing this bug out. diffs (12 lines): diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c --- a/clients/mapiclient/stethoscope.c +++ b/clients/mapiclient/stethoscope.c @@ -111,7 +111,7 @@ renderEvent(EventRecord *ev){ return; fprintf(s, "[ "); fprintf(s, "%"PRId64", ", ev->eventnr); - printf("\"%s\", ", ev->time); + fprintf(s, "\"%s\", ", ev->time); if( ev->function && *ev->function) fprintf(s, "\"%s[%d]%d\", ", ev->function, ev->pc, ev->tag); else ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: grouping-analytics - Merge with default branch
Changeset: 361512dd2813 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=361512dd2813 Added Files: sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.err sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out Modified Files: gdk/gdk_bbp.c gdk/gdk_heap.c gdk/gdk_interprocess.c gdk/gdk_storage.c sql/backends/monet5/UDF/pyapi/pyapi.c sql/server/rel_optimizer.c sql/server/rel_semantic.c sql/storage/store.c sql/test/BugTracker-2019/Tests/All sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.err sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.out sql/test/BugTracker-2019/Tests/sequence-first-next-value.Bug-6743.stable.out sql/test/subquery/Tests/subquery2.sql sql/test/testdb-reload/Tests/reload.py testing/process.py tools/merovingian/daemon/controlrunner.c Branch: grouping-analytics Log Message: Merge with default branch diffs (truncated from 2417 to 300 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -1737,7 +1737,7 @@ BBPdir_subcommit(int cnt, bat *subcommit assert(subcommit[n - 1] < subcommit[n]); #endif - if ((nbbpf = GDKfilelocate(0, "BBP", "w", "dir")) == NULL) + if ((nbbpf = GDKfilelocate(0, "BBP", "wx", "dir")) == NULL) return GDK_FAIL; n = (bat) ATOMIC_GET(); @@ -1849,7 +1849,7 @@ BBPdir(int cnt, bat *subcommit) return BBPdir_subcommit(cnt, subcommit); IODEBUG fprintf(stderr, "#BBPdir: writing BBP.dir (%d bats).\n", (int) (bat) ATOMIC_GET()); - if ((fp = GDKfilelocate(0, "BBP", "w", "dir")) == NULL) { + if ((fp = GDKfilelocate(0, "BBP", "wx", "dir")) == NULL) { goto bailout; } diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c --- a/gdk/gdk_heap.c +++ b/gdk/gdk_heap.c @@ -61,7 +61,7 @@ HEAPcreatefile(int farmid, size_t *maxsz fn = path; } /* round up to mulitple of GDK_mmap_pagesize */ - fd = GDKfdlocate(NOFARM, fn, "wb", NULL); + fd = GDKfdlocate(NOFARM, fn, "wxb", NULL); if (fd >= 0) { close(fd); base = GDKload(NOFARM, fn, NULL, *maxsz, maxsz, STORE_MMAP); @@ -119,36 +119,12 @@ HEAPalloc(Heap *h, size_t nitems, size_t } if (!GDKinmemory() && h->base == NULL) { char *nme; - struct stat st; - if(!(nme = GDKfilepath(h->farmid, BATDIR, h->filename, NULL))) { - GDKerror("HEAPalloc: malloc failure"); + nme = GDKfilepath(h->farmid, BATDIR, h->filename, NULL); + if (nme == NULL) return GDK_FAIL; - } - if (stat(nme, ) < 0) { - h->storage = STORE_MMAP; - h->base = HEAPcreatefile(NOFARM, >size, nme); - } else { - int fd; - - fd = GDKfdlocate(NOFARM, nme, "wb", NULL); - if (fd >= 0) { - char of[sizeof(h->filename)]; - char *ext; - close(fd); - strncpy(of, h->filename, sizeof(of)); -#ifdef STATIC_CODE_ANALYSIS - /* help coverity */ - of[sizeof(h->filename) - 1] = 0; -#endif - ext = decompose_filename(of); - h->newstorage = STORE_MMAP; - if (HEAPload(h, of, ext, false) != GDK_SUCCEED) - h->base = NULL; /* superfluous */ - /* success checked by looking at -* h->base below */ - } - } + h->storage = STORE_MMAP; + h->base = HEAPcreatefile(NOFARM, >size, nme); GDKfree(nme); } if (h->base == NULL) { @@ -270,6 +246,7 @@ HEAPextend(Heap *h, size_t size, bool ma HEAPfree(, false); return GDK_SUCCEED; } + GDKclrerr(); } fd = GDKfdlocate(h->farmid, nme, "wb", ext); if (fd >= 0) { @@ -445,7 +422,7 @@ GDKupgradevarheap(BAT *b, var_t v, bool const char *base = b->theap.base; /* first save heap in file with extra .tmp extension */ - if ((fd = GDKfdlocate(b->theap.farmid, b->theap.filename, "wb", "tmp")) < 0) + if ((fd = GDKfdlocate(b->theap.farmid, b->theap.filename, "wxb", "tmp")) < 0)
MonetDB: default - Merge with Nov2019 branch
Changeset: 1f5597aa84dd for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1f5597aa84dd Added Files: sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.err sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out Modified Files: gdk/gdk_storage.c sql/server/rel_optimizer.c sql/test/BugTracker-2019/Tests/All sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.err sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.out sql/test/BugTracker-2019/Tests/sequence-first-next-value.Bug-6743.stable.out sql/test/subquery/Tests/subquery2.sql sql/test/testdb-reload/Tests/reload.py testing/process.py Branch: default Log Message: Merge with Nov2019 branch diffs (truncated from 2088 to 300 lines): diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c --- a/gdk/gdk_storage.c +++ b/gdk/gdk_storage.c @@ -586,10 +586,12 @@ GDKload(int farmid, const char *nme, con nme = path; } if (nme != NULL && GDKextend(nme, size) == GDK_SUCCEED) { - int mod = MMAP_READ | MMAP_WRITE | MMAP_SEQUENTIAL | MMAP_SYNC; + int mod = MMAP_READ | MMAP_WRITE | MMAP_SEQUENTIAL; if (mode == STORE_PRIV) mod |= MMAP_COPY; + else + mod |= MMAP_SYNC; ret = GDKmmap(nme, mod, size); if (ret != NULL) { /* success: update allocated size */ diff --git a/sql/test/BugTracker-2019/Tests/All b/sql/test/BugTracker-2019/Tests/All --- a/sql/test/BugTracker-2019/Tests/All +++ b/sql/test/BugTracker-2019/Tests/All @@ -33,4 +33,5 @@ alter_table_drop_column.Bug-6749 HAVE_PYMONETDB?remote-table-non-existent-column.Bug-6750 cte-union.Bug-6755 merge-table-limit.Bug-6756 +double-free.Bug-6757 HAVE_LIBPY3?python-loader-string.Bug-6759 diff --git a/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql b/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql @@ -0,0 +1,976 @@ +start transaction; + +CREATE TABLE "sys"."params_str" ( + "paramname" CHARACTER LARGE OBJECT, + "value" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."bm_0_obj_dict" ( + "id"INTEGER NOT NULL, + "idstr" CHARACTER LARGE OBJECT NOT NULL, + "prob" FLOAT(51) NOT NULL, + CONSTRAINT "bm_0_obj_dict_id_pkey" PRIMARY KEY ("id"), + CONSTRAINT "bm_0_obj_dict_idstr_unique" UNIQUE ("idstr") +); +CREATE TABLE "sys"."bm_0_obj_type" ( + "id" INTEGER NOT NULL, + "type"INTEGER NOT NULL, + "typestr" CHARACTER LARGE OBJECT NOT NULL, + "prob"DOUBLENOT NULL, + CONSTRAINT "bm_0_obj_type_id_fkey" FOREIGN KEY ("id") REFERENCES "sys"."bm_0_obj_dict" ("id"), + CONSTRAINT "bm_0_obj_type_type_fkey" FOREIGN KEY ("type") REFERENCES "sys"."bm_0_obj_dict" ("id") +); +CREATE TABLE "sys"."tr_0_obj_dict" ( + "id"INTEGER NOT NULL, + "idstr" CHARACTER LARGE OBJECT NOT NULL, + "prob" FLOAT(51) NOT NULL, + CONSTRAINT "tr_0_obj_dict_id_pkey" PRIMARY KEY ("id"), + CONSTRAINT "tr_0_obj_dict_idstr_unique" UNIQUE ("idstr") +); +CREATE TABLE "sys"."tr_0_obj_type" ( + "id" INTEGER NOT NULL, + "type"INTEGER NOT NULL, + "typestr" CHARACTER LARGE OBJECT NOT NULL, + "prob"DOUBLENOT NULL, + CONSTRAINT "tr_0_obj_type_id_fkey" FOREIGN KEY ("id") REFERENCES "sys"."tr_0_obj_dict" ("id"), + CONSTRAINT "tr_0_obj_type_type_fkey" FOREIGN KEY ("type") REFERENCES "sys"."tr_0_obj_dict" ("id") +); + +CREATE TABLE "sys"."_cachedrel_4" ( + "a1" INTEGER, + "prob" FLOAT(51) +); +CREATE TABLE "sys"."_cachedrel_5" ( + "a1" INTEGER, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_6" ( + "a1" INTEGER, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_7" ( + "a1" INTEGER, + "prob" FLOAT(51) +); +CREATE TABLE "sys"."_cachedrel_8" ( + "a1" INTEGER, + "a2" INTEGER, + "a3" CHARACTER LARGE OBJECT, + "a4" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_9" ( + "a1" INTEGER, + "a2" INTEGER, + "a3" CHARACTER LARGE OBJECT, + "a4" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_10" ( + "a1" INTEGER, + "a2" CHARACTER LARGE OBJECT, + "a3" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_11" ( + "a1" INTEGER, + "a2" CHARACTER LARGE OBJECT, + "a3" CHARACTER LARGE
MonetDB: Nov2019 - Merge with Apr2019 branch
Changeset: ad4ad2617b18 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ad4ad2617b18 Modified Files: sql/server/rel_optimizer.c sql/test/BugTracker-2019/Tests/All sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.err sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.out sql/test/BugTracker-2019/Tests/sequence-first-next-value.Bug-6743.stable.out Branch: Nov2019 Log Message: Merge with Apr2019 branch ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Apr2019 - Backported recent fixes on Nov2019 branch tes...
Changeset: d314cbd55a0e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d314cbd55a0e Added Files: sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.err sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.out Modified Files: sql/server/rel_optimizer.c sql/test/BugTracker-2019/Tests/All sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.sql sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.sql sql/test/BugTracker-2019/Tests/sequence-first-next-value.Bug-6743.stable.out Branch: Apr2019 Log Message: Backported recent fixes on Nov2019 branch tests into Apr2019 branch diffs (truncated from 325 to 300 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -2171,38 +2171,23 @@ rel_push_topn_down(int *changes, mvc *sq ul = rel_project(sql->sa, ul, NULL); ul->exps = exps_copy(sql->sa, r->exps); /* possibly add order by column */ - if (add_r) { - for (node *n = ((list*)r->r)->h ; n ; n = n->next) { - sql_exp *exp = (sql_exp*) n->data; - if (rel_has_exp(ul, exp)) - list_append(ul->exps, exp_copy(sql->sa, exp)); - } - } + if (add_r) + ul->exps = list_merge(ul->exps, exps_copy(sql->sa, r->r), NULL); ul->r = exps_copy(sql->sa, r->r); ul = rel_topn(sql->sa, ul, sum_limit_offset(sql, rel->exps)); ur = rel_project(sql->sa, ur, NULL); ur->exps = exps_copy(sql->sa, r->exps); /* possibly add order by column */ - if (add_r) { - for (node *n = ((list*)r->r)->h ; n ; n = n->next) { - sql_exp *exp = (sql_exp*) n->data; - if (rel_has_exp(ur, exp)) - list_append(ur->exps, exp_copy(sql->sa, exp)); - } - } + if (add_r) + ur->exps = list_merge(ur->exps, exps_copy(sql->sa, r->r), NULL); ur->r = exps_copy(sql->sa, r->r); ur = rel_topn(sql->sa, ur, sum_limit_offset(sql, rel->exps)); u = rel_setop(sql->sa, ul, ur, op_union); u->exps = exps_alias(sql->sa, r->exps); set_processed(u); /* possibly add order by column */ - if (add_r) { - for (node *n = ((list*)r->r)->h ; n ; n = n->next) { - sql_exp *exp = (sql_exp*) n->data; - if (rel_has_exp(u, exp)) - list_append(u->exps, exp_copy(sql->sa, exp)); - } - } + if (add_r) + u->exps = list_merge(u->exps, exps_copy(sql->sa, r->r), NULL); if (need_distinct(r)) { set_distinct(ul); @@ -8564,6 +8549,7 @@ rel_remove_union_partitions(int *changes return rel; if (exp_is_zero_rows(sql, rel->l, NULL)) { sql_rel *r = rel->r; + rel_rename_exps(sql, rel->exps, r->exps); rel->r = NULL; rel_destroy(rel); (*changes)++; @@ -8572,6 +8558,7 @@ rel_remove_union_partitions(int *changes } if (exp_is_zero_rows(sql, rel->r, NULL)) { sql_rel *l = rel->l; + rel_rename_exps(sql, rel->exps, l->exps); rel->l = NULL; rel_destroy(rel); (*changes)++; diff --git a/sql/test/BugTracker-2019/Tests/All b/sql/test/BugTracker-2019/Tests/All --- a/sql/test/BugTracker-2019/Tests/All +++ b/sql/test/BugTracker-2019/Tests/All @@ -6,7 +6,7 @@ KNOWNFAIL?subselect-contradiction.Bug-66 insert-replica-table.Bug-6684 KNOWNFAIL?subselect-count.Bug-6686 KNOWNFAIL?subselect.Bug-6688 -timestamptransformation.Bug-6695 +#timestamptransformation.Bug-6695 KNOWNFAIL?duplicates-not-eliminated-long-CASE-stmt.Bug-6697 KNOWNFAIL?subselect.Bug-6700 alter_table_set_schema.Bug-6701 diff --git a/sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.sql b/sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.sql --- a/sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.sql +++ b/sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.sql @@ -32,7
MonetDB: Nov2019 - Approved output
Changeset: 4fa2143ba799 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4fa2143ba799 Modified Files: sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out Branch: Nov2019 Log Message: Approved output diffs (18 lines): diff --git a/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out b/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out --- a/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out +++ b/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out @@ -58,11 +58,9 @@ stdout of test 'double-free.Bug-6757` in # loading sql script: 99_system.sql # MonetDB/SQL module loaded -Ready. - -# 19:54:41 > -# 19:54:41 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-25888" "--port=32780" -# 19:54:41 > +# 11:50:08 > +# 11:50:08 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-24026" "--port=38133" +# 11:50:08 > #start transaction; #CREATE TABLE "sys"."params_str" ( ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Nov2019 - More failing sql subqueries
Changeset: 718f3266c3ac for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=718f3266c3ac Modified Files: sql/test/subquery/Tests/subquery2.sql Branch: Nov2019 Log Message: More failing sql subqueries diffs (61 lines): diff --git a/sql/test/subquery/Tests/subquery2.sql b/sql/test/subquery/Tests/subquery2.sql --- a/sql/test/subquery/Tests/subquery2.sql +++ b/sql/test/subquery/Tests/subquery2.sql @@ -113,6 +113,57 @@ GROUP BY col1, col2, col5; -- True False 1 0 SELECT + SUM(CAST(t1.col1 IN (SELECT t1.col1 FROM another_T) AS INTEGER)) +FROM another_T t1 +GROUP BY t1.col2; + -- 1 + -- 1 + -- 1 + -- 1 + +SELECT + DISTINCT + NOT MIN(col1 + 7) OVER (PARTITION BY SUM(DISTINCT col7 * col1) - AVG(col8 * NULL) ORDER BY MIN(col5 - col1) - MAX(DISTINCT col6) ROWS UNBOUNDED PRECEDING) + NOT IN (SELECT MAX(col1 - 1) * MIN(DISTINCT col2) FROM another_T) +FROM another_T +GROUP BY col1; --this query is right, but I'm leaving it here + -- False + +SELECT + (SELECT MAX(col6) FROM tbl_ProductSales) IN (SELECT MIN(col3) FROM another_T) +FROM another_T +GROUP BY col1; --error, subquery returns more than 1 row + +SELECT + t1.col1 = ALL (SELECT col4 + SUM(t1.col5) FROM another_T INNER JOIN tbl_ProductSales ON another_T.col1 = tbl_ProductSales.ColID) +FROM another_T t1 +GROUP BY t1.col1; + -- False + -- False + -- False + -- False + +SELECT + SUM(col3 + col2) +FROM another_T +GROUP BY col1 +HAVING NOT col1 = ANY (SELECT 0 FROM tbl_ProductSales GROUP BY ColID HAVING NOT MAX(col1) <> AVG(col1)); + -- 5 + -- 55 + -- 555 + -- + +SELECT + SUM(col3) * col1 +FROM another_T +GROUP BY col1 +HAVING NOT col1 <> ANY (SELECT 0 FROM tbl_ProductSales GROUP BY ColID HAVING NOT MAX(col1) <> col1 * AVG(col1 + ColID) * ColID); + -- 3 + -- 363 + -- 36963 + -- 3702963 + +SELECT SUM(col1) IN (SELECT DISTINCT col2 FROM another_T GROUP BY col2) FROM another_T GROUP BY col4; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Nov2019 - MMAP_SYNC doesn't make sense for copy-on-write.
Changeset: 020986b5c1a1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=020986b5c1a1 Modified Files: gdk/gdk_storage.c Branch: Nov2019 Log Message: MMAP_SYNC doesn't make sense for copy-on-write. diffs (17 lines): diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c --- a/gdk/gdk_storage.c +++ b/gdk/gdk_storage.c @@ -586,10 +586,12 @@ GDKload(int farmid, const char *nme, con nme = path; } if (nme != NULL && GDKextend(nme, size) == GDK_SUCCEED) { - int mod = MMAP_READ | MMAP_WRITE | MMAP_SEQUENTIAL | MMAP_SYNC; + int mod = MMAP_READ | MMAP_WRITE | MMAP_SEQUENTIAL; if (mode == STORE_PRIV) mod |= MMAP_COPY; + else + mod |= MMAP_SYNC; ret = GDKmmap(nme, mod, size); if (ret != NULL) { /* success: update allocated size */ ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Nov2019 - Merge with Apr2019 branch.
Changeset: 0944f0afd37d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0944f0afd37d Added Files: sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.err sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out Modified Files: sql/test/BugTracker-2019/Tests/All sql/test/testdb-reload/Tests/reload.py testing/process.py Branch: Nov2019 Log Message: Merge with Apr2019 branch. diffs (truncated from 2012 to 300 lines): diff --git a/sql/test/BugTracker-2019/Tests/All b/sql/test/BugTracker-2019/Tests/All --- a/sql/test/BugTracker-2019/Tests/All +++ b/sql/test/BugTracker-2019/Tests/All @@ -33,4 +33,5 @@ alter_table_drop_column.Bug-6749 HAVE_PYMONETDB?remote-table-non-existent-column.Bug-6750 cte-union.Bug-6755 merge-table-limit.Bug-6756 +double-free.Bug-6757 HAVE_LIBPY3?python-loader-string.Bug-6759 diff --git a/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql b/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql @@ -0,0 +1,976 @@ +start transaction; + +CREATE TABLE "sys"."params_str" ( + "paramname" CHARACTER LARGE OBJECT, + "value" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."bm_0_obj_dict" ( + "id"INTEGER NOT NULL, + "idstr" CHARACTER LARGE OBJECT NOT NULL, + "prob" FLOAT(51) NOT NULL, + CONSTRAINT "bm_0_obj_dict_id_pkey" PRIMARY KEY ("id"), + CONSTRAINT "bm_0_obj_dict_idstr_unique" UNIQUE ("idstr") +); +CREATE TABLE "sys"."bm_0_obj_type" ( + "id" INTEGER NOT NULL, + "type"INTEGER NOT NULL, + "typestr" CHARACTER LARGE OBJECT NOT NULL, + "prob"DOUBLENOT NULL, + CONSTRAINT "bm_0_obj_type_id_fkey" FOREIGN KEY ("id") REFERENCES "sys"."bm_0_obj_dict" ("id"), + CONSTRAINT "bm_0_obj_type_type_fkey" FOREIGN KEY ("type") REFERENCES "sys"."bm_0_obj_dict" ("id") +); +CREATE TABLE "sys"."tr_0_obj_dict" ( + "id"INTEGER NOT NULL, + "idstr" CHARACTER LARGE OBJECT NOT NULL, + "prob" FLOAT(51) NOT NULL, + CONSTRAINT "tr_0_obj_dict_id_pkey" PRIMARY KEY ("id"), + CONSTRAINT "tr_0_obj_dict_idstr_unique" UNIQUE ("idstr") +); +CREATE TABLE "sys"."tr_0_obj_type" ( + "id" INTEGER NOT NULL, + "type"INTEGER NOT NULL, + "typestr" CHARACTER LARGE OBJECT NOT NULL, + "prob"DOUBLENOT NULL, + CONSTRAINT "tr_0_obj_type_id_fkey" FOREIGN KEY ("id") REFERENCES "sys"."tr_0_obj_dict" ("id"), + CONSTRAINT "tr_0_obj_type_type_fkey" FOREIGN KEY ("type") REFERENCES "sys"."tr_0_obj_dict" ("id") +); + +CREATE TABLE "sys"."_cachedrel_4" ( + "a1" INTEGER, + "prob" FLOAT(51) +); +CREATE TABLE "sys"."_cachedrel_5" ( + "a1" INTEGER, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_6" ( + "a1" INTEGER, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_7" ( + "a1" INTEGER, + "prob" FLOAT(51) +); +CREATE TABLE "sys"."_cachedrel_8" ( + "a1" INTEGER, + "a2" INTEGER, + "a3" CHARACTER LARGE OBJECT, + "a4" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_9" ( + "a1" INTEGER, + "a2" INTEGER, + "a3" CHARACTER LARGE OBJECT, + "a4" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_10" ( + "a1" INTEGER, + "a2" CHARACTER LARGE OBJECT, + "a3" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_11" ( + "a1" INTEGER, + "a2" CHARACTER LARGE OBJECT, + "a3" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_12" ( + "a1" CHARACTER LARGE OBJECT, + "a2" CHARACTER LARGE OBJECT, + "a3" CHARACTER LARGE OBJECT, + "a4" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_13" ( + "a1" INTEGER, + "prob" FLOAT(51) +); +CREATE TABLE "sys"."_cachedrel_14" ( + "a1" INTEGER, + "a2" INTEGER, + "a3" CHARACTER LARGE OBJECT, + "a4" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_15" ( + "a1" INTEGER, + "a2" INTEGER, + "a3" CHARACTER LARGE OBJECT, + "a4" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_16" ( + "a1" INTEGER, + "prob" FLOAT(51) +); +CREATE TABLE "sys"."_cachedrel_17" ( + "a1" INTEGER, + "a2" INTEGER, + "a3" CHARACTER LARGE OBJECT, + "a4" CHARACTER LARGE OBJECT, + "prob" DOUBLE +); +CREATE TABLE "sys"."_cachedrel_18" ( + "a1" INTEGER, + "a2" INTEGER, + "a3" CHARACTER LARGE OBJECT, +
MonetDB: Apr2019 - Don't produce output that we don't use.
Changeset: caeebd82ac64 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=caeebd82ac64 Modified Files: sql/test/testdb-reload/Tests/reload.py testing/process.py Branch: Apr2019 Log Message: Don't produce output that we don't use. This prevents a hang on our Windows 2012R2 system. diffs (48 lines): diff --git a/sql/test/testdb-reload/Tests/reload.py b/sql/test/testdb-reload/Tests/reload.py --- a/sql/test/testdb-reload/Tests/reload.py +++ b/sql/test/testdb-reload/Tests/reload.py @@ -38,8 +38,8 @@ c1 = process.client(lang='sql', server=s1, args=[os.path.join(tstsrcdir, os.pardir, os.pardir, 'testdb', 'Tests', 'load.sql')], stdin=process.PIPE, -stdout=process.PIPE, -stderr=process.PIPE) +stdout=process.DEVNULL, +stderr=process.DEVNULL) c1out, c1err = c1.communicate() # start the second server s2 = process.server(dbname=tstdb2, @@ -52,13 +52,13 @@ d1 = process.client(lang='sqldump', server=s1, stdin=process.PIPE, stdout='PIPE', -stderr=process.PIPE) +stderr=process.DEVNULL) # and pipe it straight into the second server c2 = process.client(lang='sql', server=s2, stdin=d1.stdout, -stdout=process.PIPE, -stderr=process.PIPE) +stdout=process.DEVNULL, +stderr=process.DEVNULL) d1.stdout.close() d1.stdout = None c2out, c2err = c2.communicate() diff --git a/testing/process.py b/testing/process.py --- a/testing/process.py +++ b/testing/process.py @@ -19,8 +19,11 @@ else: import queue from subprocess import PIPE - -__all__ = ['PIPE', 'Popen', 'client', 'server'] +try: +from subprocess import DEVNULL +except ImportError: +DEVNULL = os.open(os.devnull, os.O_RDWR) +__all__ = ['PIPE', 'DEVNULL', 'Popen', 'client', 'server'] verbose = False ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list