MonetDB: compactprofiler - Minor changes in eventparser and stet...
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
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
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
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
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.
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.
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...
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...
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
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
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
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...
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.
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.
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....
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
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 ...
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.
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...
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
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.
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