MonetDB: compactprofiler - Minor changes in eventparser and stet...

2019-10-31 Thread Panagiotis Koutsourakis
Changeset: c268a1159906 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c268a1159906
Modified Files:
clients/mapiclient/eventparser.c
clients/mapiclient/stethoscope.c
Branch: compactprofiler
Log Message:

Minor changes in eventparser and stethoscope


diffs (279 lines):

diff --git a/clients/mapiclient/eventparser.c b/clients/mapiclient/eventparser.c
--- a/clients/mapiclient/eventparser.c
+++ b/clients/mapiclient/eventparser.c
@@ -81,11 +81,11 @@ argparser(char *txt, EventRecord *ev){
(void) ev;
(void) key;
/* First determine the number arguments to deal with */
-   while( *c){
+   while(*c){
skipto(c, '\t');
if(*c){
c++;
-   if( *c == '}')
+   if(*c == '}')
cnt ++;
}
}
@@ -98,10 +98,10 @@ argparser(char *txt, EventRecord *ev){
 
/* parse the event argument structures, using the \t field separator */
c=  txt + 1;
-   while( *c){
-   if( *c == '{' || *c == '[')
+   while(*c){
+   if(*c == '{' || *c == '[')
c++;
-   if( *c == '}' || *c == ']')
+   if(*c == '}' || *c == ']')
break;
 
skipto(c, '"');
@@ -116,37 +116,37 @@ argparser(char *txt, EventRecord *ev){
if(*c){ --c; *c = 0; c++;}
 
/* These components should be the first */
-   if( strstr(key,"ret")) {
+   if(strstr(key,"ret")) {
arg = atoi(val);
ev->args[arg].kind = MDB_RET;
continue;
}
-   if( strstr(key,"arg")) {
+   if(strstr(key,"arg")) {
arg = atoi(val);
ev->args[arg].kind = MDB_ARG;
continue;
}
assert(arg> -1 && arg < ev->maxarg);
-   if( strstr(key,"bid")) { ev->args[arg].bid = atoi(val); 
continue;}
-   if( strstr(key,"alias")) { ev->args[arg].alias = getstr(val); 
continue;}
-   if( strstr(key,"name")) { ev->args[arg].name = getstr(val); 
continue;}
-   if( strstr(key,"type")) { ev->args[arg].type = 
getstr(val);continue;}
-   if( strstr(key,"view")) { ev->args[arg].view = getstr(val); 
continue;}
-   if( strstr(key,"parent")) { ev->args[arg].parent = getstr(val); 
continue;}
-   if( strstr(key,"persistence")) { ev->args[arg].persistence = 
getstr(val); continue;}
-   if( strstr(key,"file")) { ev->args[arg].file = getstr(val); 
continue;}
-   if( strstr(key,"seqbase")) { ev->args[arg].seqbase = 
getstr(val); continue;}
-   if( strstr(key,"sorted")) { ev->args[arg].sorted = getstr(val); 
continue;}
-   if( strstr(key,"revsorted")) { ev->args[arg].revsorted = 
getstr(val); continue;}
-   if( strstr(key,"nonil")) { ev->args[arg].nonil = getstr(val); 
continue;}
-   if( strstr(key,"nil")) { ev->args[arg].nil = getstr(val); 
continue;}
-   if( strstr(key,"key")) { ev->args[arg].key = getstr(val); 
continue;}
-   if( strstr(key,"unique")) { ev->args[arg].unique = getstr(val); 
continue;}
-   if( strstr(key,"count")) { ev->args[arg].count = atol(val); 
continue;}
-   if( strstr(key,"size")) { ev->args[arg].size = getstr(val); 
continue;}
-   if( strstr(key,"value")) { ev->args[arg].value = getstr(val); 
continue;}
-   if( strstr(key,"debug")) { ev->args[arg].debug = getstr(val); 
continue;}
-   if( strstr(key,"const")) { ev->args[arg].constant = atoi(val); 
continue;}
+   if(strstr(key,"bid")) { ev->args[arg].bid = atoi(val); 
continue;}
+   if(strstr(key,"alias")) { ev->args[arg].alias = getstr(val); 
continue;}
+   if(strstr(key,"name")) { ev->args[arg].name = getstr(val); 
continue;}
+   if(strstr(key,"type")) { ev->args[arg].type = 
getstr(val);continue;}
+   if(strstr(key,"view")) { ev->args[arg].view = getstr(val); 
continue;}
+   if(strstr(key,"parent")) { ev->args[arg].parent = getstr(val); 
continue;}
+   if(strstr(key,"persistence")) { ev->args[arg].persistence = 
getstr(val); continue;}
+   if(strstr(key,"file")) { ev->args[arg].file = getstr(val); 
continue;}
+   if(strstr(key,"seqbase")) { ev->args[arg].seqbase = 
getstr(val); continue;}
+   if(strstr(key,"sorted")) { ev->args[arg].sorted = getstr(val); 
continue;}
+   if(strstr(key,"revsorted")) { ev->args[arg].revsorted = 
getstr(val); continue;}
+   if(strstr(key,"nonil")) { ev->args[arg].nonil = getstr(val); 
continue;}
+   if(strstr(key,"nil")) { ev->args[arg].nil = 

MonetDB: compactprofiler - Make sure we produce valid JSON objects

2019-10-31 Thread Panagiotis Koutsourakis
Changeset: 54085c11f338 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=54085c11f338
Modified Files:
monetdb5/mal/mal_profiler.c
Branch: compactprofiler
Log Message:

Make sure we produce valid JSON objects


diffs (truncated from 419 to 300 lines):

diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -36,12 +36,9 @@ static str myname = 0;   // avoid tracing 
 /* The JSON rendering can be either using '\n' separators between
  * each key:value pair or as a single line.
  * The current stethoscope implementation requires the first option and
- * also the term rendering PRET to be set to ''
+ * also the term rendering  to be set to ''
  */
 
-#define PRETTIFY   "\n"
-//#define PRETTIFY
-
 /* When the MAL block contains a BARRIER block we may end up with tons
  * of profiler events. To avoid this, we stop emitting the events
  * when we reached the HIGHWATERMARK. Leaving a message in the log. */
@@ -132,7 +129,8 @@ renderProfilerEvent(Client cntxt, MalBlk
 {
char logbuffer[LOGLEN], *logbase;
size_t loglen;
-   str stmt, c;
+   str c;
+   str stmt;
str stmtq;
lng usec;
uint64_t microseconds;
@@ -141,8 +139,8 @@ renderProfilerEvent(Client cntxt, MalBlk
 * they may appear when BARRIER blocks are executed
 * The default parameter should be sufficient for most practical cases.
*/
-   if( !start && pci->calls > HIGHWATERMARK){
-   if( pci->calls == 1 || pci->calls == 10 || pci->calls 
== 100 || pci->calls == 1000)
+   if(!start && pci->calls > HIGHWATERMARK){
+   if(pci->calls == 1 || pci->calls == 10 || pci->calls == 
100 || pci->calls == 1000)
fprintf(stderr, "#Profiler too many calls %d\n", 
pci->calls);
return;
}
@@ -150,38 +148,38 @@ renderProfilerEvent(Client cntxt, MalBlk
 /* The stream of events can be complete read by the DBA,
  * all other users can only see events assigned to their account
  */
-   if( malprofileruser!= MAL_ADMIN && malprofileruser != cntxt->user)
+   if(malprofileruser!= MAL_ADMIN && malprofileruser != cntxt->user)
return;
 
usec= pci->clock;
microseconds = (uint64_t)usec - ((uint64_t)startup_time.tv_sec*100 
- (uint64_t)startup_time.tv_usec);
/* make profile event tuple  */
lognew();
-   logadd("{"PRETTIFY); // fill in later with the event counter
+   logadd("{"); // fill in later with the event counter
/* TODO: This could probably be optimized somehow to avoid the
 * function call to mercurial_revision().
 */
-   logadd("\"version\":\""VERSION" (hg id: %s)\","PRETTIFY, 
mercurial_revision());
-   logadd("\"user\":"OIDFMT","PRETTIFY, cntxt->user);
-   logadd("\"clk\":"LLFMT","PRETTIFY, usec);
-   logadd("\"mclk\":%"PRIu64","PRETTIFY, microseconds);
-   logadd("\"thread\":%d,"PRETTIFY, THRgettid());
-   logadd("\"function\":\"%s.%s\","PRETTIFY, getModuleId(getInstrPtr(mb, 
0)), getFunctionId(getInstrPtr(mb, 0)));
-   logadd("\"pc\":%d,"PRETTIFY, mb?getPC(mb,pci):0);
-   logadd("\"tag\":"OIDFMT","PRETTIFY, stk?stk->tag:0);
-   logadd("\"module\":\"%s\","PRETTIFY, pci->modname ? pci->modname : "" );
-   logadd("\"instruction\":\"%s\","PRETTIFY, pci->fcnname ? pci->fcnname : 
"");
+   logadd("\"version\":\""VERSION" (hg id: %s)\",", mercurial_revision());
+   logadd("\"user\":"OIDFMT",", cntxt->user);
+   logadd("\"clk\":"LLFMT",", usec);
+   logadd("\"mclk\":%"PRIu64",", microseconds);
+   logadd("\"thread\":%d,", THRgettid());
+   logadd("\"function\":\"%s.%s\",", getModuleId(getInstrPtr(mb, 0)), 
getFunctionId(getInstrPtr(mb, 0)));
+   logadd("\"pc\":%d,", mb?getPC(mb,pci):0);
+   logadd("\"tag\":"OIDFMT",", stk?stk->tag:0);
+   logadd("\"module\":\"%s\",", pci->modname ? pci->modname : "");
+   logadd("\"instruction\":\"%s\",", pci->fcnname ? pci->fcnname : "");
 if (!GDKinmemory()) {
 char *uuid;
str c;
if ((c = msab_getUUID()) == NULL) {
-   logadd("\"session\":\"%s\","PRETTIFY, uuid);
+   logadd("\"session\":\"%s\",", uuid);
free(uuid);
} else
free(c);
 }
-   logadd("\"state\":\"%s\","PRETTIFY, start?"start":"done");
-   logadd("\"usec\":"LLFMT","PRETTIFY, pci->ticks);
+   logadd("\"state\":\"%s\",", start?"start":"done");
+   logadd("\"usec\":"LLFMT",", pci->ticks);

/* generate actual call statement */
stmt = instruction2str(mb, stk, pci, LIST_MAL_ALL);
@@ -191,7 +189,7 @@ renderProfilerEvent(Client cntxt, MalBlk
 
while (*c && isspace((unsigned char)*c))
c++;
-

MonetDB: Nov2019 - Don't stack error codes

2019-10-31 Thread Pedro Ferreira
Changeset: b13ea45fbd3e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b13ea45fbd3e
Modified Files:
sql/backends/monet5/sql.mal
sql/server/sql_scan.c
sql/test/BugTracker-2013/Tests/pivot.Bug-3339.stable.err
sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.err
sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out
sql/test/copy/Tests/nonutf8.stable.err
sql/test/subquery/Tests/correlated.stable.err
Branch: Nov2019
Log Message:

Don't stack error codes


diffs (138 lines):

diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal
--- a/sql/backends/monet5/sql.mal
+++ b/sql/backends/monet5/sql.mal
@@ -369,7 +369,7 @@ inline function sql.subzero_or_one( b:ba
c01 := calc.not(c0);
c1 := calc.>(m,1:lng);
c11 := calc.and(c01,c1);
-   sql.assert(c11, "21000!zero_or_one: cardinality violation, scalar 
expression expected");
+   sql.assert(c11, "zero_or_one: cardinality violation, scalar expression 
expected");
return zero_or_one := b;
 end sql.subzero_or_one;
 
@@ -433,7 +433,7 @@ inline function sql.all( b:bat[:any_1], 
c01 := calc.not(c0);
c1 := calc.>(m,1:lng);
c11 := calc.and(c01,c1);
-   sql.assert(c11, "21000!zero_or_one: cardinality violation, scalar 
expression expected ");
+   sql.assert(c11, "zero_or_one: cardinality violation, scalar expression 
expected ");
return all := b;
 end sql.all;
 
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -753,7 +753,7 @@ scanner_string(mvc *c, int quote, bool e
cur = scanner_getc(lc);
}
}
-   (void) sql_error(c, 2, SQLSTATE(42000) "%s", lc->errstr ? lc->errstr : 
"unexpected end of input");
+   (void) sql_error(c, 2, "%s", lc->errstr ? lc->errstr : SQLSTATE(42000) 
"unexpected end of input");
return LEX_ERROR;
 }
 
diff --git a/sql/test/BugTracker-2013/Tests/pivot.Bug-3339.stable.err 
b/sql/test/BugTracker-2013/Tests/pivot.Bug-3339.stable.err
--- a/sql/test/BugTracker-2013/Tests/pivot.Bug-3339.stable.err
+++ b/sql/test/BugTracker-2013/Tests/pivot.Bug-3339.stable.err
@@ -31,7 +31,7 @@ stderr of test 'pivot.Bug-3339` in direc
 MAPI  = (monetdb) /var/tmp/mtest-16107/.s.monetdb.31536
 QUERY = SELECT (SELECT * FROM groupElements(pivot.x))
 FROM (SELECT * FROM tmp) as pivot;
-ERROR = !21000!zero_or_one: cardinality violation, scalar expression expected
+ERROR = !zero_or_one: cardinality violation, scalar expression expected
 CODE  = M0M29
 
 # 09:16:37 >  
diff --git a/sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.err 
b/sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.err
--- a/sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.err
+++ b/sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.err
@@ -18,7 +18,7 @@ ERROR = !syntax error, unexpected LIMIT,
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = SELECT date, (SELECT date from test_subquery where date > 
t1892413a.date) as dtNext from test_subquery t1892413a;
-ERROR = !21000!zero_or_one: cardinality violation, scalar expression expected
+ERROR = !zero_or_one: cardinality violation, scalar expression expected
 CODE  = M0M29
 
 # 10:24:35 >  
diff --git a/sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out 
b/sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out
--- a/sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out
+++ b/sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out
@@ -33,7 +33,7 @@ stdout of test 'bug_in_selection.SF-1892
 [ 19260102 ]
 [ 19260104 ]
 #SELECT date, (SELECT max(date) from test_subquery where date > 
t1892413a.date) as dtNext from test_subquery t1892413a;
-% .t1892413a,  .L6 # table_name
+% .t1892413a,  .L3 # table_name
 % date,dtnext # name
 % int, int # type
 % 8,   8 # length
diff --git a/sql/test/copy/Tests/nonutf8.stable.err 
b/sql/test/copy/Tests/nonutf8.stable.err
--- a/sql/test/copy/Tests/nonutf8.stable.err
+++ b/sql/test/copy/Tests/nonutf8.stable.err
@@ -31,19 +31,19 @@ stderr of test 'nonutf8` in directory 's
 # 15:39:57 >  
 
 MAPI  = (monetdb) /var/tmp/mtest-2478/.s.monetdb.31776
-QUERY = insert into nonutf8 values ('zwaar lange golf piek -dal ±10cm vak5');
+QUERY = insert into nonutf8 values ('zwaar lange golf piek -dal �10cm vak5');
 
 copy 2 records into nonutf8 from stdin;
-zwaar lange golf piek -dal ±10cm vak5
-±17 %
-ERROR = !42000!invalid start of UTF-8 sequence
+zwaar lange golf piek -dal �10cm vak5
+�17 %
+ERROR = !invalid start of UTF-8 sequence
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
-QUERY = insert into nonutf8 values ('zwaar lange golf piek -dal ±10cm vak5');
+QUERY = insert into nonutf8 values ('zwaar lange golf piek 

MonetDB: Nov2019 - Fixed warning on Python 3.7.5

2019-10-31 Thread Pedro Ferreira
Changeset: f63478725e7e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f63478725e7e
Modified Files:
testing/malcheck.py
Branch: Nov2019
Log Message:

Fixed warning on Python 3.7.5


diffs (12 lines):

diff --git a/testing/malcheck.py b/testing/malcheck.py
--- a/testing/malcheck.py
+++ b/testing/malcheck.py
@@ -23,7 +23,7 @@ atmreg = re.compile(r'\batom\s+(?P
 treg = re.compile(r':\s*(bat\[[^]]*\]|[a-zA-Z_][a-zA-Z_0-9]*)')
 
 expre = re.compile(r'\b[a-zA-Z_0-9]+export\s+(?P[^;]*;)', re.MULTILINE)
-nmere = re.compile(r'\b(?P[a-zA-Z_][a-zA-Z_0-9]*)\s*[[(;]')
+nmere = re.compile(r'\b(?P[a-zA-Z_][a-zA-Z_0-9]*)\s*[\[\(;]')
 
 freg = 
re.compile(r'(?P(?:const\s+)?\w+(?:\s*\*)*)\s*\b(?P\w+)\((?P[^()]*)\)')
 creg = re.compile(r'\bconst\b')
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: compactprofiler - Merge with default

2019-10-31 Thread Martin Kersten
Changeset: 3c451754bfb2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3c451754bfb2
Added Files:
sql/test/miscellaneous/Tests/select_groupby.sql
sql/test/miscellaneous/Tests/select_groupby.stable.err
sql/test/miscellaneous/Tests/select_groupby.stable.out
Removed Files:
sql/test/miscellaneous/README
sql/test/miscellaneous/Tests/now.sql
sql/test/miscellaneous/Tests/now.stable.err
Modified Files:
NT/monetdb_config.h.in
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
clients/mapiclient/Tests/stethoscope--help.stable.err
clients/mapiclient/dump.c
clients/mapiclient/mhelp.c
clients/mapiclient/msqldump.c
common/utils/mutils.c
configure.ag
gdk/gdk_posix.c
gdk/gdk_private.h
gdk/gdk_system.c
gdk/gdk_system.h
gdk/gdk_utils.c
monetdb5/mal/mal_builder.c
monetdb5/mal/mal_builder.h
monetdb5/mal/mal_client.c
monetdb5/mal/mal_client.h
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_module.c
monetdb5/mal/mal_profiler.c
monetdb5/modules/atoms/mtime.c
monetdb5/modules/mal/Tests/inspect05.stable.out.int128
monetdb5/modules/mal/profiler.c
monetdb5/modules/mal/profiler.mal
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_upgrades.c
sql/scripts/Makefile.ag
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/server/rel_psm.c
sql/server/rel_rel.c
sql/server/rel_schema.c
sql/server/rel_updates.c
sql/server/sql_parser.y

sql/test/BugDay_2005-12-19_2.9.3/Tests/default_next_value_for_non_ex_seq.SF.1246631.stable.err

sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.sql
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.out

sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.sql

sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err
sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.err
sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.out
sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out

sql/test/BugTracker-2019/Tests/disallow_duplicate_column_aliases.Bug-6723.stable.out
sql/test/BugTracker-2019/Tests/prepare-types.Bug-6724.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
sql/test/Tests/comment-dump.stable.out
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128

sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/miscellaneous/Tests/All
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
testing/Mtest.py.in
tools/merovingian/daemon/merovingian.c
Branch: compactprofiler
Log Message:

Merge with default


diffs (truncated from 3442 to 

MonetDB: default - Approve 32 bit output.

2019-10-31 Thread Sjoerd Mullender
Changeset: 62eb70e309c7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=62eb70e309c7
Modified Files:
sql/test/emptydb/Tests/check.stable.out.32bit
Branch: default
Log Message:

Approve 32 bit output.


diffs (198 lines):

diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit 
b/sql/test/emptydb/Tests/check.stable.out.32bit
--- a/sql/test/emptydb/Tests/check.stable.out.32bit
+++ b/sql/test/emptydb/Tests/check.stable.out.32bit
@@ -226,6 +226,7 @@ stdout of test 'check` in directory 'sql
 \dSf sys."querylog_disable"
 \dSf sys."querylog_empty"
 \dSf sys."querylog_enable"
+\dSf sys."querytimeout"
 \dSf sys."queue"
 \dSf sys."radians"
 \dSf sys."rejects"
@@ -237,6 +238,7 @@ stdout of test 'check` in directory 'sql
 \dSf sys."right_shift"
 \dSf sys."right_shift_assign"
 \dSf sys."sessions"
+\dSf sys."sessiontimeout"
 \dSf sys."setmasklen"
 \dSf sys."setprinttimeout"
 \dSf sys."setsession"
@@ -341,6 +343,7 @@ stdout of test 'check` in directory 'sql
 \dSf sys."stddev_pop"
 \dSf sys."stddev_samp"
 \dSf sys."stop"
+\dSf sys."stopsession"
 \dSf sys."storage"
 \dSf sys."storagemodelinit"
 \dSf sys."str_to_date"
@@ -666,6 +669,7 @@ SYSTEM FUNCTION sys.querylog_cat
 SYSTEM PROCEDUREsys.querylog_disable
 SYSTEM PROCEDUREsys.querylog_empty
 SYSTEM PROCEDUREsys.querylog_enable
+SYSTEM PROCEDUREsys.querytimeout
 SYSTEM FUNCTION sys.queue
 SYSTEM FUNCTION sys.radians
 SYSTEM FUNCTION sys.rand
@@ -692,6 +696,7 @@ SYSTEM FUNCTION sys.scale_down
 SYSTEM FUNCTION sys.scale_up
 SYSTEM FUNCTION sys.second
 SYSTEM FUNCTION sys.sessions
+SYSTEM PROCEDUREsys.sessiontimeout
 SYSTEM FUNCTION sys.setmasklen
 SYSTEM PROCEDUREsys.setprinttimeout
 SYSTEM PROCEDUREsys.setsession
@@ -816,6 +821,7 @@ SYSTEM FUNCTION sys.st_z
 SYSTEM AGGREGATEsys.stddev_pop
 SYSTEM AGGREGATEsys.stddev_samp
 SYSTEM PROCEDUREsys.stop
+SYSTEM PROCEDUREsys.stopsession
 SYSTEM FUNCTION sys.storage
 SYSTEM PROCEDUREsys.storagemodelinit
 SYSTEM FUNCTION sys.str_to_date
@@ -1081,6 +1087,7 @@ create function sys.optimizers () return
 create function sys.password_hash (username string) returns string external 
name sql.password;
 create procedure sys.pause(tag bigint) external name sql.sysmon_pause;
 create procedure sys.pause(tag int) external name sql.sysmon_pause;
+create procedure sys.pause(tag tinyint) external name sql.sysmon_pause;
 create aggregate quantile(val bigint, q double) returns bigint external name 
"aggr"."quantile";
 create aggregate quantile(val date, q double) returns date external name 
"aggr"."quantile";
 create aggregate quantile(val decimal, q double) returns decimal external name 
"aggr"."quantile";
@@ -1106,23 +1113,25 @@ create procedure sys.querylog_disable() 
 create procedure sys.querylog_empty() external name sql.querylog_empty;
 create procedure sys.querylog_enable() external name sql.querylog_enable;
 create procedure sys.querylog_enable(threshold integer) external name 
sql.querylog_enable;
-create function sys.queue() returns table(qtag bigint, "user" string, started 
timestamp, estimate timestamp, progress int, status string, tag oid, query 
string) external name sql.sysmon_queue;
+create procedure sys.querytimeout("sessionid" int, "query" bigint) external 
name clients.querytimeout;
+create function sys.queue() returns table(qtag bigint, sessionid int, "user" 
string, started timestamp, estimate timestamp, progress int, status string, tag 
oid, query string) external name sql.sysmon_queue;
 create function radians(d double) returns double return d*pi()/180;
 create function sys.rejects() returns table(rowid bigint, fldid int, "message" 
string, "input" string) external name sql.copy_rejects;
 create function sys.remote_table_credentials (tablename string) returns table 
("uri" string, "username" string, "hash" string) external name 
sql.rt_credentials;
 create procedure sys.resume(tag bigint) external name sql.sysmon_resume;
 create procedure sys.resume(tag int) external name sql.sysmon_resume;
+create procedure sys.resume(tag tinyint) external name sql.sysmon_resume;
 create procedure resume_log_flushing() external name sql.resume_log_flushing;
 create procedure reuse(sys string, tab string) external name sql.reuse;
 create function reverse(src string) returns string external name udf.reverse;
 create function "right_shift"(i1 inet, i2 inet) returns boolean external name 
inet.">>";
 create function "right_shift_assign"(i1 inet, i2 inet) returns boolean 
external name inet.">>=";
-create function sys.sessions() returns table("user" string, "login" timestamp, 
"sessiontimeout" bigint, "lastcommand" timestamp, "querytimeout" bigint, 
"active" bool) external name sql.sessions;
+create function sys.sessions() returns table("sessionid" int, "user" string, 
"login" timestamp, "sessiontimeout" bigint, 

MonetDB: default - Use correct formatting directives.

2019-10-31 Thread Sjoerd Mullender
Changeset: 180c87df43f2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=180c87df43f2
Modified Files:
sql/storage/store.c
Branch: default
Log Message:

Use correct formatting directives.
A size_t is not equal to a long int.


diffs (39 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -2446,7 +2446,7 @@ tar_write(stream *outfile, const char *d
 
size_t written = mnstr_write(outfile, data, 1, bulk);
if (written != bulk) {
-   GDKerror("Wrote only %ld bytes instead of first %ld", written, 
bulk);
+   GDKerror("Wrote only %zu bytes instead of first %zu", written, 
bulk);
return GDK_FAIL;
}
 
@@ -2455,7 +2455,7 @@ tar_write(stream *outfile, const char *d
memcpy(buf, data + bulk, tail);
written = mnstr_write(outfile, buf, 1, TAR_BLOCK_SIZE);
if (written != TAR_BLOCK_SIZE) {
-   GDKerror("Wrote only %ld tail bytes instead of %d", 
written, TAR_BLOCK_SIZE);
+   GDKerror("Wrote only %zu tail bytes instead of %d", 
written, TAR_BLOCK_SIZE);
return GDK_FAIL;
}
}
@@ -2486,7 +2486,7 @@ tar_copy_stream(stream *tarfile, const c
 
file_size = getFileSize(contents);
if (file_size < size) {
-   GDKerror("Have to copy %ld bytes but only %ld exist in %s", 
size, file_size, path);
+   GDKerror("Have to copy %zd bytes but only %zd exist in %s", 
size, file_size, path);
goto end;
}
 
@@ -2508,7 +2508,7 @@ tar_copy_stream(stream *tarfile, const c
ssize_t chunk = (to_read <= bufsize) ? to_read : bufsize;
ssize_t nbytes = mnstr_read(contents, buf, 1, chunk);
if (nbytes != chunk) {
-   GDKerror("Read only %ld/%ld bytes of component %s: %s", 
nbytes, chunk, path, mnstr_error(contents));
+   GDKerror("Read only %zd/%zd bytes of component %s: %s", 
nbytes, chunk, path, mnstr_error(contents));
goto end;
}
ret = tar_write(tarfile, buf, chunk);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: compactprofiler - Major cleanup of the profiler generat...

2019-10-31 Thread Martin Kersten
Changeset: fede457f3893 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fede457f3893
Modified Files:
clients/mapiclient/Makefile.ag
clients/mapiclient/eventparser.c
clients/mapiclient/eventparser.h
clients/mapiclient/stethoscope.c
monetdb5/mal/mal_listing.c
monetdb5/mal/mal_profiler.c
Branch: compactprofiler
Log Message:

Major cleanup of the profiler generated events and simplified summary.
In the end I kept Instruction2str() because it is easier.

More BAT properties are dumpped and some stuff is removed: eventcounter, rss ,
short, prereq, source

Renaming:
ctime->mclk
user_id ->user

To simplify the eventparser, the elements of an argument structure are
separated with a hard \t.

The -j option simply dumps the lines received


diffs (truncated from 1328 to 300 lines):

diff --git a/clients/mapiclient/Makefile.ag b/clients/mapiclient/Makefile.ag
--- a/clients/mapiclient/Makefile.ag
+++ b/clients/mapiclient/Makefile.ag
@@ -38,21 +38,22 @@ bin_stethoscope = {
$(SOCKET_LIBS) $(zlib_LIBS) $(bzip2_LIBS) $(snappy_LIBS) 
$(lz4_LIBS) $(liblzma_LIBS) $(curl_LIBS) $(LTLIBICONV) $(openssl_LIBS)
 }
 
-bin_tachograph = {
-   SOURCES = tachograph.c
-   LIBS = libmcutil ../../common/utils/libmutils \
-   ../mapilib/libmapi \
-   ../../common/stream/libstream \
-   $(SOCKET_LIBS) $(zlib_LIBS) $(bzip2_LIBS) $(snappy_LIBS) 
$(lz4_LIBS) $(liblzma_LIBS) $(curl_LIBS) $(LTLIBICONV) $(openssl_LIBS)
-}
-
-bin_tomograph = {
-   SOURCES = tomograph.c
-   LIBS = libmcutil ../../common/utils/libmutils \
-   ../mapilib/libmapi \
-   ../../common/stream/libstream \
-   $(SOCKET_LIBS) $(zlib_LIBS) $(bzip2_LIBS) $(snappy_LIBS) 
$(lz4_LIBS) $(liblzma_LIBS) $(curl_LIBS) $(LTLIBICONV) $(openssl_LIBS)
-}
+# disabled: the console should be enough
+#bin_tachograph = {
+#  SOURCES = tachograph.c
+#  LIBS = libmcutil ../../common/utils/libmutils \
+#  ../mapilib/libmapi \
+#  ../../common/stream/libstream \
+#  $(SOCKET_LIBS) $(zlib_LIBS) $(bzip2_LIBS) $(snappy_LIBS) 
$(lz4_LIBS) $(liblzma_LIBS) $(curl_LIBS) $(LTLIBICONV) $(openssl_LIBS)
+#}
+#
+#bin_tomograph = {
+#  SOURCES = tomograph.c
+#  LIBS = libmcutil ../../common/utils/libmutils \
+#  ../mapilib/libmapi \
+#  ../../common/stream/libstream \
+#  $(SOCKET_LIBS) $(zlib_LIBS) $(bzip2_LIBS) $(snappy_LIBS) 
$(lz4_LIBS) $(liblzma_LIBS) $(curl_LIBS) $(LTLIBICONV) $(openssl_LIBS)
+#}
 
 # disabled: it's not really a tool for users, more to debug mapi
 # problems, or measure performance
diff --git a/clients/mapiclient/eventparser.c b/clients/mapiclient/eventparser.c
--- a/clients/mapiclient/eventparser.c
+++ b/clients/mapiclient/eventparser.c
@@ -11,192 +11,164 @@
 #include "monetdb_config.h"
 #include "eventparser.h"
 
-char *statenames[]= {"","start","done","action","ping","wait","system"};
-
-char *maltypes[MAXMALARGS];
-char *malvariables[MAXMALARGS];
-char *malvalues[MAXMALARGS];
-int malcount[MAXMALARGS];
-int malargc;
-int malretc;
-
-int malsize;
 int debug=0;
-char *currentquery=0;
-int eventcounter = 0;
 
 #define DATETIME_CHAR_LENGTH 27
 
-static void
-clearArguments(void)
-{
-   int i;
-
-   if( currentquery){
-   free(currentquery);
-   currentquery = 0;
-   }
-
-   for(i = 0; i < MAXMALARGS; i++){
-   if( malvariables[i]){
-   free(malvariables[i]);
-   malvariables[i] = 0;
-   }
-   if( malvalues[i]){
-   free(malvalues[i]);
-   malvalues[i] = 0;
-   }
-   if( maltypes[i]){
-   free(maltypes[i]);
-   maltypes[i] = 0;
-   }
-   }
-}
+#define FREE(X)  if(X){ free(X); X= 0;}
 
 static void
-dumpArguments(void)
-{
-   int i;
-   for( i=0; i < MAXMALARGS; i++)
-   if( maltypes[i])
-   printf("[%d] variable %s value %s type %s\n", i, 
(malvariables[i]?malvariables[i]:""), malvalues[i], maltypes[i]);
-}
+resetEventRecord(EventRecord *ev)
+{  int i;
+   
+   FREE(ev->version);
 
-char * 
-stripQuotes(char *currentquery)
-{
-   const char *c;
-   char *q, *qry;
-   if( currentquery ==0)
-   return NULL;
-   q = qry = (char *) malloc(strlen(currentquery) * 2);
-   if( q == NULL){
-   fprintf(stderr,"Could not allocate query buffer of size %zu\n", 
strlen(currentquery) * 2);
-   exit(-1);
+   // event state
+   FREE(ev->version);
+   FREE(ev->user); 
+   FREE(ev->session);
+   FREE(ev->function);
+   FREE(ev->module);
+   FREE(ev->instruction);
+   FREE(ev->state);
+   FREE(ev->stmt);
+   FREE(ev->time); 
+   for(i=0; i< ev->maxarg; i++){
+   

MonetDB: default - Added first implementation of profiler getlim...

2019-10-31 Thread Pedro Ferreira
Changeset: d9f5a0ae5663 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d9f5a0ae5663
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
monetdb5/mal/mal_profiler.c
monetdb5/modules/mal/profiler.c
monetdb5/modules/mal/profiler.mal
Branch: default
Log Message:

Added first implementation of profiler getlimit and setlimit module functions, 
so the server can start and run tests


diffs (96 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
@@ -11544,9 +11544,11 @@ stdout of test 'MAL-signatures` in direc
 [ "profiler",  "getSystemTime","command profiler.getSystemTime():lng 
","CMDgetSystemTime;","Obtain the user timing information."   ]
 [ "profiler",  "getTrace", "pattern profiler.getTrace(e:str):bat[:any_1] 
","CMDgetTrace;", "Get the trace details of a specific event" ]
 [ "profiler",  "getUserTime",  "command profiler.getUserTime():lng ",  
"CMDgetUserTime;",  "Obtain the user timing information."   ]
+[ "profiler",  "getlimit", "command profiler.getlimit():int ", 
"CMDgetprofilerlimit;", "Set profiler limit"]
 [ "profiler",  "noop", "command profiler.noop():void ",
"CMDnoopProfiler;", "Fetch any pending performance events"  ]
 [ "profiler",  "openstream",   "pattern profiler.openstream():void ",  
"CMDopenProfilerStream;",   "Start profiling the events, send to output 
stream" ]
 [ "profiler",  "setheartbeat", "command profiler.setheartbeat(b:int):void ",   
"CMDsetHeartbeat;", "Set heart beat performance tracing"]
+[ "profiler",  "setlimit", "command profiler.setlimit(l:int):void ",   
"CMDsetprofilerlimit;", "Get profiler limit"]
 [ "profiler",  "start","pattern profiler.start():void ",   
"CMDstartProfiler;","Start offline performance profiling"   ]
 [ "profiler",  "starttrace",   "pattern profiler.starttrace():void ",  
"CMDstartTrace;",   "Start collecting trace information"]
 [ "profiler",  "stop", "pattern profiler.stop():void ",
"CMDstopProfiler;", "Stop offline performance profiling"]
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
@@ -15948,9 +15948,11 @@ stdout of test 'MAL-signatures` in direc
 [ "profiler",  "getSystemTime","command profiler.getSystemTime():lng 
","CMDgetSystemTime;","Obtain the user timing information."   ]
 [ "profiler",  "getTrace", "pattern profiler.getTrace(e:str):bat[:any_1] 
","CMDgetTrace;", "Get the trace details of a specific event" ]
 [ "profiler",  "getUserTime",  "command profiler.getUserTime():lng ",  
"CMDgetUserTime;",  "Obtain the user timing information."   ]
+[ "profiler",  "getlimit", "command profiler.getlimit():int ", 
"CMDgetprofilerlimit;", "Set profiler limit"]
 [ "profiler",  "noop", "command profiler.noop():void ",
"CMDnoopProfiler;", "Fetch any pending performance events"  ]
 [ "profiler",  "openstream",   "pattern profiler.openstream():void ",  
"CMDopenProfilerStream;",   "Start profiling the events, send to output 
stream" ]
 [ "profiler",  "setheartbeat", "command profiler.setheartbeat(b:int):void ",   
"CMDsetHeartbeat;", "Set heart beat performance tracing"]
+[ "profiler",  "setlimit", "command profiler.setlimit(l:int):void ",   
"CMDsetprofilerlimit;", "Get profiler limit"]
 [ "profiler",  "start","pattern profiler.start():void ",   
"CMDstartProfiler;","Start offline performance profiling"   ]
 [ "profiler",  "starttrace",   "pattern profiler.starttrace():void ",  
"CMDstartTrace;",   "Start collecting trace information"]
 [ "profiler",  "stop", "pattern profiler.stop():void ",
"CMDstopProfiler;", "Stop offline performance profiling"]
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -919,6 +919,18 @@ void setHeartbeat(int delay)
ATOMIC_SET(, delay);
 }
 
+/* TODO getprofilerlimit and setprofilerlimit functions */
+
+int getprofilerlimit(void)
+{
+   return 0;
+}
+
+void setprofilerlimit(int limit)
+{
+   (void) limit;
+}
+
 void initProfiler(void)
 {
gettimeofday(_time, NULL);
diff --git a/monetdb5/modules/mal/profiler.c b/monetdb5/modules/mal/profiler.c
--- a/monetdb5/modules/mal/profiler.c
+++ b/monetdb5/modules/mal/profiler.c
@@ -127,6 +127,22 @@ CMDgetTrace(Client cntxt, MalBlkPtr mb, 
}
throw(MAL, "getTrace", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING  "%s", 
path);
 }
+
+str
+CMDgetprofilerlimit(int *res)
+{
+   *res = 

MonetDB: default - Merge with Nov2019

2019-10-31 Thread Pedro Ferreira
Changeset: 3bd6002e24a3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3bd6002e24a3
Removed Files:
sql/test/miscellaneous/README
sql/test/miscellaneous/Tests/now.sql
sql/test/miscellaneous/Tests/now.stable.err
Modified Files:
NT/monetdb_config.h.in
clients/mapiclient/mhelp.c
common/utils/mutils.c
configure.ag
gdk/gdk_posix.c
gdk/gdk_private.h
gdk/gdk_system.c
gdk/gdk_system.h
gdk/gdk_utils.c
monetdb5/mal/mal_module.c
monetdb5/modules/atoms/mtime.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_upgrades.c
sql/scripts/Makefile.ag
sql/server/rel_psm.c
sql/server/rel_schema.c
sql/server/sql_parser.y
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.sql
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.out

sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.sql

sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err

sql/test/BugTracker-2019/Tests/disallow_duplicate_column_aliases.Bug-6723.stable.out
sql/test/BugTracker-2019/Tests/prepare-types.Bug-6724.stable.out
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128

sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/miscellaneous/Tests/All
sql/test/miscellaneous/Tests/select_groupby.sql
sql/test/miscellaneous/Tests/select_groupby.stable.err
sql/test/miscellaneous/Tests/select_groupby.stable.out
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
testing/Mtest.py.in
tools/merovingian/daemon/merovingian.c
Branch: default
Log Message:

Merge with Nov2019


diffs (truncated from 1849 to 300 lines):

diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in
--- a/NT/monetdb_config.h.in
+++ b/NT/monetdb_config.h.in
@@ -508,9 +508,6 @@
 /* Define to 1 if you have the  header file. */
 #define HAVE_SYS_STAT_H 1
 
-/* Define to 1 if you have the  header file. */
-/* #undef HAVE_SYS_SYSCTL_H */
-
 /* Define to 1 if you have the  header file. */
 /* #undef HAVE_SYS_TIMES_H */
 
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -87,7 +87,7 @@ SQLhelp sqlhelp1[] = {
{"ANALYZE",
 "Collect column/table/schema data statistics for analysis and 
optimizer usage",
 "ANALYZE ident [ . ident [ column_list ] ] [SAMPLE size] [MINMAX]",
-"column_list",
+"ident,column_list",
 "See also 
https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/statistics"},
{"CALL",
 "",
@@ -163,10 +163,10 @@ SQLhelp sqlhelp1[] = {
 
"qname,param,data_type,function_return,statement,ident,language_keyword,external_code",
 "See also 
https://www.monetdb.org/Documentation/Manuals/SQLreference/Functions"},
{"CREATE INDEX",
-"",
+"Create a hint for a secondary index on a column or set of columns of 
a table",
 "CREATE [ UNIQUE | ORDERED | IMPRINTS ] INDEX ident ON qname '(' 
ident_list ')'",
 NULL,
-NULL},
+"See also 
https://www.monetdb.org/Documentation/Manuals/SQLreference/Indices"},
{"CREATE PROCEDURE",
 "Create a user-defined procedure",
 "CREATE [ OR REPLACE ] PROCEDURE qname '(' { '*' | [ param [',' ...]] 
} ')'\n"
@@ -203,12 +203,12 @@ SQLhelp sqlhelp1[] = {
 "ident",
 

MonetDB: Nov2019 - Merge with Apr2019

2019-10-31 Thread Pedro Ferreira
Changeset: 85fe793cc1e2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=85fe793cc1e2
Removed Files:
sql/test/miscellaneous/README
sql/test/miscellaneous/Tests/now.sql
sql/test/miscellaneous/Tests/now.stable.err
Modified Files:
sql/test/miscellaneous/Tests/All
sql/test/miscellaneous/Tests/select_groupby.sql
sql/test/miscellaneous/Tests/select_groupby.stable.err
sql/test/miscellaneous/Tests/select_groupby.stable.out
Branch: Nov2019
Log Message:

Merge with Apr2019


diffs (257 lines):

diff --git a/sql/test/miscellaneous/README b/sql/test/miscellaneous/README
deleted file mode 100644
--- a/sql/test/miscellaneous/README
+++ /dev/null
@@ -1,2 +0,0 @@
-The tests in this director produce time/system/ dependent output.
-It is included to ensure some testing
diff --git a/sql/test/miscellaneous/Tests/All b/sql/test/miscellaneous/Tests/All
--- a/sql/test/miscellaneous/Tests/All
+++ b/sql/test/miscellaneous/Tests/All
@@ -1,6 +1,5 @@
 column_aliases
 declared_tables
-#now
 trace_test
 simple_selects
 update_delete_aliases
diff --git a/sql/test/miscellaneous/Tests/now.sql 
b/sql/test/miscellaneous/Tests/now.sql
deleted file mode 100644
--- a/sql/test/miscellaneous/Tests/now.sql
+++ /dev/null
@@ -1,1 +0,0 @@
-select now();
diff --git a/sql/test/miscellaneous/Tests/now.stable.err 
b/sql/test/miscellaneous/Tests/now.stable.err
deleted file mode 100644
--- a/sql/test/miscellaneous/Tests/now.stable.err
+++ /dev/null
@@ -1,37 +0,0 @@
-stderr of test 'now` in directory 'sql/test/miscellaneous` itself:
-
-
-# 17:34:22 >  
-# 17:34:22 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=33116" "--set" 
"mapi_usock=/var/tmp/mtest-28433/.s.monetdb.33116" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/manegold/Monet/_/prefix/_/var/MonetDB/mTests_sql_test_miscellaneous"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
-# 17:34:22 >  
-
-# builtin opt  gdk_dbpath = 
/home/manegold/Monet/_/prefix/_/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 = 33116
-# cmdline opt  mapi_usock = /var/tmp/mtest-28433/.s.monetdb.33116
-# cmdline opt  monet_prompt = 
-# cmdline opt  mal_listing = 2
-# cmdline opt  gdk_dbpath = 
/home/manegold/Monet/_/prefix/_/var/MonetDB/mTests_sql_test_miscellaneous
-# cmdline opt  mal_listing = 0
-# cmdline opt  embedded_r = yes
-# cmdline opt  gdk_debug = 536870922
-
-# 17:34:23 >  
-# 17:34:23 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-28433" "--port=33116"
-# 17:34:23 >  
-
-
-# 17:34:23 >  
-# 17:34:23 >  "Done."
-# 17:34:23 >  
-
diff --git a/sql/test/miscellaneous/Tests/select_groupby.sql 
b/sql/test/miscellaneous/Tests/select_groupby.sql
--- a/sql/test/miscellaneous/Tests/select_groupby.sql
+++ b/sql/test/miscellaneous/Tests/select_groupby.sql
@@ -110,4 +110,77 @@ exec ** ('a', 'b', 923, 51, 942, 544);
 create function "sys"."dummy"("col1" blob, "col2" blob, "col3" integer) 
returns boolean external name "unknown"."idontexist"; --error, MAL 
implementation of sys.dummy doesn't exist.
 SELECT "sys"."dummy"("fortieth-second", blob '', '0') AS "alias1", 
"fortieth-third" FROM "myschema"."mytable"; --error, function doesn't exist
 
+create table "myschema"."mytable2"
+(
+"'col1'" date,
+"'col2'" int,
+"'col3'" varchar(256),
+"'col4'" clob,
+"'col5'" clob,
+"'col6'" decimal,
+"'col7'" decimal,
+"'col8'" date,
+"'col9'" date,
+"'col10'" int,
+"'col11'" int,
+"'col12'" decimal,
+"'col13'" int,
+"'col14'" varchar(256),
+"'col15'" varchar(256),
+"'col16'" int,
+"'col17'" varchar(256),
+"'col18'" int,
+"'col19'" varchar(256),
+"'col20'" bigint,
+"'col21'" varchar(256),
+"'col22'" varchar(256),
+"'col23'" varchar(256),
+"'col24'" varchar(256),
+"'col25'" int,
+"'col26'" varchar(256),
+"'col27'" clob,
+"'col28'" varchar(256),
+"'col29'" decimal,
+"'col30'" decimal,
+"'col31'" decimal,
+"'col32'" decimal,
+"'col33'" clob,
+"'col34'" clob,
+"'col35'" int,
+"'col36'" int
+);
+
+insert into "myschema"."mytable2" values (
+'1998-01-03', 2239, 'col3', 'col4', 'col5', 73.28, 68.29, '2005-05-12', 
'2010-03-03', 563, 63, 56.3, 852, 'col14',
+'col15', 134, 'col17', 892, 'col19', 9348, 'col21', 'col22', 'col23', 'col24', 
934, 'col26', 'col27', 'col28', 849.2739, 1742.718,
+395.824, 39.824, 'col33', 'col34', 395824, 3789);
+
+SELECT "'col26'" FROM "myschema"."mytable2" WHERE 
+( ( ("'col19'"='Some information of my hobby')) AND 
+( ("'col9'"='' AND "'col3'"='ABCDE' AND (EXTRACT(YEAR FROM "'col1'")*100 + 
EXTRACT(MONTH FROM "'col1'"))/100.0='2011.040' 
+AND "'col14'"='A 

MonetDB: Apr2019 - Added test for recently fixed issue

2019-10-31 Thread Pedro Ferreira
Changeset: cfd4aa41375f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cfd4aa41375f
Removed Files:
sql/test/miscellaneous/README
sql/test/miscellaneous/Tests/now.sql
sql/test/miscellaneous/Tests/now.stable.err
Modified Files:
sql/test/miscellaneous/Tests/All
sql/test/miscellaneous/Tests/select_groupby.sql
sql/test/miscellaneous/Tests/select_groupby.stable.err
sql/test/miscellaneous/Tests/select_groupby.stable.out
Branch: Apr2019
Log Message:

Added test for recently fixed issue


diffs (256 lines):

diff --git a/sql/test/miscellaneous/README b/sql/test/miscellaneous/README
deleted file mode 100644
--- a/sql/test/miscellaneous/README
+++ /dev/null
@@ -1,2 +0,0 @@
-The tests in this director produce time/system/ dependent output.
-It is included to ensure some testing
diff --git a/sql/test/miscellaneous/Tests/All b/sql/test/miscellaneous/Tests/All
--- a/sql/test/miscellaneous/Tests/All
+++ b/sql/test/miscellaneous/Tests/All
@@ -1,5 +1,4 @@
 declared_tables
-#now
 trace_test
 simple_selects
 update_delete_aliases
diff --git a/sql/test/miscellaneous/Tests/now.sql 
b/sql/test/miscellaneous/Tests/now.sql
deleted file mode 100644
--- a/sql/test/miscellaneous/Tests/now.sql
+++ /dev/null
@@ -1,1 +0,0 @@
-select now();
diff --git a/sql/test/miscellaneous/Tests/now.stable.err 
b/sql/test/miscellaneous/Tests/now.stable.err
deleted file mode 100644
--- a/sql/test/miscellaneous/Tests/now.stable.err
+++ /dev/null
@@ -1,37 +0,0 @@
-stderr of test 'now` in directory 'sql/test/miscellaneous` itself:
-
-
-# 17:34:22 >  
-# 17:34:22 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=33116" "--set" 
"mapi_usock=/var/tmp/mtest-28433/.s.monetdb.33116" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/manegold/Monet/_/prefix/_/var/MonetDB/mTests_sql_test_miscellaneous"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
-# 17:34:22 >  
-
-# builtin opt  gdk_dbpath = 
/home/manegold/Monet/_/prefix/_/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 = 33116
-# cmdline opt  mapi_usock = /var/tmp/mtest-28433/.s.monetdb.33116
-# cmdline opt  monet_prompt = 
-# cmdline opt  mal_listing = 2
-# cmdline opt  gdk_dbpath = 
/home/manegold/Monet/_/prefix/_/var/MonetDB/mTests_sql_test_miscellaneous
-# cmdline opt  mal_listing = 0
-# cmdline opt  embedded_r = yes
-# cmdline opt  gdk_debug = 536870922
-
-# 17:34:23 >  
-# 17:34:23 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-28433" "--port=33116"
-# 17:34:23 >  
-
-
-# 17:34:23 >  
-# 17:34:23 >  "Done."
-# 17:34:23 >  
-
diff --git a/sql/test/miscellaneous/Tests/select_groupby.sql 
b/sql/test/miscellaneous/Tests/select_groupby.sql
--- a/sql/test/miscellaneous/Tests/select_groupby.sql
+++ b/sql/test/miscellaneous/Tests/select_groupby.sql
@@ -110,4 +110,77 @@ exec ** ('a', 'b', 923, 51, 942, 544);
 create function "sys"."dummy"("col1" blob, "col2" blob, "col3" integer) 
returns boolean external name "unknown"."idontexist"; --error, MAL 
implementation of sys.dummy doesn't exist.
 SELECT "sys"."dummy"("fortieth-second", blob '', '0') AS "alias1", 
"fortieth-third" FROM "myschema"."mytable"; --error, function doesn't exist
 
+create table "myschema"."mytable2"
+(
+"'col1'" date,
+"'col2'" int,
+"'col3'" varchar(256),
+"'col4'" clob,
+"'col5'" clob,
+"'col6'" decimal,
+"'col7'" decimal,
+"'col8'" date,
+"'col9'" date,
+"'col10'" int,
+"'col11'" int,
+"'col12'" decimal,
+"'col13'" int,
+"'col14'" varchar(256),
+"'col15'" varchar(256),
+"'col16'" int,
+"'col17'" varchar(256),
+"'col18'" int,
+"'col19'" varchar(256),
+"'col20'" bigint,
+"'col21'" varchar(256),
+"'col22'" varchar(256),
+"'col23'" varchar(256),
+"'col24'" varchar(256),
+"'col25'" int,
+"'col26'" varchar(256),
+"'col27'" clob,
+"'col28'" varchar(256),
+"'col29'" decimal,
+"'col30'" decimal,
+"'col31'" decimal,
+"'col32'" decimal,
+"'col33'" clob,
+"'col34'" clob,
+"'col35'" int,
+"'col36'" int
+);
+
+insert into "myschema"."mytable2" values (
+'1998-01-03', 2239, 'col3', 'col4', 'col5', 73.28, 68.29, '2005-05-12', 
'2010-03-03', 563, 63, 56.3, 852, 'col14',
+'col15', 134, 'col17', 892, 'col19', 9348, 'col21', 'col22', 'col23', 'col24', 
934, 'col26', 'col27', 'col28', 849.2739, 1742.718,
+395.824, 39.824, 'col33', 'col34', 395824, 3789);
+
+SELECT "'col26'" FROM "myschema"."mytable2" WHERE 
+( ( ("'col19'"='Some information of my hobby')) AND 
+( ("'col9'"='' AND "'col3'"='ABCDE' AND (EXTRACT(YEAR FROM "'col1'")*100 + 
EXTRACT(MONTH FROM "'col1'"))/100.0='2011.040' 
+AND 

MonetDB: Nov2019 - Try not to confuse Windows and Unix error num...

2019-10-31 Thread Sjoerd Mullender
Changeset: b3190f961601 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b3190f961601
Modified Files:
gdk/gdk_posix.c
gdk/gdk_private.h
gdk/gdk_utils.c
Branch: Nov2019
Log Message:

Try not to confuse Windows and Unix error numbers.
Use GDKsyserror exclusively for errno-based errors, and introduce
GDKwinerror for errors obtained with GetLastError().
This should fix bug 6779.


diffs (138 lines):

diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -795,8 +795,7 @@ MT_mmap(const char *path, int mode, size
(void) SetFileAttributes(path, FILE_ATTRIBUTE_NORMAL);
h1 = CreateFile(path, mode0, mode1, , OPEN_ALWAYS, mode2, 
NULL);
if (h1 == INVALID_HANDLE_VALUE) {
-   errno = winerror(GetLastError());
-   GDKsyserror("MT_mmap: CreateFile('%s', %lu, %lu, , 
%lu, %lu, NULL) failed\n",
+   GDKwinerror("MT_mmap: CreateFile('%s', %lu, %lu, , 
%lu, %lu, NULL) failed\n",
path, mode0, mode1, (DWORD) OPEN_ALWAYS, 
mode2);
return NULL;
}
@@ -804,8 +803,7 @@ MT_mmap(const char *path, int mode, size
 
h2 = CreateFileMapping(h1, , mode3, (DWORD) (((__int64) len >> 32) & 
LL_CONSTANT(0x)), (DWORD) (len & LL_CONSTANT(0x)), NULL);
if (h2 == NULL) {
-   errno = winerror(GetLastError());
-   GDKsyserror("MT_mmap: CreateFileMapping(%p, , %lu, %lu, %lu, 
NULL) failed\n",
+   GDKwinerror("MT_mmap: CreateFileMapping(%p, , %lu, %lu, %lu, 
NULL) failed\n",
h1, mode3,
(DWORD) (((__int64) len >> 32) & 
LL_CONSTANT(0x)),
(DWORD) (len & LL_CONSTANT(0x)));
@@ -832,8 +830,7 @@ MT_munmap(void *p, size_t dummy)
 * while Unix's   munmap  returns success==0, error==-1. */
ret = UnmapViewOfFile(p);
if (ret == 0) {
-   errno = winerror(GetLastError());
-   GDKsyserror("MT_munmap failed\n");
+   GDKwinerror("MT_munmap failed\n");
return -1;
}
return 0;
@@ -882,8 +879,7 @@ MT_msync(void *p, size_t len)
 * while Unix's   munmap  returns success==0, error==-1. */
ret = FlushViewOfFile(p, len);
if (ret == 0) {
-   errno = winerror(GetLastError());
-   GDKsyserror("MT_msync: FlushViewOfFile failed\n");
+   GDKwinerror("MT_msync: FlushViewOfFile failed\n");
return -1;
}
return 0;
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -160,6 +160,11 @@ void BBPdump(void) /* never called: for
__attribute__((__visibility__("hidden")));
 __hidden gdk_return GDKunlink(int farmid, const char *dir, const char *nme, 
const char *extension)
__attribute__((__visibility__("hidden")));
+#ifdef NATIVE_WIN32
+__hidden void GDKwinerror(_In_z_ _Printf_format_string_ const char *format, 
...)
+   __attribute__((__format__(__printf__, 1, 2)))
+   __attribute__((__visibility__("hidden")));
+#endif
 __hidden void HASHfree(BAT *b)
__attribute__((__visibility__("hidden")));
 __hidden bool HASHgonebad(BAT *b, const void *v)
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1177,23 +1177,12 @@ GDKsyserror(const char *format, ...)
va_start(ap, format);
vsnprintf(message + len, sizeof(message) - (len + 2), format, ap);
va_end(ap);
-#ifndef NATIVE_WIN32
-   if (err > 0 && err < 1024)
-#endif
-   {
+   if (err > 0 && err < 1024) {
size_t len1;
size_t len2;
size_t len3;
char *osmsg;
-#ifdef NATIVE_WIN32
-   char osmsgbuf[256];
-   osmsg = osmsgbuf;
-   FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) osmsgbuf, sizeof(osmsgbuf), NULL);
-#else
osmsg = strerror(err);
-#endif
len1 = strlen(message);
len2 = len1 + strlen(GDKMESSAGE);
len3 = len2 + strlen(osmsg);
@@ -1212,6 +1201,51 @@ GDKsyserror(const char *format, ...)
errno = 0;
 }
 
+#ifdef NATIVE_WIN32
+void
+GDKwinerror(const char *format, ...)
+{
+   int err = GetLastError();
+   char message[GDKERRLEN];
+   size_t len = strlen(GDKERROR);
+   va_list ap;
+
+   if (strncmp(format, GDKERROR, len) == 0) {
+   len = 0;
+   } else {
+   strncpy(message, GDKERROR, sizeof(message));
+   }
+   va_start(ap, format);
+   vsnprintf(message + len, sizeof(message) - (len + 2), format, ap);
+   va_end(ap);
+

MonetDB: Nov2019 - Make sure variable exists.

2019-10-31 Thread Sjoerd Mullender
Changeset: c52f8457829b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c52f8457829b
Modified Files:
testing/Mtest.py.in
Branch: Nov2019
Log Message:

Make sure variable exists.


diffs (12 lines):

diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -1712,7 +1712,7 @@ def GetBitsAndModsAndThreads(env) :
 proc.killed = False
 proc.onechild = True
 t = Timer(float(par['TIMEOUT']), killProc, args = [proc, proc.stderr, cmd])
-qOut = None
+qOut = qErr = None
 try:
 t.start()
 while True:
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Nov2019 - Merge with Apr2019 branch.

2019-10-31 Thread Sjoerd Mullender
Changeset: 896b634f58e0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=896b634f58e0
Modified Files:
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_upgrades.c
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.sql
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.out

sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.sql

sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err

sql/test/BugTracker-2019/Tests/disallow_duplicate_column_aliases.Bug-6723.stable.out
sql/test/BugTracker-2019/Tests/prepare-types.Bug-6724.stable.out
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128

sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: Nov2019
Log Message:

Merge with Apr2019 branch.


diffs (truncated from 952 to 300 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -833,7 +833,7 @@ backend_call(backend *be, Client c, cq *
sql_subtype *pt = cq->params + i;
 
if (!atom_cast(m->sa, a, pt)) {
-   sql_error(m, 003, SQLSTATE(42000) "wrong type 
for argument %d of " "function call: %s, expected %s\n", i + 1, 
atom_type(a)->type->sqlname, pt->type->sqlname);
+   sql_error(m, 003, SQLSTATE(42000) "wrong type 
for argument %d of function call: %s, expected %s\n", i + 1, 
atom_type(a)->type->sqlname, pt->type->sqlname);
break;
}
if (atom_null(a)) {
@@ -855,31 +855,33 @@ backend_call(backend *be, Client c, cq *
 int
 monet5_resolve_function(ptr M, sql_func *f)
 {
+   Client c;
+   Module m;
+   mvc *sql = (mvc *) M;
str mname = getName(f->mod), fname = getName(f->imp);
-   (void) M;
 
if (!mname || !fname)
return 0;
 
-   for (Module m = getModule(mname); m; m = m->link) {
+   /* Some SQL functions MAL mapping such as count(*) aggregate, the 
number or arguments don't match */
+   if (mname == calcRef && fname == getName("="))
+   return 1;
+   if (mname == aggrRef && fname == countRef)
+   return 1;
+   if (mname == sqlRef && (fname == first_valueRef || fname ==  minRef || 
fname == maxRef))
+   return 1;
+
+   c = MCgetClient(sql->clientid);
+   for (m = findModule(c->usermodule, mname); m; m = m->link) {
for (Symbol s = findSymbolInModule(m, fname); s; s = s->peer) {
InstrPtr sig = getSignature(s);
-   int argc = sig->argc - sig->retc;
+   int argc = sig->argc - sig->retc, fargs = 
list_length(f->ops);
 
-   if ((!f->ops && argc == 0) || list_length(f->ops) == 
argc || (sig->varargs & VARARGS) == VARARGS)
+   if (fargs == argc || (sig->varargs & VARARGS) == 
VARARGS)
return 1;
}
}
return 0;
-/*
-   node *n;
-   newFcnCall(f->mod, f->imp);
-   for (n = f->ops->h; n; n = n->next) {
-   sql_arg *a = n->data;
-
-   q = push ?type? (mb, q, a->);
-   }
-*/
 }
 
 static int
@@ -1015,6 +1017,83 @@ backend_create_c_func(backend *be, sql_f
return 0;
 }
 
+/* Parse the SQL query from the function, and 

MonetDB: Apr2019 - Properly upgrade procedure sys.times and sys....

2019-10-31 Thread Sjoerd Mullender
Changeset: e68392d98ad3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e68392d98ad3
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128

sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out.powerpc64.int128
Branch: Apr2019
Log Message:

Properly upgrade procedure sys.times and sys.prod aggrregates on decimals.


diffs (truncated from 137483 to 300 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
@@ -1879,41 +1879,31 @@ sql_update_apr2019_sp1(Client c)
 }
 
 static str
-sql_update_apr2019_sp2(Client c)
+sql_update_apr2019_sp2(Client c, mvc *sql, const char *prev_schema, bool 
*systabfixed)
 {
-   /* Determine if system function sys.prod(decimal) exists in 
sys.functions, if so remove them.
-* see also 
https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f93d5290abe4
-*/
-   char *err = NULL;
-   char *qry = "select f.id from sys.functions f where f.name = 'prod' and 
func = 'prod'"
-   " and mod in ('sql', 'aggr') and language = 0 and f.type in 
(3,6) and f.system"
-   " and schema_id in (select s.id from sys.schemas s where s.name 
= 'sys')"
-   " and f.id in (select a.func_id from sys.args a where a.type = 
'decimal'"
-   " and type_digits in (2,4,9,18,38) and a.name in 
('arg','arg_1') and inout = 1 and number = 1);";
-   res_table *output = NULL;
+   size_t bufsize = 1000, pos = 0;
+   char *buf = GDKmalloc(bufsize), *err;
+
+   if (buf == NULL)
+   throw(SQL, "sql_update_apr2019_sp2", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
+
+   if (!*systabfixed) {
+   sql_fix_system_tables(c, sql, prev_schema);
+   *systabfixed = true;
+   }
 
-   err = SQLstatementIntern(c, , "update", true, false, );
-   if (err == NULL) {
-   BAT *b = BATdescriptor(output->cols[0].b);
-   if (b) {
-   if (BATcount(b) > 0) {
-   /* found entries, we need to remove them 
sys.functions and sys.args */
-   char *upd = "delete from sys.functions f where 
f.name = 'prod' and func = 'prod'"
-   " and mod in ('sql', 'aggr') and 
language = 0 and f.type in (3,6) and f.system"
-   " and schema_id in (select s.id from 
sys.schemas s where s.name = 'sys')"
-   " and f.id in (select a.func_id from 
sys.args a where a.type = 'decimal'"
-   " and type_digits in (2,4,9,18,38) and 
a.name in ('arg','arg_1') and inout = 1 and number = 1);\n"
-   "delete from sys.args where func_id not 
in (select id from sys.functions);\n";
+   pos += snprintf(buf + pos, bufsize - pos, "set schema sys;\n");
+
+   /* 11_times.sql */
+   pos += snprintf(buf + pos, bufsize - pos,
+   "drop procedure sys.times();\n");
 
-   printf("Running database upgrade 
commands:\n%s\n", upd);
-   err = SQLstatementIntern(c, , "update", 
true, false, NULL);
-   }
-   BBPunfix(b->batCacheid);
-   }
-   }
-   if (output != NULL)
-   res_tables_destroy(output);
+   pos += snprintf(buf + pos, bufsize - pos, "set 

MonetDB: Apr2019 - Merged

2019-10-31 Thread Pedro Ferreira
Changeset: c3a5b1262d0e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c3a5b1262d0e
Modified Files:
sql/backends/monet5/sql_upgrades.c
Branch: Apr2019
Log Message:

Merged


diffs (truncated from 888 to 300 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
@@ -29,11 +29,10 @@
  * functions, args) when internal types and/or functions have changed
  * (i.e. the ones in sql_types.c) */
 static str
-sql_fix_system_tables(Client c, mvc *sql)
+sql_fix_system_tables(Client c, mvc *sql, const char *prev_schema)
 {
size_t bufsize = 100, pos = 0;
char *buf = GDKmalloc(bufsize), *err = NULL;
-   char *schema = stack_get_string(sql, "current_schema");
node *n;
sql_schema *s;
 
@@ -174,8 +173,7 @@ sql_fix_system_tables(Client c, mvc *sql
}
}
 
-   if (schema)
-   pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
+   pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", 
prev_schema);
 
assert(pos < bufsize);
printf("Running database upgrade commands:\n%s\n", buf);
@@ -186,20 +184,19 @@ sql_fix_system_tables(Client c, mvc *sql
 
 #ifdef HAVE_HGE
 static str
-sql_update_hugeint(Client c, mvc *sql)
+sql_update_hugeint(Client c, mvc *sql, const char *prev_schema, bool 
*systabfixed)
 {
size_t bufsize = 8192, pos = 0;
char *buf, *err;
-   char *schema;
 
-   if ((err = sql_fix_system_tables(c, sql)) != NULL)
+   if (!*systabfixed &&
+   (err = sql_fix_system_tables(c, sql, prev_schema)) != NULL)
return err;
+   *systabfixed = true;
 
if ((buf = GDKmalloc(bufsize)) == NULL)
throw(SQL, "sql_update_hugeint", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
 
-   schema = stack_get_string(sql, "current_schema");
-
pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
/* 80_udf_hge.sql */
@@ -250,9 +247,7 @@ sql_update_hugeint(Client c, mvc *sql)
"update sys.functions set system = true where name in 
('fuse', 'generate_series', 'stddev_samp', 'stddev_pop', 'var_samp', 'var_pop', 
'median', 'quantile', 'corr') and schema_id = (select id from sys.schemas where 
name = 'sys');\n"
"update sys.functions set system = true where name = 
'filter' and schema_id = (select id from sys.schemas where name = 'json');\n");
 
-   if (schema)
-   pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-   pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
+   pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", 
prev_schema);
assert(pos < bufsize);
 
printf("Running database upgrade commands:\n%s\n", buf);
@@ -263,12 +258,10 @@ sql_update_hugeint(Client c, mvc *sql)
 #endif
 
 static str
-sql_update_geom(Client c, mvc *sql, int olddb)
+sql_update_geom(Client c, mvc *sql, int olddb, const char *prev_schema)
 {
size_t bufsize, pos = 0;
-   char *buf, *err = NULL;
-   char *geomupgrade;
-   char *schema = stack_get_string(sql, "current_schema");
+   char *buf, *err = NULL, *geomupgrade;
geomsqlfix_fptr fixfunc;
node *n;
sql_schema *s = mvc_bind_schema(sql, "sys");
@@ -297,12 +290,12 @@ sql_update_geom(Client c, mvc *sql, int 
(strcmp(t->base.name, "mbr") == 0 ||
 strcmp(t->base.name, "wkb") == 0 ||
 strcmp(t->base.name, "wkba") == 0))
-   pos += snprintf(buf + pos, bufsize - pos, "insert into 
sys.types values (%d, '%s', '%s', %u, %u, %d, %d, %d);\n", t->base.id, 
t->base.name, t->sqlname, t->digits, t->scale, t->radix, t->eclass, t->s ? 
t->s->base.id : s->base.id);
+   pos += snprintf(buf + pos, bufsize - pos, "insert into 
sys.types values (%d, '%s', '%s', %u, %u, %d, %d, %d);\n",
+   t->base.id, 
t->base.name, t->sqlname, t->digits, t->scale, t->radix, t->eclass,
+   t->s ? t->s->base.id : 
s->base.id);
}
 
-   if (schema)
-   pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-   pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
+   pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", 
prev_schema);
 
assert(pos < bufsize);
printf("Running database upgrade commands:\n%s\n", buf);
@@ -312,11 +305,10 @@ sql_update_geom(Client c, mvc *sql, int 
 }
 
 static str
-sql_update_jul2017(Client c, mvc *sql)
+sql_update_jul2017(Client c, const char *prev_schema)
 {
size_t bufsize = 1, pos = 0;
char *buf = GDKmalloc(bufsize), *err = NULL;
-   char *schema = stack_get_string(sql, 

MonetDB: Apr2019 - Check for backend of SQL function defined in ...

2019-10-31 Thread Pedro Ferreira
Changeset: ef5d870af9d2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ef5d870af9d2
Modified Files:
sql/backends/monet5/sql_gencode.c
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.sql
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.out

sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.sql

sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err
Branch: Apr2019
Log Message:

Check for backend of SQL function defined in MAL at runtime, when the function 
first gets compiled

This happens once per client connection, so the performance penalty it's not 
large.
The "imp" field of a MAL function is not set in load_func in store.c. So 
determine it during compilation.
Also check for authentication at "monet5_resolve_function".


diffs (245 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -838,7 +838,7 @@ backend_call(backend *be, Client c, cq *
sql_subtype *pt = cq->params + i;
 
if (!atom_cast(m->sa, a, pt)) {
-   sql_error(m, 003, SQLSTATE(42000) "wrong type 
for argument %d of " "function call: %s, expected %s\n", i + 1, 
atom_type(a)->type->sqlname, pt->type->sqlname);
+   sql_error(m, 003, SQLSTATE(42000) "wrong type 
for argument %d of function call: %s, expected %s\n", i + 1, 
atom_type(a)->type->sqlname, pt->type->sqlname);
break;
}
if (atom_null(a)) {
@@ -860,31 +860,33 @@ backend_call(backend *be, Client c, cq *
 int
 monet5_resolve_function(ptr M, sql_func *f)
 {
+   Client c;
+   Module m;
+   mvc *sql = (mvc *) M;
str mname = getName(f->mod), fname = getName(f->imp);
-   (void) M;
 
if (!mname || !fname)
return 0;
 
-   for (Module m = getModule(mname); m; m = m->link) {
+   /* Some SQL functions MAL mapping such as count(*) aggregate, the 
number or arguments don't match */
+   if (mname == calcRef && fname == getName("="))
+   return 1;
+   if (mname == aggrRef && fname == countRef)
+   return 1;
+   if (mname == sqlRef && (fname == first_valueRef || fname ==  minRef || 
fname == maxRef))
+   return 1;
+
+   c = MCgetClient(sql->clientid);
+   for (m = findModule(c->usermodule, mname); m; m = m->link) {
for (Symbol s = findSymbolInModule(m, fname); s; s = s->peer) {
InstrPtr sig = getSignature(s);
-   int argc = sig->argc - sig->retc;
+   int argc = sig->argc - sig->retc, fargs = 
list_length(f->ops);
 
-   if ((!f->ops && argc == 0) || list_length(f->ops) == 
argc || (sig->varargs & VARARGS) == VARARGS)
+   if (fargs == argc || (sig->varargs & VARARGS) == 
VARARGS)
return 1;
}
}
return 0;
-/*
-   node *n;
-   newFcnCall(f->mod, f->imp);
-   for (n = f->ops->h; n; n = n->next) {
-   sql_arg *a = n->data;
-
-   q = push ?type? (mb, q, a->);
-   }
-*/
 }
 
 static int
@@ -1020,6 +1022,83 @@ backend_create_c_func(backend *be, sql_f
return 0;
 }
 
+/* Parse the SQL query from the function, and extract the MAL function from 
the generated abstract syntax tree */
+static int
+mal_function_find_implementation_address(mvc *m, sql_func *f)
+{
+   mvc *o = m;
+   buffer *b = NULL;
+   bstream *bs = NULL;
+   stream *buf = NULL;
+   char *n = NULL;
+   int len = _strlen(f->query);
+   sql_schema *s = cur_schema(m);
+   dlist *l, *ext_name;
+
+   if (!(m = ZNEW(mvc))) {
+   (void) sql_error(o, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL);
+   goto bailout;
+   }
+   m->type = Q_PARSE;
+   m->user_id = m->role_id = USER_MONETDB;
+
+   if (!(m->session = sql_session_create(0, 0))) {
+   (void) sql_error(o, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL);
+   goto bailout;
+   }
+   if (s)
+   m->session->schema = s;
+
+   if (!(m->sa = sa_create())) {
+   (void) sql_error(o, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL);
+   goto bailout;
+   }
+   if (!(b = (buffer*)GDKmalloc(sizeof(buffer {
+   (void) sql_error(o, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL);
+   goto bailout;
+   }
+   if (!(n = GDKmalloc(len + 2))) {
+   (void) sql_error(o, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL);
+   goto bailout;
+   }
+   snprintf(n, len + 2, "%s\n", f->query);
+   len++;

MonetDB: Nov2019 - Merge with Apr2019 branch.

2019-10-31 Thread Sjoerd Mullender
Changeset: b6a5ccf2086e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b6a5ccf2086e
Modified Files:
sql/backends/monet5/sql_upgrades.c
Branch: Nov2019
Log Message:

Merge with Apr2019 branch.


diffs (12 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
@@ -1544,7 +1544,7 @@ sql_update_storagemodel(Client c, mvc *s
 
if ((buf = GDKmalloc(bufsize)) == NULL)
throw(SQL, "sql_update_storagemodel", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
-   
+
/* set views and tables internally to non-system to allow drop commands 
to succeed without error */
if ((t = mvc_bind_table(sql, s, "storage")) != NULL)
t->system = 0;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Apr2019 - Backported fixes to upgrade code to Apr2019 b...

2019-10-31 Thread Sjoerd Mullender
Changeset: c356f3a49079 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c356f3a49079
Modified Files:
sql/backends/monet5/sql_upgrades.c
Branch: Apr2019
Log Message:

Backported fixes to upgrade code to Apr2019 branch.


diffs (truncated from 888 to 300 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
@@ -29,11 +29,10 @@
  * functions, args) when internal types and/or functions have changed
  * (i.e. the ones in sql_types.c) */
 static str
-sql_fix_system_tables(Client c, mvc *sql)
+sql_fix_system_tables(Client c, mvc *sql, const char *prev_schema)
 {
size_t bufsize = 100, pos = 0;
char *buf = GDKmalloc(bufsize), *err = NULL;
-   char *schema = stack_get_string(sql, "current_schema");
node *n;
sql_schema *s;
 
@@ -174,8 +173,7 @@ sql_fix_system_tables(Client c, mvc *sql
}
}
 
-   if (schema)
-   pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
+   pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", 
prev_schema);
 
assert(pos < bufsize);
printf("Running database upgrade commands:\n%s\n", buf);
@@ -186,20 +184,19 @@ sql_fix_system_tables(Client c, mvc *sql
 
 #ifdef HAVE_HGE
 static str
-sql_update_hugeint(Client c, mvc *sql)
+sql_update_hugeint(Client c, mvc *sql, const char *prev_schema, bool 
*systabfixed)
 {
size_t bufsize = 8192, pos = 0;
char *buf, *err;
-   char *schema;
 
-   if ((err = sql_fix_system_tables(c, sql)) != NULL)
+   if (!*systabfixed &&
+   (err = sql_fix_system_tables(c, sql, prev_schema)) != NULL)
return err;
+   *systabfixed = true;
 
if ((buf = GDKmalloc(bufsize)) == NULL)
throw(SQL, "sql_update_hugeint", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
 
-   schema = stack_get_string(sql, "current_schema");
-
pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
/* 80_udf_hge.sql */
@@ -250,9 +247,7 @@ sql_update_hugeint(Client c, mvc *sql)
"update sys.functions set system = true where name in 
('fuse', 'generate_series', 'stddev_samp', 'stddev_pop', 'var_samp', 'var_pop', 
'median', 'quantile', 'corr') and schema_id = (select id from sys.schemas where 
name = 'sys');\n"
"update sys.functions set system = true where name = 
'filter' and schema_id = (select id from sys.schemas where name = 'json');\n");
 
-   if (schema)
-   pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-   pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
+   pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", 
prev_schema);
assert(pos < bufsize);
 
printf("Running database upgrade commands:\n%s\n", buf);
@@ -263,12 +258,10 @@ sql_update_hugeint(Client c, mvc *sql)
 #endif
 
 static str
-sql_update_geom(Client c, mvc *sql, int olddb)
+sql_update_geom(Client c, mvc *sql, int olddb, const char *prev_schema)
 {
size_t bufsize, pos = 0;
-   char *buf, *err = NULL;
-   char *geomupgrade;
-   char *schema = stack_get_string(sql, "current_schema");
+   char *buf, *err = NULL, *geomupgrade;
geomsqlfix_fptr fixfunc;
node *n;
sql_schema *s = mvc_bind_schema(sql, "sys");
@@ -297,12 +290,12 @@ sql_update_geom(Client c, mvc *sql, int 
(strcmp(t->base.name, "mbr") == 0 ||
 strcmp(t->base.name, "wkb") == 0 ||
 strcmp(t->base.name, "wkba") == 0))
-   pos += snprintf(buf + pos, bufsize - pos, "insert into 
sys.types values (%d, '%s', '%s', %u, %u, %d, %d, %d);\n", t->base.id, 
t->base.name, t->sqlname, t->digits, t->scale, t->radix, t->eclass, t->s ? 
t->s->base.id : s->base.id);
+   pos += snprintf(buf + pos, bufsize - pos, "insert into 
sys.types values (%d, '%s', '%s', %u, %u, %d, %d, %d);\n",
+   t->base.id, 
t->base.name, t->sqlname, t->digits, t->scale, t->radix, t->eclass,
+   t->s ? t->s->base.id : 
s->base.id);
}
 
-   if (schema)
-   pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-   pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
+   pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", 
prev_schema);
 
assert(pos < bufsize);
printf("Running database upgrade commands:\n%s\n", buf);
@@ -312,11 +305,10 @@ sql_update_geom(Client c, mvc *sql, int 
 }
 
 static str
-sql_update_jul2017(Client c, mvc *sql)
+sql_update_jul2017(Client c, const char *prev_schema)
 {
size_t bufsize = 1, pos = 0;
char *buf = GDKmalloc(bufsize), *err = NULL;

MonetDB: sq2 - moved exists to unnest

2019-10-31 Thread Niels Nes
Changeset: 8e79dbe301e4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8e79dbe301e4
Modified Files:
sql/server/rel_distribute.c
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_optimizer.c
sql/server/rel_propagate.c
sql/server/rel_rel.c
sql/server/rel_rel.h
sql/server/rel_select.c
sql/server/rel_select.h
sql/server/rel_unnest.c
sql/server/rel_updates.c
sql/server/rel_xml.c
Branch: sq2
Log Message:

moved exists to unnest


diffs (truncated from 1643 to 300 lines):

diff --git a/sql/server/rel_distribute.c b/sql/server/rel_distribute.c
--- a/sql/server/rel_distribute.c
+++ b/sql/server/rel_distribute.c
@@ -146,7 +146,7 @@ replica(mvc *sql, sql_rel *rel, char *ur
 
if (rel_is_ref(rel)) {
if (has_remote_or_replica(rel)) {
-   sql_rel *nrel = rel_copy(sql->sa, rel, 0);
+   sql_rel *nrel = rel_copy(sql, rel, 0);
 
if (nrel && rel->p)
nrel->p = prop_copy(sql->sa, rel->p);
@@ -288,7 +288,7 @@ distribute(mvc *sql, sql_rel *rel)
 
if (rel_is_ref(rel)) {
if (has_remote_or_replica(rel)) {
-   sql_rel *nrel = rel_copy(sql->sa, rel, 0);
+   sql_rel *nrel = rel_copy(sql, rel, 0);
 
if (nrel && rel->p)
nrel->p = prop_copy(sql->sa, rel->p);
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -646,6 +646,7 @@ exp_rel(mvc *sql, sql_rel *rel)
*/
e->l = rel;
e->flag = PSM_REL;
+   e->card = rel->card;
assert(rel);
if (is_project(rel->op)) {
sql_exp *last = rel->exps->t->data;
@@ -1545,7 +1546,7 @@ exp_is_atom( sql_exp *e )
 int
 exp_is_rel( sql_exp *e )
 {
-   return (e->type == e_psm && e->flag == PSM_REL && e->l);
+   return (e && e->type == e_psm && e->flag == PSM_REL && e->l);
 }
 
 int
@@ -1934,7 +1935,7 @@ exps_alias( sql_allocator *sa, list *exp
 }
 
 list *
-exps_copy( sql_allocator *sa, list *exps)
+exps_copy( mvc *sql, list *exps)
 {
node *n;
list *nl;
@@ -1942,11 +1943,11 @@ exps_copy( sql_allocator *sa, list *exps
if (!exps)
return exps;
 
-   nl = new_exp_list(sa);
+   nl = new_exp_list(sql->sa);
for(n = exps->h; n; n = n->next) {
sql_exp *arg = n->data;
 
-   arg = exp_copy(sa, arg);
+   arg = exp_copy(sql, arg);
if (!arg) 
return NULL;
append(nl, arg);
@@ -1955,48 +1956,48 @@ exps_copy( sql_allocator *sa, list *exps
 }
 
 sql_exp *
-exp_copy( sql_allocator *sa, sql_exp * e)
+exp_copy( mvc *sql, sql_exp * e)
 {
sql_exp *l, *r, *r2, *ne = NULL;
 
switch(e->type){
case e_column:
-   ne = exp_column(sa, e->l, e->r, exp_subtype(e), e->card, 
has_nil(e), is_intern(e));
+   ne = exp_column(sql->sa, e->l, e->r, exp_subtype(e), e->card, 
has_nil(e), is_intern(e));
ne->flag = e->flag;
break;
case e_cmp:
if (get_cmp(e) == cmp_or || get_cmp(e) == cmp_filter) {
-   list *l = exps_copy(sa, e->l);
-   list *r = exps_copy(sa, e->r);
+   list *l = exps_copy(sql, e->l);
+   list *r = exps_copy(sql, e->r);
if (l && r) {
if (get_cmp(e) == cmp_filter)
-   ne = exp_filter(sa, l, r, e->f, 
is_anti(e));
+   ne = exp_filter(sql->sa, l, r, e->f, 
is_anti(e));
else
-   ne = exp_or(sa, l, r, is_anti(e));
+   ne = exp_or(sql->sa, l, r, is_anti(e));
}
} else if (e->flag == cmp_in || e->flag == cmp_notin) {
-   sql_exp *l = exp_copy(sa, e->l);
-   list *r = exps_copy(sa, e->r);
+   sql_exp *l = exp_copy(sql, e->l);
+   list *r = exps_copy(sql, e->r);
 
if (l && r) 
-   ne = exp_in(sa, l, r, e->flag);
+   ne = exp_in(sql->sa, l, r, e->flag);
} else {
-   l = exp_copy(sa, e->l);
-   r = exp_copy(sa, e->r);
+   l = exp_copy(sql, e->l);
+   r = exp_copy(sql, e->r);
 
if (e->f) {
-   r2 = exp_copy(sa, e->f);
+   r2 = exp_copy(sql, e->f);
if (l && r && r2)
-   ne = 

MonetDB: Nov2019 - Merge with Apr2019 branch.

2019-10-31 Thread Sjoerd Mullender
Changeset: b496d502ec4e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b496d502ec4e
Modified Files:
monetdb5/mal/mal_module.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_gencode.c
Branch: Nov2019
Log Message:

Merge with Apr2019 branch.


diffs (75 lines):

diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c
--- a/monetdb5/mal/mal_module.c
+++ b/monetdb5/mal/mal_module.c
@@ -117,7 +117,7 @@ Module getModule(str name) {
int index = getModuleIndex(name);
Module m = moduleIndex[index];
while(m) {
-   if (strcmp(name, m->name) == 0)
+   if (name == m->name)
return m;
m = m->link;
}
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
@@ -782,10 +782,15 @@ create_func(mvc *sql, char *sname, char 
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);
assert(nf);
-   if (nf->lang == FUNC_LANG_INT || nf->lang == FUNC_LANG_MAL) { /* 
FUNC_LANG_INT shouldn't be reachable, but leave it here */
+   switch (nf->lang) {
+   case FUNC_LANG_INT:
+   case FUNC_LANG_MAL: /* shouldn't be reachable, but leave it here */
if (!backend_resolve_function(sql, nf))
throw(SQL,"sql.create_func", SQLSTATE(3F000) "CREATE 
%s%s: external name %s.%s not bound", KF, F, nf->mod, nf->base.name);
-   } else if (nf->lang == FUNC_LANG_SQL) {
+   if (nf->query == NULL)
+   break;
+   /* fall through */
+   case FUNC_LANG_SQL: {
char *buf;
sql_rel *r = NULL;
sql_allocator *sa = sql->sa;
@@ -825,6 +830,9 @@ create_func(mvc *sql, char *sname, char 
sa_destroy(sql->sa);
sql->sa = sa;
}
+   default:
+   break;
+   }
return MAL_SUCCEED;
 }
 
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -855,19 +855,19 @@ backend_call(backend *be, Client c, cq *
 int
 monet5_resolve_function(ptr M, sql_func *f)
 {
+   str mname = getName(f->mod), fname = getName(f->imp);
(void) M;
 
-   for (Module m = getModule(f->mod); m; m = m->link) {
-   if (strcmp(m->name, f->mod) == 0) {
-   Symbol s = m->space[(int) (getSymbolIndex(f->imp))];
-   for (; s; s = s->peer) {
-   InstrPtr sig = getSignature(s);
-   int argc = sig->argc - sig->retc;
+   if (!mname || !fname)
+   return 0;
 
-   if (strcmp(s->name, f->imp) == 0 && ((!f->ops 
&& argc == 0) || list_length(f->ops) == argc || (sig->varargs & VARARGS) == 
VARARGS))
-   return 1;
+   for (Module m = getModule(mname); m; m = m->link) {
+   for (Symbol s = findSymbolInModule(m, fname); s; s = s->peer) {
+   InstrPtr sig = getSignature(s);
+   int argc = sig->argc - sig->retc;
 
-   }
+   if ((!f->ops && argc == 0) || list_length(f->ops) == 
argc || (sig->varargs & VARARGS) == VARARGS)
+   return 1;
}
}
return 0;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list