MonetDB: Nov2019 - Compilation fixes

2019-09-17 Thread Pedro Ferreira
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.

2019-09-17 Thread Sjoerd Mullender
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

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Pedro Ferreira
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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...

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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...

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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...

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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:

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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'-...

2019-09-17 Thread Aris Koning
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...

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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.

2019-09-17 Thread Aris Koning
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

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Pedro Ferreira
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...

2019-09-17 Thread Sjoerd Mullender
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 ...

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Panagiotis Koutsourakis
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

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Pedro Ferreira
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...

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Pedro Ferreira
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

2019-09-17 Thread Pedro Ferreira
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.

2019-09-17 Thread Sjoerd Mullender
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.

2019-09-17 Thread Sjoerd Mullender
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.

2019-09-17 Thread Sjoerd Mullender
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