Changeset: 90dfaf335ec2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=90dfaf335ec2 Added Files: sql/test/BugTracker-2019/Tests/cast-interval.Bug-6793.sql sql/test/BugTracker-2019/Tests/cast-interval.Bug-6793.stable.err sql/test/BugTracker-2019/Tests/cast-interval.Bug-6793.stable.out sql/test/BugTracker-2019/Tests/could-not-allocate-space.Bug-6795.sql sql/test/BugTracker-2019/Tests/could-not-allocate-space.Bug-6795.stable.err sql/test/BugTracker-2019/Tests/could-not-allocate-space.Bug-6795.stable.out sql/test/BugTracker-2019/Tests/python-aggregate-no-groups.Bug-6726.sql sql/test/BugTracker-2019/Tests/python-aggregate-no-groups.Bug-6726.stable.err sql/test/BugTracker-2019/Tests/python-aggregate-no-groups.Bug-6726.stable.out sql/test/scanner/Tests/mserver_with_raw_strings.options5 sql/test/scanner/Tests/mserver_with_raw_strings.sql sql/test/scanner/Tests/mserver_with_raw_strings.stable.err sql/test/scanner/Tests/mserver_with_raw_strings.stable.out sql/test/scanner/Tests/mserver_without_raw_strings.options5 sql/test/scanner/Tests/mserver_without_raw_strings.sql sql/test/scanner/Tests/mserver_without_raw_strings.stable.err sql/test/scanner/Tests/mserver_without_raw_strings.stable.out Modified Files: ChangeLog clients/mapiclient/dump.c clients/mapiclient/msqldump.c common/options/monet_options.c monetdb5/modules/mal/querylog.c monetdb5/modules/mal/wlc.h monetdb5/optimizer/opt_evaluate.c monetdb5/optimizer/opt_pipes.c sql/backends/monet5/Tests/pyapi05.stable.out sql/backends/monet5/Tests/rapi05.stable.out sql/backends/monet5/UDF/pyapi/conversion.c sql/backends/monet5/UDF/pyapi/convert_loops.h sql/backends/monet5/UDF/pyapi/pyapi.c sql/backends/monet5/UDF/pyapi/pyloader.c sql/backends/monet5/UDF/pyapi/pytypes.c sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_05.stable.out sql/backends/monet5/sql.c sql/backends/monet5/sql_result.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_upgrades.c sql/include/sql_relation.h sql/server/rel_dump.c sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimizer.c sql/server/rel_rel.c sql/server/rel_rel.h sql/server/rel_select.c sql/server/rel_unnest.c sql/server/sql_scan.c sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_bigint_to_int.SF-1211903.stable.out sql/test/BugTracker-2008/Tests/decimal_cast_in_view.SF-2075223.stable.out sql/test/BugTracker-2013/Tests/numeric-column-alias.Bug-3279.stable.out sql/test/BugTracker-2014/Tests/missing_alias.Bug-3626.stable.out sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out sql/test/BugTracker-2015/Tests/string-to-inet.Bug-3666.stable.out sql/test/BugTracker-2016/Tests/convert-function-test-hge.Bug-3460.stable.out.int128 sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out.int128 sql/test/BugTracker-2017/Tests/sqlsmith.Bug-6219.stable.out sql/test/BugTracker-2017/Tests/sqlsmith01.stable.out sql/test/BugTracker-2018/Tests/convert-key.Bug-6648.stable.out sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out sql/test/BugTracker-2019/Tests/All sql/test/BugTracker-2019/Tests/prepare-types.Bug-6724.stable.out sql/test/BugTracker/Tests/convert_dec2varchar.SF-1774312.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/Tests/keys.stable.out sql/test/Tests/window_functions.stable.out sql/test/bugs/Tests/cast_varchar2int-bug-sf-964165.stable.out sql/test/emptydb/Tests/check.SQL.py 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/mergetables/Tests/mergeinit.stable.err sql/test/mergetables/Tests/sqlsmith-exists.sql sql/test/mergetables/Tests/sqlsmith-exists.stable.out sql/test/pg_regress/Tests/date.stable.out sql/test/pg_regress/Tests/int8.stable.out sql/test/pg_regress/Tests/int8.stable.out.int128 sql/test/scanner/Tests/All sql/test/subquery/Tests/subquery3.sql sql/test/subquery/Tests/subquery3.stable.out sql/test/sys-schema/Tests/bam_tables_checks.stable.out sql/test/sys-schema/Tests/check_MaxStrLength_violations.stable.out tools/merovingian/client/monetdb.1 tools/merovingian/daemon/forkmserver.c tools/merovingian/utils/properties.c tools/mserver/mserver5.1.in tools/mserver/mserver5.c Branch: gdk_tracer Log Message:
Merge with default diffs (truncated from 18946 to 300 lines): diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog file for devel # This file is updated with Maddlog +* Fri Dec 6 2019 Panagiotis Koutsourakis <[email protected]> +- Added mserver5 option (--set raw_strings=true|false) and monetdb + database property (raw_strings=yes|no) to control interpretation + of strings. + * Fri Nov 29 2019 Panagiotis Koutsourakis <[email protected]> - Added support for raw strings using the syntax r'' or R''. This means that C-like escapes will remain uninterpreted within those strings. For diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -128,7 +128,17 @@ squoted_print(stream *f, const char *s, if (mnstr_printf(f, "%c", quote) < 0) return -1; while (*s) { + size_t n = strcspn(s, "\\'\"\177" + "\001\002\003\004\005\006\007" + "\010\011\012\013\014\015\016\017" + "\020\021\022\023\024\025\026\027" + "\030\031\032\033\034\035\036\037"); + if (n > 0 && mnstr_write(f, s, 1, n) < 0) + return -1; + s += n; switch (*s) { + case '\0': + continue; case '\\': if (mnstr_write(f, "\\\\", 1, 2) < 0) return -1; @@ -148,13 +158,8 @@ squoted_print(stream *f, const char *s, return -1; break; default: - if ((0 < *s && *s < 32) || *s == '\177') { - if (mnstr_printf(f, "\\%03o", (uint8_t) *s) < 0) - return -1; - } else { - if (mnstr_write(f, s, 1, 1) < 0) - return -1; - } + if (mnstr_printf(f, "\\%03o", (uint8_t) *s) < 0) + return -1; break; } s++; @@ -1783,14 +1788,13 @@ dump_table_data(Mapi mid, const char *sc strcmp(tp, "url") == 0 || strcmp(tp, "uuid") == 0 || string[i]) - squoted_print(toConsole, s, useInserts ? '\'' : '"'); + squoted_print(toConsole, s, '\''); else mnstr_printf(toConsole, "%s", s); } else if (string[i]) { - /* write double or single-quoted - string with certain characters - escaped */ - squoted_print(toConsole, s, useInserts ? '\'' : '"'); + /* write double-quoted string with + certain characters escaped */ + squoted_print(toConsole, s, '"'); } else mnstr_printf(toConsole, "%s", s); diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c --- a/clients/mapiclient/msqldump.c +++ b/clients/mapiclient/msqldump.c @@ -159,6 +159,10 @@ main(int argc, char **argv) if (user_set_as_flag) passwd = NULL; + if( dbname == NULL){ + printf("msqldump, please specify a database\n"); + usage(argv[0], -1); + } if (user == NULL) user = simple_prompt("user", BUFSIZ, 1, prompt_getlogin()); if (passwd == NULL) @@ -186,7 +190,7 @@ main(int argc, char **argv) fprintf(stderr, "%s", motd); } mapi_trace(mid, trace); - mapi_cache_limit(mid, 10000); + mapi_cache_limit(mid, -1); out = file_wastream(stdout, "stdout"); if (out == NULL) { diff --git a/common/options/monet_options.c b/common/options/monet_options.c --- a/common/options/monet_options.c +++ b/common/options/monet_options.c @@ -43,7 +43,7 @@ #define getpid _getpid #endif -/* these two are used of the set parameter passed into functions is NULL */ +/* these two are used if the set parameter passed into functions is NULL */ static int default_setlen = 0; static opt *default_set = NULL; @@ -218,7 +218,7 @@ mo_builtin_settings(opt **Set) if (Set == NULL) return 0; -#define N_OPTIONS 7 /*MUST MATCH # OPTIONS BELOW */ +#define N_OPTIONS 8 /*MUST MATCH # OPTIONS BELOW */ set = malloc(sizeof(opt) * N_OPTIONS); if (set == NULL) return 0; @@ -252,6 +252,10 @@ mo_builtin_settings(opt **Set) set[i].name = strdup("sql_debug"); set[i].value = strdup("0"); i++; + set[i].kind = opt_builtin; + set[i].name = strdup("raw_strings"); + set[i].value = strdup("false"); + i++; assert(i == N_OPTIONS); *Set = set; diff --git a/monetdb5/modules/mal/querylog.c b/monetdb5/modules/mal/querylog.c --- a/monetdb5/modules/mal/querylog.c +++ b/monetdb5/modules/mal/querylog.c @@ -79,6 +79,8 @@ static BAT *QLOG_calls_result = 0; static BAT *QLOG_calls_cpuload = 0; static BAT *QLOG_calls_iowait = 0; +static MT_Lock QLOGlock = MT_LOCK_INITIALIZER("QLOGlock"); + str QLOGcatalog(BAT **r) { @@ -90,7 +92,7 @@ QLOGcatalog(BAT **r) msg = initQlog(); if( msg) return msg; - MT_lock_set(&mal_profileLock); + MT_lock_set(&QLOGlock); r[0] = COLcopy(QLOG_cat_id, QLOG_cat_id->ttype, false, TRANSIENT); r[1] = COLcopy(QLOG_cat_user, QLOG_cat_user->ttype,false, TRANSIENT); r[2] = COLcopy(QLOG_cat_defined, QLOG_cat_defined->ttype,false, TRANSIENT); @@ -99,7 +101,7 @@ QLOGcatalog(BAT **r) r[5] = COLcopy(QLOG_cat_plan, QLOG_cat_plan->ttype,false, TRANSIENT); r[6] = COLcopy(QLOG_cat_mal, QLOG_cat_mal->ttype,false, TRANSIENT); r[7] = COLcopy(QLOG_cat_optimize, QLOG_cat_optimize->ttype,false, TRANSIENT); - MT_lock_unset(&mal_profileLock); + MT_lock_unset(&QLOGlock); for ( i = 0; i< 8; i++) cnt += r[i] != 0; if( cnt != 8){ @@ -125,7 +127,7 @@ QLOGcalls(BAT **r) msg = initQlog(); if( msg) return msg; - MT_lock_set(&mal_profileLock); + MT_lock_set(&QLOGlock); r[0] = COLcopy(QLOG_calls_id, QLOG_calls_id->ttype, false, TRANSIENT); r[1] = COLcopy(QLOG_calls_start, QLOG_calls_start->ttype,false, TRANSIENT); r[2] = COLcopy(QLOG_calls_stop, QLOG_calls_stop->ttype,false, TRANSIENT); @@ -135,7 +137,7 @@ QLOGcalls(BAT **r) r[6] = COLcopy(QLOG_calls_result, QLOG_calls_result->ttype,false, TRANSIENT); r[7] = COLcopy(QLOG_calls_cpuload, QLOG_calls_cpuload->ttype,false, TRANSIENT); r[8] = COLcopy(QLOG_calls_iowait, QLOG_calls_iowait->ttype,false, TRANSIENT); - MT_lock_unset(&mal_profileLock); + MT_lock_unset(&QLOGlock); for ( i = 0; i< 9; i++) cnt += r[i] != 0; if( cnt != 9){ @@ -248,9 +250,9 @@ initQlog(void) if (QLOG_init) return MAL_SUCCEED; /* already initialized */ - MT_lock_set(&mal_profileLock); + MT_lock_set(&QLOGlock); msg = _initQlog(); - MT_lock_unset(&mal_profileLock); + MT_lock_unset(&QLOGlock); return msg; } @@ -300,7 +302,7 @@ QLOGempty(void *ret) msg = initQlog(); if( msg) return msg; - MT_lock_set(&mal_profileLock); + MT_lock_set(&QLOGlock); /* drop all querylog tables */ BATclear(QLOG_cat_id,true); @@ -323,7 +325,7 @@ QLOGempty(void *ret) BATclear(QLOG_calls_iowait,true); TMsubcommit_list(commitlist, committop); - MT_lock_unset(&mal_profileLock); + MT_lock_unset(&QLOGlock); return MAL_SUCCEED; } @@ -345,7 +347,7 @@ QLOGappend(Client cntxt, MalBlkPtr mb, M if( msg) return msg; snprintf(buf,128,"%s.%s", getModuleId(sig), getFunctionId(sig)); - MT_lock_set(&mal_profileLock); + MT_lock_set(&QLOGlock); o = BUNfnd(QLOG_cat_id, &mb->tag); if ( o == BUN_NONE){ *ret = mb->tag; @@ -357,11 +359,11 @@ QLOGappend(Client cntxt, MalBlkPtr mb, M BUNappend(QLOG_cat_optimize,&mb->optimize,false) != GDK_SUCCEED || BUNappend(QLOG_cat_user,*usr,false) != GDK_SUCCEED || BUNappend(QLOG_cat_defined,tick,false) != GDK_SUCCEED) { - MT_lock_unset(&mal_profileLock); + MT_lock_unset(&QLOGlock); throw(MAL, "querylog.append", SQLSTATE(HY001) MAL_MALLOC_FAIL); } } - MT_lock_unset(&mal_profileLock); + MT_lock_unset(&QLOGlock); TMsubcommit_list(commitlist, committop); return MAL_SUCCEED; } @@ -409,7 +411,7 @@ QLOGcall(Client cntxt, MalBlkPtr mb, Mal return msg; if ( *xtime + *rtime < QLOGthreshold) return MAL_SUCCEED; - MT_lock_set(&mal_profileLock); + MT_lock_set(&QLOGlock); if (BUNappend(QLOG_calls_id,&mb->tag,false) != GDK_SUCCEED || BUNappend(QLOG_calls_start,tick1,false) != GDK_SUCCEED || BUNappend(QLOG_calls_stop,tick2,false) != GDK_SUCCEED || @@ -419,10 +421,10 @@ QLOGcall(Client cntxt, MalBlkPtr mb, Mal BUNappend(QLOG_calls_result,rtime,false) != GDK_SUCCEED || BUNappend(QLOG_calls_cpuload,cpu,false) != GDK_SUCCEED || BUNappend(QLOG_calls_iowait,iowait,false) != GDK_SUCCEED) { - MT_lock_unset(&mal_profileLock); + MT_lock_unset(&QLOGlock); throw(MAL, "querylog.call", SQLSTATE(HY001) MAL_MALLOC_FAIL); } - MT_lock_unset(&mal_profileLock); + MT_lock_unset(&QLOGlock); TMsubcommit_list(commitlist, committop); return MAL_SUCCEED; } diff --git a/monetdb5/modules/mal/wlc.h b/monetdb5/modules/mal/wlc.h --- a/monetdb5/modules/mal/wlc.h +++ b/monetdb5/modules/mal/wlc.h @@ -11,12 +11,13 @@ #include "gdk.h" #include <time.h> +#include "mal.h" #include "mal_exception.h" #include "mal_interpreter.h" #define WLC_QUERY 1 #define WLC_UPDATE 2 -#define WLC_CATALOG 3 +#define WLC_CATALOG 3 #define WLC_IGNORE 4 /* WLC modes */ diff --git a/monetdb5/optimizer/opt_evaluate.c b/monetdb5/optimizer/opt_evaluate.c --- a/monetdb5/optimizer/opt_evaluate.c +++ b/monetdb5/optimizer/opt_evaluate.c @@ -120,7 +120,6 @@ OPTevaluateImplementation(Client cntxt, InstrPtr p; int i, k, limit, *alias = 0, barrier; MalStkPtr env = NULL; - int profiler, sqlprofiler; int debugstate = cntxt->itrace, actions = 0, constantblock = 0; int *assigned = 0, use; char buf[256]; @@ -176,9 +175,6 @@ OPTevaluateImplementation(Client cntxt, if (use && p->retc == 1 && OPTallConstant(cntxt, mb, p) && !isUnsafeFunction(p)) { barrier = p->barrier; p->barrier = 0; - profiler = malProfileMode; /* we don't trace it */ - sqlprofiler = cntxt->sqlprofiler; - malProfileMode = 0; if ( env == NULL) { env = prepareMALstack(mb, 2 * mb->vsize); if (!env) { @@ -188,8 +184,6 @@ OPTevaluateImplementation(Client cntxt, env->keepAlive = TRUE; } msg = reenterMAL(cntxt, mb, i, i + 1, env); - malProfileMode= profiler; - cntxt->sqlprofiler = sqlprofiler; p->barrier = barrier; TRC_DEBUG(MAL_OPT_EVALUATE, "Retc var: %s - Result: %s\n", getVarName(mb, getArg(p, 0)), msg == MAL_SUCCEED ? "ok" : msg); diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c --- a/monetdb5/optimizer/opt_pipes.c +++ b/monetdb5/optimizer/opt_pipes.c _______________________________________________ checkin-list mailing list [email protected] https://www.monetdb.org/mailman/listinfo/checkin-list
