MonetDB: scoping2 - Merged with default

2020-12-07 Thread Pedro Ferreira
Changeset: f5f76b464455 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f5f76b464455
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
sql/backends/monet5/sql.c
sql/server/rel_optimizer.c
sql/server/rel_propagate.c
sql/storage/sql_catalog.c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 3051 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -6638,6 +6638,7 @@ stdout of test 'MAL-signatures` in direc
 [ "batstr","unicodeAt","pattern batstr.unicodeAt(X_1:str, 
X_2:bat[:int], X_3:bat[:oid]):bat[:int] ",   "STRbatWChrAt_strcst;", ""  ]
 [ "batstr","unicodeAt","pattern batstr.unicodeAt(X_1:bat[:str], 
X_2:int):bat[:int] ",  "STRbatWChrAtcst;", ""  ]
 [ "batstr","unicodeAt","pattern batstr.unicodeAt(X_1:bat[:str], 
X_2:int, X_3:bat[:oid]):bat[:int] ",   "STRbatWChrAtcst;", ""  ]
+[ "battxtsim", "similarity",   "command battxtsim.similarity(X_1:bat[:str], 
X_2:bat[:str]):bat[:dbl] ","fstrcmp0_impl_bulk;",  ""  ]
 [ "batudf","fuse", "command batudf.fuse(X_1:bat[:bte], 
X_2:bat[:bte]):bat[:sht] ", "UDFBATfuse;",  ""  ]
 [ "batudf","fuse", "command batudf.fuse(X_1:bat[:int], 
X_2:bat[:int]):bat[:lng] ", "UDFBATfuse;",  ""  ]
 [ "batudf","fuse", "command batudf.fuse(X_1:bat[:sht], 
X_2:bat[:sht]):bat[:int] ", "UDFBATfuse;",  ""  ]
@@ -9429,20 +9430,6 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "sessions", "pattern sql.sessions() (X_0:bat[:int], 
X_1:bat[:str], X_2:bat[:timestamp], X_3:bat[:timestamp], X_4:bat[:str], 
X_5:bat[:int], X_6:bat[:int], X_7:bat[:int], X_8:bat[:int]) ",  
"sql_sessions_wrap;",   ""  ]
 [ "sql",   "setVariable",  "unsafe pattern sql.setVariable(X_1:int, 
X_2:str, X_3:str, X_4:any_1):int ","setVariable;", ""  ]
 [ "sql",   "set_protocol", "unsafe pattern sql.set_protocol(X_1:int):int 
","SQLset_protocol;", ""  ]
-[ "sql",   "setmemorylimit",   "unsafe pattern 
sql.setmemorylimit(X_1:int):void ", "SQLsetmemorylimit;",   ""  ]
-[ "sql",   "setmemorylimit",   "unsafe pattern 
sql.setmemorylimit(X_1:sht, X_2:int):void ","SQLsetmemorylimit;",   ""  
]
-[ "sql",   "setoptimizer", "unsafe pattern sql.setoptimizer(X_1:int, 
X_2:str):void ",  "SQLsetoptimizer;", ""  ]
-[ "sql",   "setoptimizer", "unsafe pattern sql.setoptimizer(X_1:str):void 
",   "SQLsetoptimizer;", ""  ]
-[ "sql",   "setquerytimeout",  "unsafe pattern 
sql.setquerytimeout(X_1:bte, X_2:int):void ",   "SQLqueryTimeout;", ""  
]
-[ "sql",   "setquerytimeout",  "unsafe pattern 
sql.setquerytimeout(X_1:int):void ","SQLqueryTimeout;", ""  ]
-[ "sql",   "setquerytimeout",  "unsafe pattern 
sql.setquerytimeout(X_1:int, X_2:int):void ",   "SQLqueryTimeout;", ""  
]
-[ "sql",   "setquerytimeout",  "unsafe pattern 
sql.setquerytimeout(X_1:sht, X_2:int):void ",   "SQLqueryTimeout;", ""  
]
-[ "sql",   "setsessiontimeout","unsafe pattern 
sql.setsessiontimeout(X_1:bte, X_2:int):void ", "SQLsessionTimeout;",   ""  
]
-[ "sql",   "setsessiontimeout","unsafe pattern 
sql.setsessiontimeout(X_1:int):void ",  "SQLsessionTimeout;",   ""  ]
-[ "sql",   "setsessiontimeout","unsafe pattern 
sql.setsessiontimeout(X_1:int, X_2:int):void ", "SQLsessionTimeout;",   ""  
]
-[ "sql",   "setsessiontimeout","unsafe pattern 
sql.setsessiontimeout(X_1:sht, X_2:int):void ", "SQLsessionTimeout;",   ""  
]
-[ "sql",   "setworkerlimit",   "unsafe pattern 
sql.setworkerlimit(X_1:int):void ", "SQLsetworkerlimit;",   ""  ]
-[ "sql",   "setworkerlimit",   "unsafe pattern 
sql.setworkerlimit(X_1:int, X_2:int):void ","SQLsetworkerlimit;",   ""  
]
 [ "sql",   "shrink",   "unsafe pattern sql.shrink(X_1:str, 
X_2:str):void ","SQLshrink;",   ""  ]
 [ "sql",   "shutdown", "pattern sql.shutdown(X_1:bte):str ",   
"SQLshutdown_wrap;",""  ]
 [ "sql",   "shutdown", "pattern sql.shutdown(X_1:bte, X_2:bit):str ",  
"SQLshutdown_wrap;",""  ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -9197,6 +9197,7 @@ stdout of test 'MAL-signatures` in direc
 [ "batstr","unicodeAt","pattern batstr.unicodeAt(X_1:str, 
X_2:bat[:int], X_3:bat[:oid]):bat[:int] ",   "STRbatWChrAt_strcst;", ""  ]
 [ "batstr","unicodeAt","pattern batstr.unicodeAt(X_1:bat[:str], 
X_2:int):bat[:int] ",  "STRbatWChrAtcst;", ""  ]
 [ 

MonetDB: scoping2 - Merged with default

2020-12-03 Thread Pedro Ferreira
Changeset: 29651bfcd8be for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=29651bfcd8be
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_upgrades.c
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_rel.h
sql/server/rel_select.c
sql/server/rel_unnest.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
tools/monetdbe/monetdbe.c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 4619 to 300 lines):

diff --git a/README.rst b/README.rst
--- a/README.rst
+++ b/README.rst
@@ -131,10 +131,16 @@ Bugs
 
 
 We of course hope there aren't any, but if you do find one, you can
-report bugs in our `bugzilla`__ instance.
+report bugs in our `github`__ repository.
+
+Please note that we do not accept github Pull Requests. See the
+`developers`__ page for instructions.
 
-.. _bugzilla: https://bugs.monetdb.org
-__ bugzilla_
+.. _github: https://github.com/MonetDB/MonetDB/issues
+__ github_
+
+.. _developers: https://www.monetdb.org/Developers
+__ developers_
 
 Copyright Notice
 
diff --git a/buildtools/coverity_model.c b/buildtools/coverity_model.c
--- a/buildtools/coverity_model.c
+++ b/buildtools/coverity_model.c
@@ -156,6 +156,15 @@ createMalException(MalBlkPtr mb, int pc,
return p;
 }
 
+char *
+dupError(const char *err)
+{
+   char *p;
+   p = __coverity_alloc_nosize__();
+   __coverity_mark_as_afm_allocated__(p, "freeException");
+   return p;
+}
+
 void
 freeException(char *p)
 {
@@ -164,3 +173,13 @@ freeException(char *p)
__coverity_mark_as_afm_freed__(p, "freeException");
}
 }
+
+char *
+concatErrors(char *err1, const char *err2)
+{
+   freeException(err1);
+   char *p;
+   p = __coverity_alloc_nosize__();
+   __coverity_mark_as_afm_allocated__(p, "freeException");
+   return p;
+}
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
@@ -516,6 +516,7 @@ gdk_return log_bat_clear(logger *lg, con
 gdk_return log_bat_persists(logger *lg, BAT *b, const char *n, char tpe, oid 
id);
 gdk_return log_bat_transient(logger *lg, const char *n, char tpe, oid id);
 gdk_return log_delta(logger *lg, BAT *uid, BAT *uval, const char *n, char tpe, 
oid id);
+lng log_save_id(logger *lg);
 gdk_return log_sequence(logger *lg, int seq, lng id);
 gdk_return log_tend(logger *lg);
 gdk_return log_tstart(logger *lg);
@@ -525,9 +526,8 @@ gdk_return logger_cleanup(logger *lg);
 logger *logger_create(int debug, const char *fn, const char *logdir, int 
version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp);
 gdk_return logger_del_bat(logger *lg, log_bid bid) 
__attribute__((__warn_unused_result__));
 void logger_destroy(logger *lg);
-gdk_return logger_exit(logger *lg);
 log_bid logger_find_bat(logger *lg, const char *name, char tpe, oid id);
-gdk_return logger_restart(logger *lg);
+gdk_return logger_flush(logger *lg, lng save_id);
 int logger_sequence(logger *lg, int seq, lng *id);
 gdk_return logger_upgrade_bat(logger *lg, const char *name, char tpe, oid id) 
__attribute__((__warn_unused_result__));
 void logger_with_ids(logger *lg);
@@ -1166,6 +1166,7 @@ str connectRef;
 str contextRef;
 str convertConstant(malType type, ValPtr vr);
 InstrPtr copyInstruction(InstrPtr p);
+InstrPtr copyInstructionArgs(InstrPtr p, int args);
 MalBlkPtr copyMalBlk(MalBlkPtr mb);
 str copyRef;
 str copy_fromRef;
@@ -1467,11 +1468,14 @@ str multicolumnRef;
 str multiplexRef;
 str mvcRef;
 InstrPtr newAssignment(MalBlkPtr mb);
+InstrPtr newAssignmentArgs(MalBlkPtr mb, int args);
 InstrPtr newCatchStmt(MalBlkPtr mb, str nme);
 InstrPtr newComment(MalBlkPtr mb, const char *val);
 InstrPtr newExitStmt(MalBlkPtr mb, str nme);
 InstrPtr newFcnCall(MalBlkPtr mb, char *mod, char *fcn);
+InstrPtr newFcnCallArgs(MalBlkPtr mb, char *mod, char *fcn, int args);
 Symbol newFunction(str mod, str nme, int kind);
+Symbol newFunctionArgs(str mod, str nme, int kind, int args);
 MalStkPtr newGlobalStack(int size);
 InstrPtr newInstruction(MalBlkPtr mb, str modnme, str fcnnme);
 InstrPtr newInstructionArgs(MalBlkPtr mb, str modnme, str fcnnme, int args);
@@ -1495,7 +1499,6 @@ str not_uniqueRef;
 str nth_valueRef;
 str ntileRef;
 str oidRef;
-void oldmoveInstruction(InstrPtr dst, InstrPtr src);
 str oltpRef;
 str openProfilerStream(Client cntxt);
 str openRef;
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -1,3 +1,6 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Tue Dec  1 2020 Sjoerd Mullender 
+- We now save the location of the min and max values when known.
+
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h

MonetDB: scoping2 - Merged with default

2020-11-27 Thread Pedro Ferreira
Changeset: 8f4ff4af17c8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f4ff4af17c8
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_statement.c
sql/include/sql_catalog.h
sql/server/rel_optimizer.c
sql/server/rel_propagate.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_updates.c
sql/storage/sql_catalog.c
tools/monetdbe/monetdbe.c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 4032 to 300 lines):

diff --git a/buildtools/coverity_model.c b/buildtools/coverity_model.c
new file mode 100644
--- /dev/null
+++ b/buildtools/coverity_model.c
@@ -0,0 +1,166 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V.
+ */
+
+/*
+ * This file contains a model for Coverity Scan.
+ * This file is not a normal source file.  It is not compiled by any
+ * compiler, but instead it is uploaded to the Coverity site and used
+ * during any analysis they do on our code.
+ *
+ * We model our use of the various allocation functions.
+ * Things we want to do is model that GDKmalloc and friends are paired
+ * with GDKfree, and that exceptions created by createException and
+ * createMalException should be freed with freeException.
+ *
+ * author: Sjoerd Mullender
+ */
+
+typedef enum { GDK_FAIL, GDK_SUCCEED } gdk_return;
+typedef struct {} *MalBlkPtr;
+
+void
+GDKfree(void *blk)
+{
+   if (blk) {
+   __coverity_free__(blk);
+   __coverity_mark_as_afm_freed__(blk, "GDKfree");
+   }
+}
+
+void *
+GDKmalloc(size_t size)
+{
+   int has_memory;
+   __coverity_negative_sink__(size);
+   if(has_memory) {
+   void *p = __coverity_alloc__(size);
+   __coverity_mark_as_afm_allocated__(p, "GDKfree");
+   __coverity_mark_as_uninitialized_buffer__(p);
+   return p;
+   }
+   return 0;
+}
+
+void *
+GDKzalloc(size_t size)
+{
+   void *p = GDKmalloc(size);
+   if (p) {
+   for (size_t i = 0; i < size; i++)
+   ((char *) p)[i] = 0;
+   }
+   return p;
+}
+
+char *
+GDKstrdup(const char *s)
+{
+   char *p;
+   size_t i;
+   int has_memory;
+   if (s == 0)
+   return 0;
+   __coverity_string_null_sink__(s);
+   __coverity_string_size_sink__(s);
+   if (has_memory) {
+   p = __coverity_alloc_nosize__();
+   __coverity_mark_as_afm_allocated__(p, "GDKfree");
+   for (i = 0; (p[i] = s[i]); i++)
+   ;
+   return p;
+   }
+   return 0;
+}
+
+char *
+GDKstrndup(const char *s, size_t size)
+{
+   char *p;
+   size_t i;
+   __coverity_negative_sink__(size);
+   if (s == 0)
+   return 0;
+   p = GDKmalloc(size + 1);
+   if (p) {
+   for (i = 0; i < size && (p[i] = s[i]); i++)
+   ;
+   p[i] = 0;
+   }
+   return p;
+}
+
+void *
+GDKrealloc(void *blk, size_t size)
+{
+   void *p = GDKmalloc(size);
+   if (p != 0)
+   GDKfree(blk);
+   return p;
+}
+
+void *
+GDKmmap(const char *path, int mode, size_t size)
+{
+   int has_memory;
+   __coverity_negative_sink__(size);
+   if (has_memory) {
+   void *p = __coverity_alloc__(size);
+   __coverity_mark_as_afm_allocated__(p, "GDKmunmap");
+   __coverity_writeall__(p);
+   return p;
+   }
+   return 0;
+}
+
+gdk_return
+GDKmunmap(void *p, size_t size)
+{
+   int failed;
+   __coverity_free__(p);
+   __coverity_mark_as_afm_freed__(p, "GDKmunmap");
+   return failed ? GDK_FAIL : GDK_SUCCEED;
+}
+
+void *
+GDKmremap(const char *path, int mode, void *old_address, size_t old_size, 
size_t *new_size)
+{
+   void *p = GDKmmap(path, mode, new_size);
+   if (p) {
+   (void) GDKmunmap(old_address, old_size);
+   }
+   return p;
+}
+
+char *
+createException(enum malexception type, const char *fcn, const char *format, 
...)
+{
+   char *p;
+   __coverity_format_string_sink__(format);
+   p = __coverity_alloc_nosize__();
+   __coverity_mark_as_afm_allocated__(p, "freeException");
+   return p;
+}
+
+char *
+createMalException(MalBlkPtr mb, int pc, enum malexception type, const char 
*format, ...)
+{
+   char *p;
+   __coverity_format_string_sink__(format);
+   p = __coverity_alloc_nosize__();
+   __coverity_mark_as_afm_allocated__(p, "freeException");
+   return p;
+}
+
+void
+freeException(char *p)
+{
+   if (p) {
+   

MonetDB: scoping2 - Merged with default

2020-11-26 Thread Pedro Ferreira
Changeset: d1b768b571ab for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d1b768b571ab
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
sql/common/sql_types.c
sql/server/rel_psm.c
sql/test/miscellaneous/Tests/simple_selects.stable.err
tools/monetdbe/monetdbe.c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 33641 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -161,16 +161,13 @@ BuildRequires: pkgconfig(libR)
 BuildRequires: texlive-obsolete
 %endif
 %endif
-# if we were to compile with cmocka support (-DWITH_CMOCKA=ON):
-# BuildRequires: pkgconfig(cmocka)
-# if we were to compile with NetCDF support (-DNETCDF=ON):
-# BuildRequires: pkgconfig(netcdf)
-# if we were to compile with proj support (-DWITH_PROJ=ON):
-# BuildRequires: pkgconfig(proj)
-# if we were to compile with snappy support (-DWITH_SNAPPY=ON):
-# BuildRequires: pkgconfig(snappy)
-# if we were to compile with valgrind support (-DWITH_VALGRIND=ON):
-# BuildRequires: pkgconfig(valgrind)
+# optional packages:
+# BuildRequires: pkgconfig(cmocka) # -DWITH_CMOCKA=ON
+# BuildRequires: pkgconfig(gdal)   # -DSHP=ON
+# BuildRequires: pkgconfig(netcdf) # -DNETCDF=ON
+# BuildRequires: pkgconfig(proj)   # -DWITH_PROJ=ON
+# BuildRequires: pkgconfig(snappy) # -DWITH_SNAPPY=ON
+# BuildRequires: pkgconfig(valgrind)   # -DWITH_VALGRIND=ON
 
 %if (0%{?fedora} >= 22)
 Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release}
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -6259,6 +6259,8 @@ stdout of test 'MAL-signatures` in direc
 [ "batmtime",  "timestamp_to_str", "pattern 
batmtime.timestamp_to_str(X_1:timestamp, X_2:bat[:str], 
X_3:bat[:oid]):bat[:str] ","MTIMEtimestamp_to_str_bulk_p1;",   ""  ]
 [ "batmtime",  "timestamp_to_str", "pattern 
batmtime.timestamp_to_str(X_1:bat[:timestamp], X_2:str):bat[:str] ",   
"MTIMEtimestamp_to_str_bulk_p2;",   ""  ]
 [ "batmtime",  "timestamp_to_str", "pattern 
batmtime.timestamp_to_str(X_1:bat[:timestamp], X_2:str, 
X_3:bat[:oid]):bat[:str] ","MTIMEtimestamp_to_str_bulk_p2;",   ""  ]
+[ "batmtime",  "usweekofyear", "pattern 
batmtime.usweekofyear(X_1:bat[:date]):bat[:int] ", 
"MTIMEdate_extract_usweekofyear_bulk;", ""  ]
+[ "batmtime",  "usweekofyear", "pattern batmtime.usweekofyear(X_1:bat[:date], 
X_2:bat[:oid]):bat[:int] ",  "MTIMEdate_extract_usweekofyear_bulk;", "" 
 ]
 [ "batmtime",  "weekofyear",   "pattern 
batmtime.weekofyear(X_1:bat[:date]):bat[:int] ",   
"MTIMEdate_extract_weekofyear_bulk;",   ""  ]
 [ "batmtime",  "weekofyear",   "pattern batmtime.weekofyear(X_1:bat[:date], 
X_2:bat[:oid]):bat[:int] ","MTIMEdate_extract_weekofyear_bulk;",   ""   
   ]
 [ "batmtime",  "year", "pattern batmtime.year(X_1:bat[:date]):bat[:int] ", 
"MTIMEdate_extract_year_bulk;", ""  ]
@@ -9089,6 +9091,7 @@ stdout of test 'MAL-signatures` in direc
 [ "mtime", "timestamp_sub_month_interval", "command 
mtime.timestamp_sub_month_interval(X_1:timestamp, X_2:int):timestamp ",
"MTIMEtimestamp_sub_month_interval;",   ""  ]
 [ "mtime", "timestamp_sub_msec_interval",  "command 
mtime.timestamp_sub_msec_interval(X_1:timestamp, X_2:lng):timestamp ", 
"MTIMEtimestamp_sub_msec_interval;",""  ]
 [ "mtime", "timestamp_to_str", "command 
mtime.timestamp_to_str(X_1:timestamp, X_2:str):str ",  
"MTIMEtimestamp_to_str;",   ""  ]
+[ "mtime", "usweekofyear", "command mtime.usweekofyear(X_1:date):int ",
"MTIMEdate_extract_usweekofyear;",  ""  ]
 [ "mtime", "weekofyear",   "command mtime.weekofyear(X_1:date):int ",  
"MTIMEdate_extract_weekofyear;",""  ]
 [ "mtime", "year", "command mtime.year(X_1:date):int ",
"MTIMEdate_extract_year;",  ""  ]
 [ "mtime", "year", "command mtime.year(X_1:int):int ", 
"MTIMEsql_year;",   ""  ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -8789,6 +8789,8 @@ stdout of test 'MAL-signatures` in direc
 [ "batmtime",  "timestamp_to_str", "pattern 
batmtime.timestamp_to_str(X_1:timestamp, X_2:bat[:str], 
X_3:bat[:oid]):bat[:str] ","MTIMEtimestamp_to_str_bulk_p1;",   ""  ]
 [ "batmtime",  "timestamp_to_str", "pattern 
batmtime.timestamp_to_str(X_1:bat[:timestamp], X_2:str):bat[:str] ",   
"MTIMEtimestamp_to_str_bulk_p2;",   ""  ]
 [ "batmtime",  "timestamp_to_str", "pattern 
batmtime.timestamp_to_str(X_1:bat[:timestamp], X_2:str, 
X_3:bat[:oid]):bat[:str] ",

MonetDB: scoping2 - Merged with default

2020-11-25 Thread Pedro Ferreira
Changeset: 09a1e60d39cf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=09a1e60d39cf
Modified Files:
clients/mapiclient/dump.c
sql/server/rel_exp.c
sql/server/rel_psm.c
sql/server/rel_select.c
sql/server/sql_parser.y
sql/test/miscellaneous/Tests/simple_selects.stable.err
tools/monetdbe/monetdbe.c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 129852 to 300 lines):

diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py
--- a/NT/mkodbcwxs.py
+++ b/NT/mkodbcwxs.py
@@ -80,9 +80,9 @@ def main():
r'lib\MonetODBC.dll', # r'lib\MonetODBC.pdb',
r'lib\MonetODBCs.dll', # r'lib\MonetODBCs.pdb',
r'bin\stream.dll', # r'lib\stream.pdb',
-   vcpkg.format(r'bin\libiconv.dll'),
+   vcpkg.format(r'bin\iconv-2.dll'),
vcpkg.format(r'bin\bz2.dll'),
-   vcpkg.format(r'bin\libcharset.dll'), # for libiconv.dll
+   vcpkg.format(r'bin\charset-1.dll'), # for iconv-2.dll
vcpkg.format(r'bin\libcrypto-1_1{}.dll'.format(libcrypto)),
vcpkg.format(r'bin\zlib1.dll')])
 print(r'')
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -145,10 +145,10 @@ def main():
r'bin\monetdb5.dll',
r'bin\monetdbsql.dll',
r'bin\stream.dll',
-   vcpkg.format(r'bin\libiconv.dll'),
+   vcpkg.format(r'bin\iconv-2.dll'),
vcpkg.format(r'bin\bz2.dll'),
+   vcpkg.format(r'bin\charset-1.dll'), # for iconv-2.dll
vcpkg.format(r'bin\getopt.dll'),
-   vcpkg.format(r'bin\libcharset.dll'), # for libiconv.dll
vcpkg.format(r'bin\libcrypto-1_1{}.dll'.format(libcrypto)),
vcpkg.format(r'bin\libxml2.dll'),
vcpkg.format(r'bin\lz4.dll'),
@@ -199,10 +199,10 @@ def main():
r'lib\monetdb5.lib',
r'lib\monetdbsql.lib',
r'lib\stream.lib',
-   vcpkg.format(r'lib\libiconv.lib'),
+   vcpkg.format(r'lib\iconv.lib'),
vcpkg.format(r'lib\bz2.lib'),
+   vcpkg.format(r'lib\charset.lib'),
vcpkg.format(r'lib\getopt.lib'),
-   vcpkg.format(r'lib\libcharset.lib'),
vcpkg.format(r'lib\libcrypto.lib'),
vcpkg.format(r'lib\libxml2.lib'),
vcpkg.format(r'lib\lz4.lib'),
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -46,76 +46,6 @@
 
 #include "msqldump.h"
 
-static const char *
-get_with_comments_as_clause(Mapi mid)
-{
-   const char *query = /* check whether sys.comments exists */
-   "SELECT t.id "
-   "FROM sys._tables t JOIN sys.schemas s ON t.schema_id = s.id "
-   "WHERE s.name = 'sys' AND t.name = 'comments'";
-   const char *new_clause =
-   "WITH comments AS (SELECT * FROM sys.comments), "
-"function_types AS (SELECT * FROM sys.function_types), "
-"function_languages AS (SELECT * FROM 
sys.function_languages)";
-   const char *old_clause =
-   "WITH comments AS ("
-   "SELECT 42 AS id, 'no comment' AS remark WHERE FALSE"
-"), "
-"function_types AS ("
-   "SELECT function_type_id, function_type_name, 
function_type_keyword "
-   "FROM sys.function_types, "
-"(VALUES "
-   "(1, 'FUNCTION'),  "
-   "(2, 'PROCEDURE'), "
-   "(3, 'AGGREGATE'), "
-   "(4, 'FILTER FUNCTION'), "
-   "(5, 'FUNCTION'),  "
-   "(6, 'FUNCTION'),  "
-   "(7, 'LOADER')) AS (id, function_type_keyword) "
-   "WHERE id = function_type_id"
-"), "
-"function_languages AS ("
-   "SELECT language_id, language_name, language_keyword "
-   "FROM sys.function_languages, (VALUES "
-   "(3, 'R'), "
-   "(4, 'C'), "
-   "(6, 'PYTHON'), "
-   "(7, 'PYTHON_MAP'), "
-   "(8, 'PYTHON2'), "
-   "(9, 'PYTHON2_MAP'), "
-   "(10, 'PYTHON3'), "
-   "(11, 'PYTHON3_MAP'), "
-   "(12, 'CPP')) AS (id, language_keyword) "
-   "WHERE id = language_id"
-")";
-
-   bool has_sys_comments = false;
-   MapiHdl hdl = 

MonetDB: scoping2 - Merged with default

2020-11-23 Thread Pedro Ferreira
Changeset: 8bff027202e2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8bff027202e2
Modified Files:
sql/server/rel_select.c
Branch: scoping2
Log Message:

Merged with default


diffs (258 lines):

diff --git a/monetdb5/optimizer/opt_pushselect.c 
b/monetdb5/optimizer/opt_pushselect.c
--- a/monetdb5/optimizer/opt_pushselect.c
+++ b/monetdb5/optimizer/opt_pushselect.c
@@ -22,6 +22,7 @@ PushArgument(MalBlkPtr mb, InstrPtr p, i
return p;
 }
 
+#if 0
 static InstrPtr
 PushNil(MalBlkPtr mb, InstrPtr p, int pos, int tpe)
 {
@@ -34,6 +35,7 @@ PushNil(MalBlkPtr mb, InstrPtr p, int po
getArg(p, pos) = arg;
return p;
 }
+#endif
 
 static InstrPtr
 ReplaceWithNil(MalBlkPtr mb, InstrPtr p, int pos, int tpe)
@@ -74,6 +76,7 @@ subselect_add( subselect_t *subselects, 
return i;
 }
 
+#if 0
 static int
 subselect_find_tids( subselect_t *subselects, int subselect)
 {
@@ -99,6 +102,7 @@ subselect_find_subselect( subselect_t *s
}
return -1;
 }
+#endif
 
 static int
 lastbat_arg(MalBlkPtr mb, InstrPtr p)
@@ -298,7 +302,7 @@ OPTpushselectImplementation(Client cntxt
}
}
 
-   if (/* DISABLES CODE */ (0) && subselects.nr) {
+   if (nr_likes || subselects.nr) {
if (newMalBlkStmt(mb, mb->ssize) <0 ) {
GDKfree(vars);
goto wrapup;
@@ -309,12 +313,16 @@ OPTpushselectImplementation(Client cntxt
for (i = 1; i < limit; i++) {
p = old[i];
 
-   /* rewrite batalgebra.like + select -> likeselect */
-   if (getModuleId(p) == algebraRef && p->retc == 1 && 
getFunctionId(p) == selectRef) {
+   /* rewrite batalgebra.like + [theta]select -> 
likeselect */
+   if (getModuleId(p) == algebraRef && p->retc == 1 &&
+   (getFunctionId(p) == selectRef || 
getFunctionId(p) == thetaselectRef)) {
int var = getArg(p, 1);
InstrPtr q = mb->stmt[vars[var]]; /* BEWARE: 
the optimizer may not add or remove statements ! */
 
-   if (isLikeOp(q)) { /* TODO check if getArg(p, 
3) value == TRUE */
+   if (isLikeOp(q) &&
+   !isaBatType(getArgType(mb, q, 
2)) && /* pattern is a value */
+   (q->argc != 4 || 
!isaBatType(getArgType(mb, q, 3))) /* escape is a value */
+   ) {
InstrPtr r = newInstruction(mb, 
algebraRef, likeselectRef);
int has_cand = (getArgType(mb, p, 2) == 
newBatType(TYPE_oid));
int a, anti = (getFunctionId(q)[0] == 
'n'), ignore_case = (getFunctionId(q)[anti?4:0] == 'i');
@@ -340,6 +348,7 @@ OPTpushselectImplementation(Client cntxt
/* inject table ids into subselect
 * s = subselect(c, C1..) => subselect(c, t, C1..)
 */
+#if 0
if (isSelect(p) && p->retc == 1) {
int tid = 0;
 
@@ -445,6 +454,7 @@ OPTpushselectImplementation(Client cntxt
}
}
}
+#endif
pushInstruction(mb,p);
}
for (; isa);
exp_kind ek = {type_value, card_value, TRUE};
-   unsigned int card = dlist_length(rowlist) == 1 ? CARD_ATOM : CARD_MULTI;
 
for (dnode *o = rowlist->h; o; o = o->next) {
dlist *values = o->data.lval;
@@ -823,7 +822,9 @@ rel_values(sql_query *query, symbol *tab
}
}
}
+
/* loop to check types and cardinality */
+   unsigned int card = exps->h && 
list_length(((sql_exp*)exps->h->data)->f) > 1 ? CARD_MULTI : CARD_ATOM;
for (m = exps->h; m; m = m->next) {
sql_exp *e = m->data;
 
diff --git 
a/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
 
b/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
--- 
a/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
+++ 
b/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
@@ -263,12 +263,13 @@ function user.main():void;
 X_44:bat[:int] := bat.pack(0:int, 0:int);
 X_4:int := sql.mvc();
 X_17:bat[:str] := sql.bind(X_4:int, "sys":str, "functions":str, 
"name":str, 0:int);
+C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "functions":str);
+C_131:bat[:oid] := algebra.likeselect(X_17:bat[:str], C_5:bat[:oid], 
"%optimizers%":str, "":str, false:bit, false:bit);
 (X_19:bat[:oid], X_20:bat[:str]) := 

MonetDB: scoping2 - Merged with default

2020-11-20 Thread Pedro Ferreira
Changeset: 90a64a92469f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=90a64a92469f
Modified Files:
tools/monetdbe/monetdbe.c
Branch: scoping2
Log Message:

Merged with default


diffs (121 lines):

diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -611,6 +611,7 @@ msab_pickSecret(char **generated_secret)
if (generated_secret)
// do not return an error, just continue without a secret
*generated_secret = NULL;
+   free(secret);
return NULL;
 #endif
 #endif
@@ -629,6 +630,7 @@ msab_pickSecret(char **generated_secret)
char err[512];
snprintf(err, sizeof(err), "unable to open '%s': %s",
pathbuf, strerror(errno));
+   free(secret);
return strdup(err);
}
if ((f = fdopen(fd, "w")) == NULL) {
@@ -637,6 +639,7 @@ msab_pickSecret(char **generated_secret)
pathbuf, strerror(errno));
close(fd);
(void)remove(pathbuf);
+   free(secret);
return strdup(err);
}
if (fwrite(secret, 1, SECRET_LENGTH, f) < SECRET_LENGTH || fclose(f) < 
0) {
@@ -645,11 +648,14 @@ msab_pickSecret(char **generated_secret)
strerror(errno));
fclose(f);
(void)remove(pathbuf);
+   free(secret);
return strdup(err);
}
 
if (generated_secret)
*generated_secret = (char*)secret;
+   else
+   free(secret);
return NULL;
 #endif
 }
diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -1443,12 +1443,53 @@ cleanup_get_columns_result(size_t column
column_types = NULL;
 }
 
+static char *
+escape_identifier(const char *s) /* Escapes a SQL identifier string, ie the " 
and \ characters */
+{
+   char *ret = NULL, *q;
+   const char *p = s;
+
+   /* At most we will need 2*strlen(s) + 1 characters */
+   if (!(ret = (char *)GDKmalloc(2*strlen(s) + 1)))
+   return NULL;
+
+   for (q = ret; *p; p++, q++) {
+   *q = *p;
+   if (*p == '"')
+   *(++q) = '"';
+   else if (*p == '\\')
+   *(++q) = '\\';
+   }
+
+   *q = '\0';
+   return ret;
+}
+
 static char*
 monetdbe_get_columns_remote(monetdbe_database_internal *mdbe, const char* 
schema_name, const char *table_name, size_t *column_count,
char ***column_names, int 
**column_types)
 {
-   char buf[140];
-   snprintf(buf, 140, "SELECT * FROM %s.%s WHERE FALSE;", schema_name, 
table_name);
+   char buf[1024], *escaped_schema_name = NULL, *escaped_table_name = NULL;
+
+   if (schema_name && !(escaped_schema_name = 
escape_identifier(schema_name))) {
+   mdbe->msg = createException(MAL, 
"monetdbe.monetdbe_get_columns", MAL_MALLOC_FAIL);
+   return mdbe->msg;
+   }
+   if (!(escaped_table_name = escape_identifier(table_name))) {
+   GDKfree(escaped_schema_name);
+   mdbe->msg = createException(MAL, 
"monetdbe.monetdbe_get_columns", MAL_MALLOC_FAIL);
+   return mdbe->msg;
+   }
+
+   int len = snprintf(buf, 1024, "SELECT * FROM %s%s%s\"%s\" WHERE FALSE;",
+  escaped_schema_name ? "\"" : "",  
escaped_schema_name ? escaped_schema_name : "", 
+  escaped_schema_name ? 
escaped_schema_name : "\".", escaped_table_name);
+   GDKfree(escaped_schema_name);
+   GDKfree(escaped_table_name);
+   if (len == -1 || len >= 1024) {
+   mdbe->msg = createException(MAL, 
"monetdbe.monetdbe_get_columns", "Schema and table path is too large");
+   return mdbe->msg;
+   }
 
monetdbe_result* result = NULL;
 
@@ -1721,7 +1762,7 @@ append_create_remote_append_mal_program(
a = newFcnCall(mb, sqlRef, appendRef);
setArgType(mb, a, 0, TYPE_int);
a = pushArgument(mb, a, mvc_id);
-   a = pushStr(mb, a, schema);
+   a = pushStr(mb, a, schema ? schema : "sys"); /* TODO this 
should be better */
a = pushStr(mb, a, table);
a = pushStr(mb, a, cnames[i]);
a = pushArgument(mb, a, idx);
@@ -1770,10 +1811,6 @@ monetdbe_append(monetdbe_database dbhdl,
if ((mdbe->msg = getSQLContext(mdbe->c, NULL, , NULL)) != MAL_SUCCEED)
goto cleanup;
 
-   if (schema == NULL) {
-   mdbe->msg = createException(MAL, "monetdbe.monetdbe_append", 
"schema parameter is NULL");
-   goto cleanup;
-   }
if (table == NULL) {
   

MonetDB: scoping2 - Merged with default

2020-11-20 Thread Pedro Ferreira
Changeset: 75d52fe05398 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=75d52fe05398
Modified Files:
sql/backends/monet5/sql_cat.c
sql/include/sql_catalog.h
sql/server/rel_optimizer.c
sql/server/rel_propagate.c
sql/server/rel_schema.c
sql/storage/sql_catalog.c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 1034 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -868,6 +868,15 @@ else
 fi
 %endif
 
+%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
+# fix up some paths (/var/run -> /run)
+# needed because CMAKE_INSTALL_RUNSTATEDIR refers to /var/run
+sed -i 's|/var/run|/run|' \
+%{buildroot}%{_tmpfilesdir}/monetdbd.conf \
+%{buildroot}%{_localstatedir}/monetdb5/dbfarm/.merovingian_properties \
+%{buildroot}%{_unitdir}/monetdbd.service
+%endif
+
 %post -p /sbin/ldconfig
 
 %postun -p /sbin/ldconfig
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
@@ -664,6 +664,7 @@ MapiHdl mapi_send(Mapi mid, const char *
 MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit) 
__attribute__((__nonnull__(1)));
 MapiMsg mapi_set_columnar_protocol(Mapi mid, bool columnar_protocol) 
__attribute__((__nonnull__(1)));
 MapiMsg mapi_set_size_header(Mapi mid, bool value) 
__attribute__((__nonnull__(1)));
+MapiMsg mapi_set_timeout(Mapi mid, unsigned int timeout, bool (*callback)(void 
*), void *callback_data) __attribute__((__nonnull__(1)));
 void mapi_setfilecallback(Mapi mid, char *(*getfunc)(void *priv, const char 
*filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void 
*priv, const char *filename, const void *data, size_t size), void *priv) 
__attribute__((__nonnull__(1)));
 int mapi_split_line(MapiHdl hdl) __attribute__((__nonnull__(1)));
 
@@ -1783,7 +1784,7 @@ int mnstr_readStr(stream *restrict s, ch
 ssize_t mnstr_read_block(stream *restrict s, void *restrict buf, size_t 
elmsize, size_t cnt);
 ssize_t mnstr_readline(stream *restrict s, void *restrict buf, size_t maxcnt);
 void mnstr_set_bigendian(stream *s, bool bigendian);
-void mnstr_settimeout(stream *s, unsigned int ms, bool (*func)(void));
+void mnstr_settimeout(stream *s, unsigned int ms, bool (*func)(void *), void 
*data);
 ssize_t mnstr_write(stream *restrict s, const void *restrict buf, size_t 
elmsize, size_t cnt);
 int mnstr_writeBte(stream *s, int8_t val);
 int mnstr_writeBteArray(stream *restrict s, const int8_t *restrict val, size_t 
cnt);
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3678,8 +3678,9 @@ main(int argc, char **argv)
s = open_rastream(arg);
}
if (s == NULL) {
-   fprintf(stderr, "%s: cannot open: %s", arg, 
mnstr_peek_error(NULL));
+   fprintf(stderr, "%s: cannot open: %s\n", arg, 
mnstr_peek_error(NULL));
c |= 1;
+   optind++;
continue;
}
// doFile closes 's'.
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -3279,16 +3279,22 @@ prepareQuery(MapiHdl hdl, const char *cm
 
 
 MapiMsg
-mapi_timeout(Mapi mid, unsigned int timeout)
+mapi_set_timeout(Mapi mid, unsigned int timeout, bool (*callback)(void *), 
void *callback_data)
 {
mapi_check(mid);
if (mid->trace)
printf("Set timeout to %u\n", timeout);
-   mnstr_settimeout(mid->to, timeout, NULL);
-   mnstr_settimeout(mid->from, timeout, NULL);
+   mnstr_settimeout(mid->to, timeout, callback, callback_data);
+   mnstr_settimeout(mid->from, timeout, callback, callback_data);
return MOK;
 }
 
+MapiMsg
+mapi_timeout(Mapi mid, unsigned int timeout)
+{
+   return mapi_set_timeout(mid, timeout, NULL, NULL);
+}
+
 static MapiMsg
 mapi_Xcommand(Mapi mid, const char *cmdname, const char *cmdvalue)
 {
diff --git a/clients/mapilib/mapi.h b/clients/mapilib/mapi.h
--- a/clients/mapilib/mapi.h
+++ b/clients/mapilib/mapi.h
@@ -177,6 +177,8 @@ mapi_export MapiMsg mapi_cache_freeup(Ma
 mapi_export MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence)
__attribute__((__nonnull__(1)));
 
+mapi_export MapiMsg mapi_set_timeout(Mapi mid, unsigned int timeout, bool 
(*callback)(void *), void *callback_data)
+   __attribute__((__nonnull__(1)));
 mapi_export MapiMsg mapi_timeout(Mapi mid, unsigned int time)
__attribute__((__nonnull__(1)));
 mapi_export int mapi_fetch_row(MapiHdl hdl)
diff --git a/common/stream/bs2.c b/common/stream/bs2.c
--- a/common/stream/bs2.c
+++ b/common/stream/bs2.c
@@ -594,6 +594,7 @@ 

MonetDB: scoping2 - Merged with default

2020-11-18 Thread Pedro Ferreira
Changeset: 06d8e1f8c508 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=06d8e1f8c508
Branch: scoping2
Log Message:

Merged with default


diffs (223 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -789,3 +789,5 @@ cb4b3f021774b60ffd84c3004d341ec04de736f3
 bd91504a03736565fb2dff13cd4c94c738e81aa0 Oct2020_5
 cb4b3f021774b60ffd84c3004d341ec04de736f3 Oct2020_release
 bd91504a03736565fb2dff13cd4c94c738e81aa0 Oct2020_release
+ac8254a47e87d0be9df2a623e2c2fcf67c0f982d Oct2020_7
+ac8254a47e87d0be9df2a623e2c2fcf67c0f982d Oct2020_SP1_release
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -97,7 +97,7 @@ Group: Applications/Databases
 License: MPLv2.0
 URL: https://www.monetdb.org/
 BugURL: https://bugs.monetdb.org/
-Source: 
https://www.monetdb.org/downloads/sources/Oct2020/%{name}-%{version}.tar.bz2
+Source: 
https://www.monetdb.org/downloads/sources/Oct2020-SP1/%{name}-%{version}.tar.bz2
 
 # The Fedora packaging document says we need systemd-rpm-macros for
 # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
@@ -873,6 +873,22 @@ fi
 %postun -p /sbin/ldconfig
 
 %changelog
+* Wed Nov 18 2020 Sjoerd Mullender  - 11.39.7-20201118
+- Rebuilt.
+- BZ#6890: Add support of xz/lzma (de)compression on MS Windows
+- BZ#6891: Add support of lz4 (de)compression on MS Windows
+- BZ#6971: Parsing table returning function on remote server fails
+- BZ#6981: Oct2020: PREPARE DDL statement silently fails
+- BZ#6983: monetdb allows to use non-existing optimizer pipe
+- BZ#6998: MAL profiler buffer limitations
+- BZ#7001: crossproduct generated for a simple (semi-)join
+- BZ#7003: Segfault on large chain of constant decimal multiplication
+- BZ#7005: Dropping a STREAM TABLE does not remove the associated column
+  info from sys._columns
+- BZ#7010: deallocate  results in all prepared statements being
+  deallocated (not error-related)
+- BZ#7011: uuid() called only once when used in projection list
+
 * Tue Oct 13 2020 Sjoerd Mullender  - 11.39.5-20201013
 - Rebuilt.
 
diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake
--- a/cmake/monetdb-versions.cmake
+++ b/cmake/monetdb-versions.cmake
@@ -50,7 +50,7 @@ set(MONETDB_VERSION "${MONETDB_VERSION_M
 # version of the GDK library (subdirectory gdk; also includes
 # common/options and common/utils)
 set(GDK_VERSION_CURRENT "21")
-set(GDK_VERSION_REVISION "2")
+set(GDK_VERSION_REVISION "3")
 set(GDK_VERSION_AGE "0")
 math(EXPR GDK_VERSION_MAJOR "${GDK_VERSION_CURRENT} - ${GDK_VERSION_AGE}")
 set(GDK_VERSION 
"${GDK_VERSION_MAJOR}.${GDK_VERSION_AGE}.${GDK_VERSION_REVISION}")
@@ -64,21 +64,21 @@ set(MAPI_VERSION "${MAPI_VERSION_MAJOR}.
 
 # version of the MONETDB5 library (subdirectory monetdb5, not including extras 
or sql)
 set(MONETDB5_VERSION_CURRENT "30")
-set(MONETDB5_VERSION_REVISION "1")
+set(MONETDB5_VERSION_REVISION "2")
 set(MONETDB5_VERSION_AGE "0")
 math(EXPR MONETDB5_VERSION_MAJOR "${MONETDB5_VERSION_CURRENT} - 
${MONETDB5_VERSION_AGE}")
 set(MONETDB5_VERSION 
"${MONETDB5_VERSION_MAJOR}.${MONETDB5_VERSION_AGE}.${MONETDB5_VERSION_REVISION}")
 
 # version of the MONETDBE library (subdirectory tools/monetdbe)
 set(MONETDBE_VERSION_CURRENT "1")
-set(MONETDBE_VERSION_REVISION "0")
+set(MONETDBE_VERSION_REVISION "1")
 set(MONETDBE_VERSION_AGE "0")
 math(EXPR MONETDBE_VERSION_MAJOR "${MONETDBE_VERSION_CURRENT} - 
${MONETDBE_VERSION_AGE}")
 set(MONETDBE_VERSION 
"${MONETDBE_VERSION_MAJOR}.${MONETDBE_VERSION_AGE}.${MONETDBE_VERSION_REVISION}")
 
 # version of the STREAM library (subdirectory common/stream)
 set(STREAM_VERSION_CURRENT "14")
-set(STREAM_VERSION_REVISION "1")
+set(STREAM_VERSION_REVISION "2")
 set(STREAM_VERSION_AGE "0")
 math(EXPR STREAM_VERSION_MAJOR "${STREAM_VERSION_CURRENT} - 
${STREAM_VERSION_AGE}")
 set(STREAM_VERSION 
"${STREAM_VERSION_MAJOR}.${STREAM_VERSION_AGE}.${STREAM_VERSION_REVISION}")
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,22 @@
+monetdb (11.39.7) unstable; urgency=low
+
+  * Rebuilt.
+  * BZ#6890: Add support of xz/lzma (de)compression on MS Windows
+  * BZ#6891: Add support of lz4 (de)compression on MS Windows
+  * BZ#6971: Parsing table returning function on remote server fails
+  * BZ#6981: Oct2020: PREPARE DDL statement silently fails
+  * BZ#6983: monetdb allows to use non-existing optimizer pipe
+  * BZ#6998: MAL profiler buffer limitations
+  * BZ#7001: crossproduct generated for a simple (semi-)join
+  * BZ#7003: Segfault on large chain of constant decimal multiplication
+  * BZ#7005: Dropping a STREAM TABLE does not remove the associated column
+info from sys._columns
+  * BZ#7010: deallocate  results in all prepared statements being
+deallocated (not error-related)
+  * BZ#7011: uuid() called only once when used in projection list
+
+ -- Sjoerd Mullender   Wed, 18 Nov 2020 15:53:30 +0100
+
 monetdb (11.39.5) unstable; urgency=low
 
   * Rebuilt.
diff --git 

MonetDB: scoping2 - Merged with default

2020-11-18 Thread Pedro Ferreira
Changeset: c7c9df6cdd8b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c7c9df6cdd8b
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/sql_user.c
sql/server/rel_optimizer.c
sql/server/sql_parser.y
sql/test/pg_regress/Tests/numeric.stable.err
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 2965 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -153,6 +153,13 @@ BuildRequires: python3-numpy
 %endif
 %if %{with rintegration}
 BuildRequires: pkgconfig(libR)
+%if (0%{?fedora} == 32)
+# work around a packaging bug on Fedora 32 (18 Nov 2020)
+# problem is things like:
+# file /etc/texlive/web2c/updmap.cfg conflicts between attempted installs of 
texlive-tetex-7:20190410-12.fc32.noarch and 
texlive-texlive-scripts-7:20200327-16.fc32.noarch
+# texlive-tetex is obsoleted by texlive-obsolete
+BuildRequires: texlive-obsolete
+%endif
 %endif
 # if we were to compile with cmocka support (-DWITH_CMOCKA=ON):
 # BuildRequires: pkgconfig(cmocka)
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -6064,6 +6064,8 @@ stdout of test 'MAL-signatures` in direc
 [ "batmmath",  "radians",  "pattern batmmath.radians(X_1:bat[:dbl], 
X_2:bat[:oid]):bat[:dbl] ","CMDscience_bat_radians;",  ""  ]
 [ "batmmath",  "radians",  "pattern 
batmmath.radians(X_1:bat[:flt]):bat[:flt] ",   "CMDscience_bat_radians;",  
""  ]
 [ "batmmath",  "radians",  "pattern batmmath.radians(X_1:bat[:flt], 
X_2:bat[:oid]):bat[:flt] ","CMDscience_bat_radians;",  ""  ]
+[ "batmmath",  "rand", "unsafe pattern batmmath.rand(X_1:bat[:int]):bat[:int] 
",   "CMDscience_bat_randintarg;",   ""  ]
+[ "batmmath",  "rand", "unsafe pattern batmmath.rand(X_1:bat[:int], 
X_2:bat[:oid]):bat[:int] ","CMDscience_bat_randintarg;",   ""  ]
 [ "batmmath",  "sin",  "pattern batmmath.sin(X_1:bat[:dbl]):bat[:dbl] ",   
"CMDscience_bat_sin;",  ""  ]
 [ "batmmath",  "sin",  "pattern batmmath.sin(X_1:bat[:dbl], 
X_2:bat[:oid]):bat[:dbl] ","CMDscience_bat_sin;",  ""  ]
 [ "batmmath",  "sin",  "pattern batmmath.sin(X_1:bat[:flt]):bat[:flt] ",   
"CMDscience_bat_sin;",  ""  ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -8594,6 +8594,8 @@ stdout of test 'MAL-signatures` in direc
 [ "batmmath",  "radians",  "pattern batmmath.radians(X_1:bat[:dbl], 
X_2:bat[:oid]):bat[:dbl] ","CMDscience_bat_radians;",  ""  ]
 [ "batmmath",  "radians",  "pattern 
batmmath.radians(X_1:bat[:flt]):bat[:flt] ",   "CMDscience_bat_radians;",  
""  ]
 [ "batmmath",  "radians",  "pattern batmmath.radians(X_1:bat[:flt], 
X_2:bat[:oid]):bat[:flt] ","CMDscience_bat_radians;",  ""  ]
+[ "batmmath",  "rand", "unsafe pattern batmmath.rand(X_1:bat[:int]):bat[:int] 
",   "CMDscience_bat_randintarg;",   ""  ]
+[ "batmmath",  "rand", "unsafe pattern batmmath.rand(X_1:bat[:int], 
X_2:bat[:oid]):bat[:int] ","CMDscience_bat_randintarg;",   ""  ]
 [ "batmmath",  "sin",  "pattern batmmath.sin(X_1:bat[:dbl]):bat[:dbl] ",   
"CMDscience_bat_sin;",  ""  ]
 [ "batmmath",  "sin",  "pattern batmmath.sin(X_1:bat[:dbl], 
X_2:bat[:oid]):bat[:dbl] ","CMDscience_bat_sin;",  ""  ]
 [ "batmmath",  "sin",  "pattern batmmath.sin(X_1:bat[:flt]):bat[:flt] ",   
"CMDscience_bat_sin;",  ""  ]
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -370,8 +370,10 @@ VIEWreset(BAT *b)
b->batCapacity = cnt;
 
/* insert all of v in b, and quit */
-   if (BATappend2(b, v, NULL, false, false) != GDK_SUCCEED)
+   if (BATappend2(b, v, NULL, false, false) != GDK_SUCCEED) {
+   GDKerror("appending view failed");
goto bailout;
+   }
BBPreclaim(v);
}
return GDK_SUCCEED;
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2831,6 +2831,233 @@ hashjoin(BAT **r1p, BAT **r2p, BAT *l, B
return GDK_FAIL;
 }
 
+/* population count: count number of 1 bits in a value */
+static inline uint32_t __attribute__((__const__))
+pop(uint32_t x)
+{
+#if defined(__GNUC__)
+   return (uint32_t) __builtin_popcount(x);
+#elif defined(_MSC_VER)
+   return (uint32_t) __popcnt((unsigned int) (x));
+#else
+   /* divide and conquer implementation (the two versions are
+* essentially equivalent, but the first version is written a
+* bit smarter) */
+#if 1
+ 

MonetDB: scoping2 - Merged with default

2020-11-17 Thread Pedro Ferreira
Changeset: 159fe3ae7ecf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=159fe3ae7ecf
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_select.c
sql/server/rel_unnest.c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 2731 to 300 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -183,4 +183,5 @@ if(CMAKE_SUMMARY)
   monetdb_cmake_summary()
 endif()
 
+
 # vim: set ts=2:sw=2:et
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -6639,6 +6639,7 @@ stdout of test 'MAL-signatures` in direc
 [ "batudf","fuse", "command batudf.fuse(X_1:bat[:sht], 
X_2:bat[:sht]):bat[:int] ", "UDFBATfuse;",  ""  ]
 [ "batudf","reverse",  "command 
batudf.reverse(X_1:bat[:str]):bat[:str] ", "UDFBATreverse;",   ""  ]
 [ "batuuid",   "isaUUID",  "command 
batuuid.isaUUID(X_1:bat[:str]):bat[:bit] ","UUIDisaUUID_bulk;",""  ]
+[ "batuuid",   "new",  "unsafe command batuuid.new(X_1:bat[:int]):bat[:uuid] 
","UUIDgenerateUuidInt_bulk;",""  ]
 [ "batxml","attribute","command batxml.attribute(X_1:str, 
X_2:bat[:str]):bat[:xml] ",  "BATXMLattribute;", ""  ]
 [ "batxml","comment",  "command 
batxml.comment(X_1:bat[:str]):bat[:xml] ", "BATXMLcomment;",   ""  ]
 [ "batxml","concat",   "command batxml.concat(X_1:bat[:xml], 
X_2:bat[:xml]):bat[:xml] ",   "BATXMLconcat;",""  ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -9199,6 +9199,7 @@ stdout of test 'MAL-signatures` in direc
 [ "batudf","fuse", "command batudf.fuse(X_1:bat[:sht], 
X_2:bat[:sht]):bat[:int] ", "UDFBATfuse;",  ""  ]
 [ "batudf","reverse",  "command 
batudf.reverse(X_1:bat[:str]):bat[:str] ", "UDFBATreverse;",   ""  ]
 [ "batuuid",   "isaUUID",  "command 
batuuid.isaUUID(X_1:bat[:str]):bat[:bit] ","UUIDisaUUID_bulk;",""  ]
+[ "batuuid",   "new",  "unsafe command batuuid.new(X_1:bat[:int]):bat[:uuid] 
","UUIDgenerateUuidInt_bulk;",""  ]
 [ "batxml","attribute","command batxml.attribute(X_1:str, 
X_2:bat[:str]):bat[:xml] ",  "BATXMLattribute;", ""  ]
 [ "batxml","comment",  "command 
batxml.comment(X_1:bat[:str]):bat[:xml] ", "BATXMLcomment;",   ""  ]
 [ "batxml","concat",   "command batxml.concat(X_1:bat[:xml], 
X_2:bat[:xml]):bat[:xml] ",   "BATXMLconcat;",""  ]
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
@@ -301,7 +301,7 @@ int GDKnr_threads;
 void GDKprepareExit(void);
 void GDKqsort(void *restrict h, void *restrict t, const void *restrict base, 
size_t n, int hs, int ts, int tpe, bool reverse, bool nilslast);
 void *GDKrealloc(void *pold, size_t size) __attribute__((__alloc_size__(2))) 
__attribute__((__warn_unused_result__));
-gdk_return GDKrebuild_segment_tree(oid ncount, oid data_size, void 
**segment_tree, oid *tree_capacity, oid **levels_offset, oid *levels_capacity, 
oid *nlevels);
+gdk_return GDKrebuild_segment_tree(oid ncount, oid data_size, void 
**segment_tree, oid *tree_capacity, oid **levels_offset, oid *nlevels);
 gdk_return GDKreleasemmap(void *ptr, size_t size, size_t id);
 gdk_return GDKreleasesem(int sem_id);
 void GDKreset(int status);
diff --git a/clients/mapiclient/ReadlineTools.c 
b/clients/mapiclient/ReadlineTools.c
--- a/clients/mapiclient/ReadlineTools.c
+++ b/clients/mapiclient/ReadlineTools.c
@@ -88,7 +88,7 @@ sql_tablename_generator(const char *text
 static char *
 sql_command_generator(const char *text, int state)
 {
-   static int idx, len;
+   static size_t idx, len;
const char *name;
 
if (!state) {
@@ -303,20 +303,43 @@ readline_show_error(const char *msg) {
 #define BUFFER_SIZE 1024
 #endif
 
+#ifdef WIN32
+#define unlink _unlink
+#endif
+
 static int
 invoke_editor(int cnt, int key) {
-   char template[] = "/tmp/mclient_temp_XX";
char editor_command[BUFFER_SIZE];
char *read_buff = NULL;
char *editor = NULL;
-   FILE *fp;
+   FILE *fp = NULL;
size_t content_len;
size_t read_bytes, idx;
+#ifdef WIN32
+   char *mytemp;
+   char template[] = "mclient_temp_XX";
+#else
+   int mytemp;
+   char template[] = "/tmp/mclient_temp_XX";
+#endif
 
(void) cnt;
(void) key;
 
-   if ((fp = fdopen(mkstemp(template), "r+")) == NULL) {
+#ifdef WIN32
+   if ((mytemp = 

MonetDB: scoping2 - Merged with default

2020-11-09 Thread Pedro Ferreira
Changeset: bdd9965fd7da for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bdd9965fd7da
Modified Files:
sql/backends/monet5/sql.c
sql/backends/monet5/sql_upgrades.c
sql/common/sql_types.c
sql/include/sql_catalog.h
sql/server/rel_dump.c
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/server/rel_select.c
sql/server/rel_unnest.c
sql/test/analytics/Tests/analytics02.stable.err
sql/test/analytics/Tests/analytics14.stable.out
sql/test/subquery/Tests/correlated.stable.out
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 143022 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -6294,78 +6294,78 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql","any",  "pattern batsql.any(X_1:bit, X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ", "SQLany_cmp;",  ""  ]
 [ "batsql","any",  "pattern batsql.any(X_1:bit, X_2:bat[:bit], 
X_3:bit):bat[:bit] ",   "SQLany_cmp;",  ""  ]
 [ "batsql","any",  "pattern batsql.any(X_1:bit, X_2:bit, 
X_3:bat[:bit]):bat[:bit] ",   "SQLany_cmp;",  ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",  ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:dbl], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",  ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:flt], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",  ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:int], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",  ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:lng], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",  ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:sht], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",  ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:bte] ",   "SQLavginteger;",   ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:int], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:int] ",   "SQLavginteger;",   ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:lng], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:lng] ",   "SQLavginteger;",   ""  ]
-[ "batsql","avg",  "pattern batsql.avg(X_1:bat[:sht], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:sht] ",   "SQLavginteger;",   ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:bte], X_2:bat[:bte], 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ",   "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:bte], X_2:bte, 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:dbl], X_2:bat[:dbl], 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ",   "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:dbl], X_2:dbl, 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:flt], X_2:bat[:flt], 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ",   "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:flt], X_2:flt, 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:int], X_2:bat[:int], 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ",   "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:int], X_2:int, 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:lng], X_2:bat[:lng], 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ",   "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:lng], X_2:lng, 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:sht], X_2:bat[:sht], 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ",   "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bat[:sht], X_2:sht, 
X_3:bat[:lng], X_4:bat[:lng]):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:bte, X_2:bat[:bte], X_3:lng, 
X_4:lng):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:dbl, X_2:bat[:dbl], X_3:lng, 
X_4:lng):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:flt, X_2:bat[:flt], X_3:lng, 
X_4:lng):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:int, X_2:bat[:int], X_3:lng, 
X_4:lng):bat[:dbl] ", "SQLcorr;", ""  ]
-[ "batsql","corr", "pattern batsql.corr(X_1:lng, X_2:bat[:lng], X_3:lng, 
X_4:lng):bat[:dbl] ", 

MonetDB: scoping2 - Merged with default

2020-11-06 Thread Pedro Ferreira
Changeset: 4a5ec936f4c8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4a5ec936f4c8
Modified Files:
sql/server/rel_schema.c
sql/server/rel_updates.c
sql/test/pg_regress/Tests/alter_table.stable.err
sql/test/pg_regress/Tests/int8.stable.err
sql/test/pg_regress/Tests/int8.stable.out
sql/test/pg_regress/Tests/strings.stable.err
Branch: scoping2
Log Message:

Merged with default


diffs (257 lines):

diff --git a/clients/odbc/driver/CMakeLists.txt 
b/clients/odbc/driver/CMakeLists.txt
--- a/clients/odbc/driver/CMakeLists.txt
+++ b/clients/odbc/driver/CMakeLists.txt
@@ -103,7 +103,7 @@ target_sources(MonetODBC
   SQLTables.c
   SQLTransact.c
   driver.rc
-  ODBC.syms)
+  ODBC.def)
 
 target_include_directories(MonetODBC
   PRIVATE
diff --git a/clients/odbc/driver/ODBC.syms b/clients/odbc/driver/ODBC.def
rename from clients/odbc/driver/ODBC.syms
rename to clients/odbc/driver/ODBC.def
--- a/clients/odbc/driver/ODBC.syms
+++ b/clients/odbc/driver/ODBC.def
@@ -1,3 +1,4 @@
+EXPORTS
 DllMain
 SQLAllocConnect
 SQLAllocEnv
diff --git a/clients/odbc/driver/driver.rc b/clients/odbc/driver/driver.rc
--- a/clients/odbc/driver/driver.rc
+++ b/clients/odbc/driver/driver.rc
@@ -22,10 +22,10 @@ BEGIN
   VALUE "CompanyName", "MonetDB B.V.\0"
   VALUE "FileDescription", "MonetDB ODBC Driver DLL\0"
   VALUE "FileVersion", sversion(11,40,0)
-  VALUE "InternalName", "libMonetODBC\0"
+  VALUE "InternalName", "MonetODBC\0"
   VALUE "LegalCopyright", "Copyright (c) MonetDB B.V. 2008-2020\0"
   VALUE "LegalTrademarks", "\0"
-  VALUE "OriginalFilename", "libMonetODBC.dll\0"
+  VALUE "OriginalFilename", "MonetODBC.dll\0"
   VALUE "PrivateBuild", "\0"
   VALUE "ProductName", "MonetDB SQL Server\0"
   VALUE "ProductVersion", sversion(11,40,0)
diff --git a/clients/odbc/winsetup/CMakeLists.txt 
b/clients/odbc/winsetup/CMakeLists.txt
--- a/clients/odbc/winsetup/CMakeLists.txt
+++ b/clients/odbc/winsetup/CMakeLists.txt
@@ -13,7 +13,7 @@ target_sources(MonetODBCs
   PRIVATE
   setup.c
   setup.rc
-  setup.syms
+  setup.def
   resource.h)
 
 target_include_directories(MonetODBCs
diff --git a/clients/odbc/winsetup/install.c b/clients/odbc/winsetup/install.c
--- a/clients/odbc/winsetup/install.c
+++ b/clients/odbc/winsetup/install.c
@@ -20,8 +20,8 @@
 
 static char *DriverName = "MonetDB ODBC Driver";
 static char *DataSourceName = "MonetDB";
-static char *DriverDLL = "libMonetODBC" DLL;
-static char *DriverDLLs = "libMonetODBCs" DLL;
+static char *DriverDLL = "MonetODBC" DLL;
+static char *DriverDLLs = "MonetODBCs" DLL;
 
 /* General error handler for installer functions */
 
diff --git a/clients/odbc/winsetup/setup.syms b/clients/odbc/winsetup/setup.def
rename from clients/odbc/winsetup/setup.syms
rename to clients/odbc/winsetup/setup.def
--- a/clients/odbc/winsetup/setup.syms
+++ b/clients/odbc/winsetup/setup.def
@@ -1,3 +1,4 @@
+EXPORTS
 DllMain
 ConfigDSN
 ConfigDriver
diff --git a/clients/odbc/winsetup/setup.rc b/clients/odbc/winsetup/setup.rc
--- a/clients/odbc/winsetup/setup.rc
+++ b/clients/odbc/winsetup/setup.rc
@@ -84,9 +84,9 @@ BEGIN
 VALUE "CompanyName", "MonetDB B.V."
 VALUE "FileDescription", "MonetDB ODBC Setup DLL"
 VALUE "FileVersion", sversion(11,40,0)
-VALUE "InternalName", "libMonetODBCs.dll"
+VALUE "InternalName", "MonetODBCs.dll"
 VALUE "LegalCopyright", "Copyright (c) MonetDB B.V. 2008-2020"
-VALUE "OriginalFilename", "libMonetODBCs.dll"
+VALUE "OriginalFilename", "MonetODBCs.dll"
 VALUE "ProductName", "MonetDB SQL Server"
 VALUE "ProductVersion", sversion(11,40,0)
 END
diff --git a/sql/test/pg_regress/Tests/int8.stable.err 
b/sql/test/pg_regress/Tests/int8.stable.err
--- a/sql/test/pg_regress/Tests/int8.stable.err
+++ b/sql/test/pg_regress/Tests/int8.stable.err
@@ -64,74 +64,74 @@ CODE  = 22003
 MAPI  = (monetdb) /var/tmp/mtest-3604/.s.monetdb.35433
 QUERY = SELECT '' AS to_char_1, to_char(q1, '9G999G999G999G999G999'), 
to_char(q2, '9,999,999,999,999,999') 
FROM INT8_TBL;
-ERROR = !SELECT: no such binary operator 'to_char(bigint,char)'
+ERROR = !SELECT: no such binary operator 'to_char'(bigint,char)
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-3604/.s.monetdb.35433
 QUERY = SELECT '' AS to_char_2, to_char(q1, '9G999G999G999G999G999D999G999'), 
to_char(q2, '9,999,999,999,999,999.999,999') 
FROM INT8_TBL;  
-ERROR = !SELECT: no such binary operator 'to_char(bigint,char)'
+ERROR = !SELECT: no such binary operator 'to_char'(bigint,char)
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-3604/.s.monetdb.35433
 QUERY = SELECT '' AS to_char_3, to_char( (q1 * -1), 'PR'), 
to_char( (q2 * -1), '.999PR') 
FROM INT8_TBL;
-ERROR = !SELECT: no such binary operator 'to_char(bigint,char)'
+ERROR = !SELECT: no such 

MonetDB: scoping2 - Merged with default

2020-11-04 Thread Pedro Ferreira
Changeset: 6ba95b007411 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6ba95b007411
Modified Files:
sql/server/sql_mvc.h
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 2443 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -8771,6 +8771,7 @@ stdout of test 'MAL-signatures` in direc
 [ "inspect",   "getDefinition","pattern inspect.getDefinition(X_1:str, 
X_2:str):bat[:str] ",   "INSPECTgetDefinition;",""  ]
 [ "inspect",   "getEnvironment",   "command inspect.getEnvironment() 
(X_0:bat[:str], X_1:bat[:str]) ", "INSPECTgetEnvironment;",   ""  ]
 [ "inspect",   "getEnvironment",   "command 
inspect.getEnvironment(X_1:str):str ", "INSPECTgetEnvironmentKey;",""  ]
+[ "inspect",   "getExistence", "pattern inspect.getExistence(X_1:str, 
X_2:str):bit ",  "INSPECTgetExistence;", ""  ]
 [ "inspect",   "getFunction",  "pattern inspect.getFunction():bat[:str] ", 
"INSPECTgetAllFunctions;",  ""  ]
 [ "inspect",   "getKind",  "pattern inspect.getKind():bat[:str] ", 
"INSPECTgetkind;",  ""  ]
 [ "inspect",   "getModule","pattern inspect.getModule():bat[:str] ",   
"INSPECTgetAllModules;",""  ]
@@ -9244,11 +9245,12 @@ stdout of test 'MAL-signatures` in direc
 [ "remote","exec", "pattern remote.exec(X_1:str, X_2:str, X_3:str, 
X_4:ptr, X_5:str...):void ","RMTexec;", ""  ]
 [ "remote","exec", "pattern remote.exec(X_1:str, X_2:str, X_3:str, 
X_4:str...):str ",  "RMTexec;", ""  ]
 [ "remote","exec", "pattern remote.exec(X_1:str, X_2:str, X_3:str, 
X_4:str...):str... ",   "RMTexec;", ""  ]
+[ "remote","exec", "pattern remote.exec(X_1:str, X_2:str, X_3:str, 
X_4:str...):void ", "RMTexec;", ""  ]
 [ "remote","get",  "pattern remote.get(X_1:str, X_2:str):any ",
"RMTget;",  ""  ]
 [ "remote","isalive",  "command remote.isalive(X_1:str):int ", 
"RMTisalive;",  ""  ]
 [ "remote","prelude",  "command remote.prelude():void ",   
"RMTprelude;",  ""  ]
 [ "remote","put",  "pattern remote.put(X_1:str, X_2:any):str ",
"RMTput;",  ""  ]
-[ "remote","register", "pattern remote.register(X_1:str, X_2:str, 
X_3:str):void ", "RMTregister;", ""  ]
+[ "remote","register", "pattern remote.register(X_1:str, X_2:str, 
X_3:str):str ",  "RMTregister;", ""  ]
 [ "remote","register_supervisor",  "command 
remote.register_supervisor(X_1:str, X_2:str):int ",
"RMTregisterSupervisor;",   ""  ]
 [ "remote","resolve",  "command remote.resolve(X_1:str):bat[:str] ",   
"RMTresolve;",  ""  ]
 [ "sample","subuniform",   "pattern sample.subuniform(X_1:bat[:any], 
X_2:dbl):bat[:oid] ", "SAMPLEuniform;",   ""  ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -12067,6 +12067,7 @@ stdout of test 'MAL-signatures` in direc
 [ "inspect",   "getDefinition","pattern inspect.getDefinition(X_1:str, 
X_2:str):bat[:str] ",   "INSPECTgetDefinition;",""  ]
 [ "inspect",   "getEnvironment",   "command inspect.getEnvironment() 
(X_0:bat[:str], X_1:bat[:str]) ", "INSPECTgetEnvironment;",   ""  ]
 [ "inspect",   "getEnvironment",   "command 
inspect.getEnvironment(X_1:str):str ", "INSPECTgetEnvironmentKey;",""  ]
+[ "inspect",   "getExistence", "pattern inspect.getExistence(X_1:str, 
X_2:str):bit ",  "INSPECTgetExistence;", ""  ]
 [ "inspect",   "getFunction",  "pattern inspect.getFunction():bat[:str] ", 
"INSPECTgetAllFunctions;",  ""  ]
 [ "inspect",   "getKind",  "pattern inspect.getKind():bat[:str] ", 
"INSPECTgetkind;",  ""  ]
 [ "inspect",   "getModule","pattern inspect.getModule():bat[:str] ",   
"INSPECTgetAllModules;",""  ]
@@ -12546,11 +12547,12 @@ stdout of test 'MAL-signatures` in direc
 [ "remote","exec", "pattern remote.exec(X_1:str, X_2:str, X_3:str, 
X_4:ptr, X_5:str...):void ","RMTexec;", ""  ]
 [ "remote","exec", "pattern remote.exec(X_1:str, X_2:str, X_3:str, 
X_4:str...):str ",  "RMTexec;", ""  ]
 [ "remote","exec", "pattern remote.exec(X_1:str, X_2:str, X_3:str, 
X_4:str...):str... ",   "RMTexec;", ""  ]
+[ "remote","exec", "pattern remote.exec(X_1:str, X_2:str, X_3:str, 
X_4:str...):void ", "RMTexec;", ""  ]
 [ "remote","get",  "pattern remote.get(X_1:str, X_2:str):any ",
"RMTget;",  ""  ]
 [ "remote","isalive",  "command remote.isalive(X_1:str):int ", 
"RMTisalive;",  ""  ]
 [ "remote","prelude",  "command 

MonetDB: scoping2 - Merged with default

2020-10-30 Thread Pedro Ferreira
Changeset: 8bee0a614f83 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8bee0a614f83
Modified Files:
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_updates.c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 143694 to 300 lines):

diff --git a/.editorconfig b/.editorconfig
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,9 +1,11 @@
+root = true
+
 # Unix-style newlines with a newline ending every file
 [*]
 end_of_line = lf
 insert_final_newline = true
 
-[*.{c,h}]
+[*.{c,h}{,.in}]
 indent_style = tab
 tab_width = 4
 indent_size = tab
@@ -11,12 +13,13 @@ trim_trailing_whitespace = true
 charset = utf-8
 max_line_length = 120
 
-[*.py]
+[*.py{,.in}]
 indent_style = space
 indent_size = 4
 trim_trailing_whitespace = true
 charset = utf-8
 
-[gdk/*.{c,h}]
-tab_width = 8
-max_line_length = 72
+[{CMakeLists.txt,*.cmake}{,.in}]
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace = true
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -140,6 +140,13 @@ BuildRequires: pkgconfig(openssl)
 BuildRequires: pkgconfig(libpcre) >= 4.5
 %endif
 BuildRequires: pkgconfig(zlib)
+%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} > 7
+# not on RHEL 7
+BuildRequires: pkgconfig(liblz4) >= 1.8
+%global LZ4 ON
+%else
+%global LZ4 OFF
+%endif
 %if %{with py3integration}
 BuildRequires: pkgconfig(python3) >= 3.5
 BuildRequires: python3-numpy
@@ -149,8 +156,6 @@ BuildRequires: pkgconfig(libR)
 %endif
 # if we were to compile with cmocka support (-DWITH_CMOCKA=ON):
 # BuildRequires: pkgconfig(cmocka)
-# if we were to compile with lz4 support (-DWITH_LZ4=ON):
-# BuildRequires: pkgconfig(liblz4)
 # if we were to compile with NetCDF support (-DNETCDF=ON):
 # BuildRequires: pkgconfig(netcdf)
 # if we were to compile with proj support (-DWITH_PROJ=ON):
@@ -801,7 +806,7 @@ export CFLAGS
-DWITH_CMOCKA=OFF \
-DWITH_CRYPTO=ON \
-DWITH_CURL=ON \
-   -DWITH_LZ4=OFF \
+   -DWITH_LZ4=%{LZ4} \
-DWITH_LZMA=ON \
-DWITH_PCRE=ON \
-DWITH_PROJ=OFF \
diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py
--- a/NT/mkodbcwxs.py
+++ b/NT/mkodbcwxs.py
@@ -77,8 +77,8 @@ def main():
 print(r'')
 id = comp(features, id, 14,
   [r'bin\mapi.dll', # r'lib\mapi.pdb',
-   r'bin\MonetODBC.dll', # r'lib\MonetODBC.pdb',
-   r'bin\MonetODBCs.dll', # r'lib\MonetODBCs.pdb',
+   r'lib\MonetODBC.dll', # r'lib\MonetODBC.pdb',
+   r'lib\MonetODBCs.dll', # r'lib\MonetODBCs.pdb',
r'bin\stream.dll', # r'lib\stream.pdb',
vcpkg.format(r'bin\libiconv.dll'),
vcpkg.format(r'bin\bz2.dll'),
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1315,7 +1315,7 @@ describe_table(Mapi mid, const char *sch
/* the table is a real table */
mnstr_printf(toConsole, "CREATE %sTABLE ",
type == 3 ? "MERGE " :
-   type == 4 ? "STREAM " :
+   /*type == 4 ? "STREAM " : */
type == 5 ? "REMOTE " :
type == 6 ? "REPLICA " :
"");
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -208,11 +208,6 @@ SQLhelp sqlhelp1[] = {
 "[MINVALUE intval | NO MINVALUE] [MAXVALUE intval | NO MAXVALUE] 
[CACHE intval] [[NO] CYCLE]",
 "seq_int_datatype,intval",
 "See also 
https://www.monetdb.org/Documentation/Manuals/SQLreference/SerialTypes"},
-   {"CREATE STREAM TABLE",
-"Temporary table, locked during updates/ continues query processing",
-"CREATE STREAM TABLE [ IF NOT EXISTS ] qname table_source\n",
-"table_source",
-NULL},
{"CREATE TABLE",
 "Create a new table",
 "CREATE TABLE [ IF NOT EXISTS ] qname table_source [STORAGE ident 
string]\n"
diff --git a/clients/odbc/driver/CMakeLists.txt 
b/clients/odbc/driver/CMakeLists.txt
--- a/clients/odbc/driver/CMakeLists.txt
+++ b/clients/odbc/driver/CMakeLists.txt
@@ -7,7 +7,7 @@
 #]]
 
 add_library(MonetODBC
-  SHARED)
+  MODULE)
 
 target_sources(MonetODBC
   PRIVATE
@@ -114,7 +114,7 @@ target_include_directories(MonetODBC
   $)
 
 target_compile_definitions(MonetODBC
-  PRIVATE 
+  PRIVATE
   LIBMONETODBCS)
 
 target_link_libraries(MonetODBC
diff --git a/clients/odbc/setup/CMakeLists.txt 
b/clients/odbc/setup/CMakeLists.txt
--- a/clients/odbc/setup/CMakeLists.txt
+++ b/clients/odbc/setup/CMakeLists.txt
@@ -7,11 +7,11 @@
 #]]
 
 add_library(MonetODBCs
-  SHARED)
+  MODULE)
 
 target_sources(MonetODBCs
   PRIVATE
-  drvcfg.c 
+  drvcfg.c
   drvcfg.h)
 
 target_include_directories(MonetODBCs
@@ -21,8 +21,8 @@ target_include_directories(MonetODBCs
   $

MonetDB: scoping2 - Merged with default

2020-10-20 Thread Pedro Ferreira
Changeset: e131c875ab2c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e131c875ab2c
Branch: scoping2
Log Message:

Merged with default


diffs (truncated from 19319 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -784,8 +784,6 @@ export CFLAGS
 %endif
 %cmake3 \
-DRELEASE_VERSION=ON \
-   -DRUNDIR=%{_rundir}/monetdb \
-   -DLOGDIR=%{_localstatedir}/log/monetdb \
-DASSERT=OFF \
-DCINTEGRATION=%{?with_cintegration:ON}%{!?with_cintegration:OFF} \
-DFITS=%{?with_fits:ON}%{!?with_fits:OFF} \
@@ -817,7 +815,10 @@ export CFLAGS
 %cmake3_build
 
 %install
+mkdir -p "%{buildroot}/usr"
+for d in etc var; do mkdir "%{buildroot}/$d"; ln -s ../$d 
"%{buildroot}/usr/$d"; done
 %cmake3_install
+rm "%{buildroot}/usr/var" "%{buildroot}/usr/etc"
 
 # move file to correct location
 %if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
diff --git a/buildtools/conf/monetdbd.conf.in b/buildtools/conf/monetdbd.conf.in
--- a/buildtools/conf/monetdbd.conf.in
+++ b/buildtools/conf/monetdbd.conf.in
@@ -1,3 +1,3 @@
 # this file is for systemd
 # monetdbd needs a directory in /run that is owned by monetdb:monetdb
-d @RUNDIR@ 0775 monetdb monetdb -
+d @CMAKE_INSTALL_FULL_RUNSTATEDIR@/monetdb 0775 monetdb monetdb -
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -1332,42 +1332,10 @@ stdout of test 'MAL-signatures` in direc
 [ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:flt], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:int] ", "CMDbatMULsignal;", ""  ]
 [ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:flt], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:lng] ", "CMDbatMULsignal;", ""  ]
 [ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:flt], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:sht] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:bte] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:bte] ", "CMDbatMULsignal;", ""  ]
 [ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:int] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:int] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:int] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:lng] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:lng] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:sht] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:sht] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:bte] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:bte] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:int] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:int] ", "CMDbatMULsignal;", ""  ]
 [ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:lng] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:lng] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:lng] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:sht] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:sht] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*","pattern batcalc.*(X_1:bat[:bte], X_2:bat[:sht], 
X_3:bat[:oid], X_4:bat[:oid]):bat[:bte] ", "CMDbatMULsignal;", ""  ]
-[ "batcalc",   "*",