MonetDB: Mar2018 - Added test for bug 6600
Changeset: 9428a9b2be0a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9428a9b2be0a Added Files: sql/test/BugTracker-2018/Tests/sqlitelogictest-select-errors.Bug-6600.sql Modified Files: sql/test/BugTracker-2018/Tests/All Branch: Mar2018 Log Message: Added test for bug 6600 diffs (16 lines): diff --git a/sql/test/BugTracker-2018/Tests/All b/sql/test/BugTracker-2018/Tests/All --- a/sql/test/BugTracker-2018/Tests/All +++ b/sql/test/BugTracker-2018/Tests/All @@ -56,3 +56,4 @@ nested-merge-tables.Bug-6585 sqlitelogictest-complex-expression.Bug-6589 sqlitelogictest-complex-case-not-in.Bug-6594 multiple-count.Bug-6599 +sqlitelogictest-select-errors.Bug-6600 diff --git a/sql/test/BugTracker-2018/Tests/sqlitelogictest-select-errors.Bug-6600.sql b/sql/test/BugTracker-2018/Tests/sqlitelogictest-select-errors.Bug-6600.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2018/Tests/sqlitelogictest-select-errors.Bug-6600.sql @@ -0,0 +1,3 @@ +SELECT ALL + 60 * - NULLIF ( - CAST ( NULL AS INTEGER ), 51 * 70 * 62 / + 52 * + 58 / 90 - CAST ( + 44 AS INTEGER ) ) AS col2, 35; +SELECT ALL 11 * COUNT ( * ) * + 2 * 6; +SELECT ALL - 9 * NULLIF ( + 30, + 64 ) * + 46 * 1; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: remote_auth - Heavily refactor the creds test to make i...
Changeset: 0e1d8ffb5727 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0e1d8ffb5727 Modified Files: sql/test/remote/Tests/creds.SQL.py.in Branch: remote_auth Log Message: Heavily refactor the creds test to make it easier to reuse diffs (125 lines): diff --git a/sql/test/remote/Tests/creds.SQL.py.in b/sql/test/remote/Tests/creds.SQL.py.in --- a/sql/test/remote/Tests/creds.SQL.py.in +++ b/sql/test/remote/Tests/creds.SQL.py.in @@ -30,6 +30,17 @@ RATINGS_TABLE_DEF = ''' ( ) ''' +# Complicated FK constraints on merge/remote tables do not work great +# currently (May 2018) +RATINGS_TABLE_DEF_FK = ''' ( +movie_id BIGINT, +customer_id BIGINT, +rating TINYINT, +rating_date DATE +) +''' + +# Find a free network port def freeport(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('', 0)) @@ -37,54 +48,67 @@ def freeport(): sock.close() return port -def worker_load(workerrec): - filename="$TSTDATAPATH/netflix_data/ratings_sample_{}.csv".format(workerrec['num']) +# Create the remote tables and load the data. Note: the supervisor +# database should be already started and should contain the movies +# table. +def worker_load(in_filename, workerrec, cmovies, ratings_table_def_fk): c = workerrec['conn'] -cmovies = "CREATE REMOTE TABLE movies {} ON '{}'".format(MOVIES_TABLE_DEF, supervisor_uri) -screateq = "CREATE TABLE ratings {}".format(RATINGS_TABLE_DEF) -load_data = "COPY INTO ratings FROM '{}' USING DELIMITERS ',','\n'".format(filename) +screateq = "CREATE TABLE ratings {}".format(ratings_table_def_fk) +load_data = "COPY INTO ratings FROM '{}' USING DELIMITERS ',','\n'".format(in_filename) c.execute(cmovies) c.execute(screateq) c.execute(load_data) +# Setup and start workers +def create_workers(fn_template, nworkers, cmovies, ratings_table_def_fk): +workers = [] +for i in range(nworkers): +workerport = freeport() +workerdbname = 'worker_{}'.format(i) +workerrec = { +'num': i, +'port': workerport, +'dbname': workerdbname, +'dbfarm': os.path.join(TMPDIR, workerdbname), +'mapi': 'mapi:monetdb://localhost:{}/{}/sys/ratings'.format(workerport, workerdbname), +} +workerrec['proc'] = process.server(mapiport=workerrec['port'], dbname=workerrec['dbname'], dbfarm=workerrec['dbfarm'], stdin=process.PIPE, stdout=process.PIPE) +workerrec['conn'] = pymonetdb.connect(database=workerrec['dbname'], port=workerport, autocommit=True) +filename = fn_template.format(workerrec['num']) +t = threading.Thread(target=worker_load, args=[filename, workerrec, cmovies, ratings_table_def_fk]) +t.start() +workerrec['loadthread'] = t +workers.append(workerrec) + +for wrec in workers: +wrec['loadthread'].join() + +return workers + +# Start supervisor database supervisorport = freeport() supervisorproc = process.server(mapiport=supervisorport, dbname="supervisor", dbfarm=os.path.join(TMPDIR, "supervisor"), stdin=process.PIPE, stdout=process.PIPE) supervisorconn = pymonetdb.connect(database='supervisor', port=supervisorport, autocommit=True) supervisor_uri = "mapi:monetdb://localhost:{}/supervisor".format(supervisorport) c = supervisorconn.cursor() +# Create the movies table and load the data movies_filename="$TSTDATAPATH/netflix_data/movies.csv" movies_create = "CREATE TABLE movies {}".format(MOVIES_TABLE_DEF) c.execute(movies_create) load_movies = "COPY INTO movies FROM '{}' USING DELIMITERS ',','\n','\"'".format(movies_filename) c.execute(load_movies) -# Setup and start workers -workers = [] -for i in range(NWORKERS): -workerport = freeport() -workerdbname = 'worker_{}'.format(i) -workerrec = { -'num': i, -'port': workerport, -'dbname': workerdbname, -'dbfarm': os.path.join(TMPDIR, workerdbname), -'mapi': 'mapi:monetdb://localhost:{}/{}/sys/ratings'.format(workerport, workerdbname), -} -workerrec['proc'] = process.server(mapiport=workerrec['port'], dbname=workerrec['dbname'], dbfarm=workerrec['dbfarm'], stdin=process.PIPE, stdout=process.PIPE) -workerrec['conn'] = pymonetdb.connect(database=workerrec['dbname'], port=workerport, autocommit=True) -t = threading.Thread(target=worker_load, args=[workerrec]) -t.start() -workerrec['loadthread'] = t -workers.append(workerrec) - -for wrec in workers: -wrec['loadthread'].join() - - +# Declare the ratings merge table on supervisor mtable = "CREATE MERGE TABLE ratings {}".format(RATINGS_TABLE_DEF) c.execute(mtable) +# Create the workers and load the ratings data +fn_template="$TSTDATAPATH/netflix_data/ratings_sample_{}.csv" +cmovies = "CREATE REMOTE TABLE movies {} ON '{}' WITH USER 'monetdb' PASSWORD 'monetdb'".format(MOVIES_TABLE_DEF, supervisor_uri) +workers =
MonetDB: remote_auth - Merge with default
Changeset: 207e2b432fb8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=207e2b432fb8 Added Files: sql/test/BugTracker-2018/Tests/multiple-count.Bug-6599.sql sql/test/BugTracker-2018/Tests/multiple-count.Bug-6599.stable.err sql/test/BugTracker-2018/Tests/multiple-count.Bug-6599.stable.out sql/test/Tests/copy-from-compressed.csv.bz2 sql/test/Tests/copy-from-compressed.csv.gz sql/test/Tests/copy-from-compressed.csv.raw sql/test/Tests/copy-from-compressed.csv.xz sql/test/Tests/copy-from-compressed.sql.in sql/test/Tests/copy-from-compressed.stable.err sql/test/Tests/copy-from-compressed.stable.out Modified Files: clients/mapiclient/dump.c common/stream/stream.c configure.ag sql/test/BugTracker-2018/Tests/All sql/test/Tests/All Branch: remote_auth Log Message: Merge with default diffs (truncated from 1121 to 300 lines): diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -1117,7 +1117,7 @@ describe_schema(Mapi mid, const char *sn MapiHdl hdl = NULL; char schemas[5120]; - snprintf(schemas, 5120, + snprintf(schemas, sizeof(schemas), "%s\n" "SELECT s.name, a.name, c.remark " "FROM sys.auths a, " diff --git a/common/stream/stream.c b/common/stream/stream.c --- a/common/stream/stream.c +++ b/common/stream/stream.c @@ -1630,7 +1630,18 @@ open_xzstream(const char *restrict filen strncmp(buf, UTF8BOM, UTF8BOMLENGTH) == 0) { s->isutf8 = 1; } else { - rewind(xz->fp); + FILE *fp = xz->fp; + lzma_ret ret; + lzma_end(>strm); + ret = lzma_stream_decoder(>strm, UINT64_MAX, LZMA_CONCATENATED); + if (ret != LZMA_OK) { + destroy(s); + free(xz); + fclose(fp); + return NULL; + } + rewind(fp); + xz->fp = fp; } } return s; diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -87,7 +87,7 @@ AS_VAR_IF([PKG_CONFIG], [], # need to be escapes with an extra \. Configure does not support \'s # in path names, so there is no need to do anything special here # except set the variables. The command to set them in case we do -# need to escape the \'s is Qvar=`echo "$var" | sed 's///g'` +# need to escape the \'s is Qvar=`AS_ECHO(["$var"]) | sed 's///g'` BUILD=[`pwd`] AC_SUBST([BUILD]) @@ -107,12 +107,12 @@ AS_VAR_IF([prefix], [NONE], [Qprefix="${ac_default_prefix}"]. [Qprefix="${prefix}"]) -Qprefix=`echo "$Qprefix" | sed 's///g'` +Qprefix=`AS_ECHO(["$Qprefix"]) | sed 's///g'` AC_SUBST([Qprefix]) # exec_prefix is created very late, so let make do the expansion AS_VAR_IF([exec_prefix], [NONE], [Qexec_prefix='${prefix}'], - [Qexec_prefix=`echo "$exec_prefix" | sed 's///g'`]) + [Qexec_prefix=`AS_ECHO(["$exec_prefix"]) | sed 's///g'`]) AC_SUBST([Qexec_prefix]) # small hack to get icc -no-gcc, done here because AC_PROG_CC shouldn't @@ -460,7 +460,7 @@ AS_CASE([$CC_version], [*'Sun Ceres C '*|*'Sun C '*], [ # developer/sunstudioexpress and # developer/sunstudio12u1 respectively - CC_ver="suncc-`echo "$CC_version" | sed -n 's/.*Sun Ceres C \(.*\) SunOS.*/\1/p;s/.*Sun C \(.*\) SunOS.*/\1/p'`" + CC_ver="suncc-`AS_ECHO(["$CC_version"]) | sed -n 's/.*Sun Ceres C \(.*\) SunOS.*/\1/p;s/.*Sun C \(.*\) SunOS.*/\1/p'`" CC_version="$CC_V"], [AC_MSG_WARN([compiler not recognized: `$CC --version` says @@ -499,7 +499,7 @@ AS_CASE([$host_os], AS_IF([test -s /etc/os-release], [ # this is the new way of getting release information # works for Fedora >= 17, Ubuntu >= 12.04 (Precise Pangolin) - LINUX_DIST=`source /etc/os-release; echo ${ID}:${VERSION_ID}`], + LINUX_DIST=`source /etc/os-release; AS_ECHO(["${ID}:${VERSION_ID}"])`], [test -s /etc/fedora-release ], [ LINUX_DIST=`cat /etc/fedora-release | head -n1 \ | sed 's|^.*\(Fedora\).* release \([[0-9]][[^ \n]]*\)\( .*\)*$|\1:\2|'`], @@ -529,7 +529,7 @@ AS_CASE([$host_os], [test -s /etc/debian_version ], [
MonetDB: Mar2018 - fixes for bugs 6594 and 6595
Changeset: 439cd2cddb4c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=439cd2cddb4c Added Files: sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-not-in.Bug-6594.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-not-in.Bug-6594.stable.out Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_statement.c sql/server/rel_exp.c sql/server/rel_optimizer.c sql/server/rel_optimizer.h sql/server/rel_select.c sql/server/rel_updates.c sql/test/Dependencies/Tests/Dependencies.stable.out sql/test/Dependencies/Tests/Dependencies.stable.out.int128 sql/test/Tests/systemfunctions.stable.out sql/test/Tests/systemfunctions.stable.out.int128 Branch: Mar2018 Log Message: fixes for bugs 6594 and 6595 6595, disabled optimizers based on arguments (A...) as these are passed after the optimizer is run Also approved output after recent changes on system functions diffs (truncated from 1150 to 300 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -2941,7 +2941,7 @@ sql_parse(backend *be, sql_allocator *sa sql_rel *r = rel_semantic(m, m->sym); if (r) { - r = rel_optimizer(m, r); + r = rel_optimizer(m, r, 1); sq = rel_bin(be, r); } } diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -119,7 +119,7 @@ sql_symbol2relation(mvc *c, symbol *sym) if (!r) return NULL; if (r) { - r = rel_optimizer(c, r); + r = rel_optimizer(c, r, 1); r = rel_distribute(c, r); r = rel_partition(c, r); if (rel_no_mitosis(r) || rel_need_distinct_query(r)) @@ -358,7 +358,7 @@ create_table_or_view(mvc *sql, char *sna throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); r = rel_parse(sql, s, nt->query, m_deps); if (r) - r = rel_optimizer(sql, r); + r = rel_optimizer(sql, r, 0); if (r) { list *id_l = rel_dependencies(sql->sa, r); 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 @@ -217,7 +217,7 @@ create_trigger(mvc *sql, char *sname, ch throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); r = rel_parse(sql, s, buf, m_deps); if (r) - r = rel_optimizer(sql, r); + r = rel_optimizer(sql, r, 0); if (r) { list *id_l = rel_dependencies(sql->sa, r); @@ -549,7 +549,7 @@ create_func(mvc *sql, char *sname, char throw(SQL, "sql.catalog",SQLSTATE(HY001) MAL_MALLOC_FAIL); r = rel_parse(sql, s, buf, m_deps); if (r) - r = rel_optimizer(sql, r); + r = rel_optimizer(sql, r, 0); if (r) { node *n; list *id_l = rel_dependencies(sql->sa, r); diff --git a/sql/backends/monet5/sql_execute.c b/sql/backends/monet5/sql_execute.c --- a/sql/backends/monet5/sql_execute.c +++ b/sql/backends/monet5/sql_execute.c @@ -846,7 +846,7 @@ RAstatement(Client c, MalBlkPtr mb, MalS int oldstop = c->curprg->def->stop; if (*opt) - rel = rel_optimizer(m, rel); + rel = rel_optimizer(m, rel, 0); if ((msg = MSinitClientPrg(c, "user", "test")) != MAL_SUCCEED) { rel_destroy(rel); @@ -957,7 +957,7 @@ RAstatement2(Client cntxt, MalBlkPtr mb, rel = rel_read(m, *expr, , refs); stack_pop_frame(m); if (rel) - rel = rel_optimizer(m, rel); + rel = rel_optimizer(m, rel, 0); if (!rel || monet5_create_relational_function(m, *mod, *nme, rel, NULL, ops, 0) < 0) throw(SQL, "sql.register", SQLSTATE(42000) "Cannot register %s", buf); rel_destroy(rel); 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 @@ -968,7 +968,7 @@ backend_create_sql_func(backend *be, sql f->sql++; r = rel_parse(m, f->s, f->query, m_instantiate); if (r) { - r = rel_optimizer(m, r); +
MonetDB: viewless - merge with batcalc-candidates
Changeset: 2c0a12dda430 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2c0a12dda430 Added Files: common/utils/ChangeLog-Archive common/utils/ChangeLog.Mar2018 debian/libmonetdb-client10.install debian/libmonetdb-stream11.install debian/libmonetdb16.install sql/test/BugTracker-2018/Tests/concat-str-int.Bug-6583.sql sql/test/BugTracker-2018/Tests/concat-str-int.Bug-6583.stable.err sql/test/BugTracker-2018/Tests/concat-str-int.Bug-6583.stable.out sql/test/BugTracker-2018/Tests/create-temp-table-ordered-index-error.Bug-6574.sql sql/test/BugTracker-2018/Tests/create-temp-table-ordered-index-error.Bug-6574.stable.err sql/test/BugTracker-2018/Tests/create-temp-table-ordered-index-error.Bug-6574.stable.out sql/test/BugTracker-2018/Tests/multiple-insertinto-table-Bug-6578.sql sql/test/BugTracker-2018/Tests/multiple-insertinto-table-Bug-6578.stable.err sql/test/BugTracker-2018/Tests/multiple-insertinto-table-Bug-6578.stable.out sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.sql sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.err sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.out sql/test/BugTracker-2018/Tests/ordered-index-error.Bug-6572.sql sql/test/BugTracker-2018/Tests/ordered-index-error.Bug-6572.stable.err sql/test/BugTracker-2018/Tests/ordered-index-error.Bug-6572.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128 sql/test/BugTracker-2018/Tests/sqlitelogictest-case-coalesce.Bug-6550.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-case-coalesce.Bug-6550.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-case-coalesce.Bug-6550.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-case-not-in-count.Bug-6587.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-case-not-in-count.Bug-6587.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-case-not-in-count.Bug-6587.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-coalesce-division-by-zero.Bug-6556.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-coalesce-division-by-zero.Bug-6556.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-coalesce-division-by-zero.Bug-6556.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-coalesce-division-by-zero.Bug-6556.stable.out.int128 sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-extra-columns.Bug-6555.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-extra-columns.Bug-6555.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-extra-columns.Bug-6555.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6552.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6552.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6552.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6568.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6568.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6568.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6573.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6573.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6573.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-expression.Bug-6589.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-expression.Bug-6589.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-expression.Bug-6589.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.stable.err sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.stable.out.int128