MonetDB: stratified_sampling - Approve tests.
Changeset: 9ff1a0391c9c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9ff1a0391c9c Added Files: sql/backends/monet5/Tests/sample00.stable.err sql/backends/monet5/Tests/sample00.stable.out sql/backends/monet5/Tests/sample01.stable.err sql/backends/monet5/Tests/sample01.stable.out sql/backends/monet5/Tests/sample02.stable.err sql/backends/monet5/Tests/sample02.stable.out sql/backends/monet5/Tests/sample03.stable.err sql/backends/monet5/Tests/sample03.stable.out sql/backends/monet5/Tests/sample05.stable.err sql/backends/monet5/Tests/sample05.stable.out Modified Files: sql/backends/monet5/Tests/All Branch: stratified_sampling Log Message: Approve tests. diffs (truncated from 613 to 300 lines): diff --git a/sql/backends/monet5/Tests/All b/sql/backends/monet5/Tests/All --- a/sql/backends/monet5/Tests/All +++ b/sql/backends/monet5/Tests/All @@ -1,5 +1,12 @@ optimizers +sample00 +sample01 +sample02 +sample03 +sample04 +HAVE_LIBPY?sample05 + HAVE_LIBR&NOT_WIN32?rapi00 HAVE_LIBR&NOT_WIN32?rapi01 HAVE_LIBR&NOT_WIN32?rapi02 diff --git a/sql/backends/monet5/Tests/sample00.stable.err b/sql/backends/monet5/Tests/sample00.stable.err new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/sample00.stable.err @@ -0,0 +1,34 @@ +stderr of test 'sample00` in directory 'sql/backends/monet5` itself: + + +# 17:16:50 > +# 17:16:50 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=30118" "--set" "mapi_usock=/var/tmp/mtest-15360/.s.monetdb.30118" "--set" "monet_prompt=" "--forcemito" "--dbpath=/Users/myth/opt/var/MonetDB/mTests_sql_backends_monet5" +# 17:16:50 > + +# builtin opt gdk_dbpath = /Users/myth/opt/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 = 30118 +# cmdline opt mapi_usock = /var/tmp/mtest-15360/.s.monetdb.30118 +# cmdline opt monet_prompt = +# cmdline opt gdk_dbpath = /Users/myth/opt/var/MonetDB/mTests_sql_backends_monet5 +# cmdline opt gdk_debug = 536870922 + +# 17:16:50 > +# 17:16:50 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-15360" "--port=30118" +# 17:16:50 > + + +# 17:16:50 > +# 17:16:50 > "Done." +# 17:16:50 > + diff --git a/sql/backends/monet5/Tests/sample00.stable.out b/sql/backends/monet5/Tests/sample00.stable.out new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/sample00.stable.out @@ -0,0 +1,64 @@ +stdout of test 'sample00` in directory 'sql/backends/monet5` itself: + + +# 17:16:50 > +# 17:16:50 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=30118" "--set" "mapi_usock=/var/tmp/mtest-15360/.s.monetdb.30118" "--set" "monet_prompt=" "--forcemito" "--dbpath=/Users/myth/opt/var/MonetDB/mTests_sql_backends_monet5" +# 17:16:50 > + +# MonetDB 5 server v11.28.0 +# This is an unreleased version +# Serving database 'mTests_sql_backends_monet5', using 4 threads +# Compiled for x86_64-apple-darwin15.6.0/64bit with 128bit integers +# Found 8.000 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2017 MonetDB B.V., all rights reserved +# Visit https://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://dhcp-21.eduroam.cwi.nl:30118/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-15360/.s.monetdb.30118 +# MonetDB/SQL module loaded + +Ready. + +# 17:16:50 > +# 17:16:50 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-15360" "--port=30118" +# 17:16:50 > + +#START TRANSACTION; +#CREATE TABLE vals(w DOUBLE, value INTEGER); +#INSERT INTO vals VALUES (1, 100), (0, 50); +[ 2] +#SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; +% sys.vals,sys.vals # table_name +% w, value # name +% double, int # type +% 24, 3 # length +[ 1, 100 ] +#SELECT * FROM vals SAMPLE 0.5 USING WEIGHTS w; +% sys.vals,sys.vals # table_name +% w, value # name +% double, int # type +% 24, 3 # length +[ 1, 100 ] +#SELECT * FROM vals SAMPLE 0.5 USING WEIGHTS (1 - w); +% sys.vals,sys.vals # table_name +% w, value # name +% double, int # type +% 24, 2 # length +[ 0, 50 ] +#ROLLBACK; +#START TRANSACTION; +#CREATE TABLE vals(w DECIMAL(10,3), value INTEGER); +#INSERT INTO vals VALUES (10.77, 100), (0, 50); +[ 2] +#SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; +% sys.vals,sys.vals # table_name +% w, value # name +% decimal, int # type +% 12, 3 # length +[ 10.770, 100
MonetDB: stratified_sampling - Don't optimize away columns that ...
Changeset: 67bddbf2ee39 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=67bddbf2ee39 Modified Files: gdk/gdk_sample.c sql/backends/monet5/Tests/sample00.sql sql/backends/monet5/Tests/sample01.sql sql/backends/monet5/Tests/sample02.sql sql/backends/monet5/Tests/sample03.sql sql/server/rel_optimizer.c sql/server/rel_rel.c sql/server/rel_select.c Branch: stratified_sampling Log Message: Don't optimize away columns that we need. diffs (198 lines): diff --git a/gdk/gdk_sample.c b/gdk/gdk_sample.c --- a/gdk/gdk_sample.c +++ b/gdk/gdk_sample.c @@ -255,6 +255,8 @@ BATweightedsample(BAT *b, BUN n, BAT *w) oid minoid = b->hseqbase; + ERRORcheck(n > BATcount(b), "BATsample: Sample size bigger than table!", NULL); + BATcheck(b, "BATsample", NULL); BATcheck(w, "BATsample", NULL); @@ -312,6 +314,10 @@ BATweightedsample(BAT *b, BUN n, BAT *w) } oids[i] = (oid)(j + minoid); keys[i] = pow(mtwist_drand(mt_rng), 1.0 / w_ptr[j]);//TODO cast 1.0 to dbl? + if (keys[i] == 1) { + GDKerror("BATsample: weight overflow\n"); + goto bailout; + } i++; } diff --git a/sql/backends/monet5/Tests/sample00.sql b/sql/backends/monet5/Tests/sample00.sql --- a/sql/backends/monet5/Tests/sample00.sql +++ b/sql/backends/monet5/Tests/sample00.sql @@ -2,7 +2,6 @@ START TRANSACTION; CREATE TABLE vals(w DOUBLE, value INTEGER); - INSERT INTO vals VALUES (1, 100), (0, 50); SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; @@ -15,7 +14,6 @@ ROLLBACK; START TRANSACTION; CREATE TABLE vals(w DECIMAL(10,3), value INTEGER); - INSERT INTO vals VALUES (10.77, 100), (0, 50); SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; diff --git a/sql/backends/monet5/Tests/sample01.sql b/sql/backends/monet5/Tests/sample01.sql --- a/sql/backends/monet5/Tests/sample01.sql +++ b/sql/backends/monet5/Tests/sample01.sql @@ -5,7 +5,8 @@ CREATE TABLE vals(id DOUBLE, type INTEGE INSERT INTO vals VALUES (1, 100), (0, 50); -SELECT type, COUNT(*) FROM vals GROUP BY type SAMPLE 1 USING WEIGHTS cast(id AS double); +plan SELECT type FROM vals GROUP BY type SAMPLE 1 USING WEIGHTS id; +SELECT type FROM vals GROUP BY type SAMPLE 1 USING WEIGHTS id; ROLLBACK; diff --git a/sql/backends/monet5/Tests/sample02.sql b/sql/backends/monet5/Tests/sample02.sql --- a/sql/backends/monet5/Tests/sample02.sql +++ b/sql/backends/monet5/Tests/sample02.sql @@ -6,7 +6,7 @@ CREATE TABLE vals(id DOUBLE, type INTEGE INSERT INTO vals VALUES (1, 100), (0, 50); -SELECT SUM(id) FROM vals SAMPLE 1 USING WEIGHTS cast(type AS double); +SELECT SUM(id) FROM vals SAMPLE 1 USING WEIGHTS id; ROLLBACK; diff --git a/sql/backends/monet5/Tests/sample03.sql b/sql/backends/monet5/Tests/sample03.sql --- a/sql/backends/monet5/Tests/sample03.sql +++ b/sql/backends/monet5/Tests/sample03.sql @@ -8,6 +8,15 @@ INSERT INTO vals VALUES (1, 100), (-1, 5 SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; +ROLLBACK; + +# fewer weights are non-zero than size of sample +START TRANSACTION; + +CREATE TABLE vals(w DOUBLE, value INTEGER); +INSERT INTO vals VALUES (1, 100), (0, 50); + +SELECT * FROM vals SAMPLE 2 USING WEIGHTS w; ROLLBACK; @@ -20,3 +29,45 @@ INSERT INTO vals VALUES ('#1 sample', 10 SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; ROLLBACK; + +# sample size bigger than amount of elements +START TRANSACTION; + +CREATE TABLE vals(w DOUBLE, value INTEGER); +INSERT INTO vals VALUES (1, 100), (1, 50); + +SELECT * FROM vals SAMPLE 10 USING WEIGHTS w; + +ROLLBACK; + +# weight overflow +START TRANSACTION; + +CREATE TABLE vals(w DOUBLE, value INTEGER); +INSERT INTO vals VALUES (1.7976931348623157E+306, 100), (0, 50); + +SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; + +ROLLBACK; + +# intigus maximus +START TRANSACTION; + +CREATE TABLE vals(w DOUBLE, value INTEGER); +INSERT INTO vals VALUES (1, 100), (0, 50); + + +SELECT * FROM vals SAMPLE 18446744073709551617 USING WEIGHTS w; + +ROLLBACK; + +# biggus samplus +START TRANSACTION; + +CREATE TABLE vals(w DOUBLE, value INTEGER); +INSERT INTO vals VALUES (1, 100), (0, 50); + + +SELECT * FROM vals SAMPLE 2147483648 USING WEIGHTS w; + +ROLLBACK; diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -5783,8 +5783,13 @@ rel_mark_used(mvc *sql, sql_rel *rel, in } break; + case op_sample: + if (rel->exps->cnt == 2) { + // weighted sample + exps_mark_used(sql->sa, rel, rel->l); + } + /* fall through */ case op_topn: - case op_sample: if (proj) { rel = rel ->l; rel_mark_used(sql, rel, proj); diff --git a/sql/server/rel_rel.
MonetDB: stratified_sampling - Correctly check for negative weig...
Changeset: 097357023ff2 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=097357023ff2 Modified Files: gdk/gdk_sample.c Branch: stratified_sampling Log Message: Correctly check for negative weights in weighted sample. diffs (73 lines): diff --git a/gdk/gdk_sample.c b/gdk/gdk_sample.c --- a/gdk/gdk_sample.c +++ b/gdk/gdk_sample.c @@ -242,12 +242,12 @@ BATsample(BAT *b, BUN n) BAT * BATweightedsample(BAT *b, BUN n, BAT *w) {//TODO test correctness extensively - BAT* weights; - bit weights_are_cast; - BAT* sample; - oid* oids;/* points to the oids in sample */ - dbl* w_ptr;//TODO types of w - dbl* keys;/* keys as defined in Alg-A-exp */ + BAT* weights = NULL; + bit weights_are_cast = 0; + BAT* sample = NULL; + oid* oids = NULL; /* points to the oids in sample */ + dbl* w_ptr = NULL; //TODO types of w + dbl* keys = NULL; /* keys as defined in Alg-A-exp */ BUN cnt, i, j; BUN pos, childpos; oid item; @@ -298,20 +298,20 @@ BATweightedsample(BAT *b, BUN n, BAT *w) } BATsetcount(sample, n); - /* obtain sample */ + /* obtain sample */ /* Initialize prioqueue */ - i=0;/* i indices the initial sample (filled with elements with non-zero weight) */ - /* j indices the oids and weights */ - for(j=0; i < n && j < cnt; j++) { + i = 0; /* i indices the initial sample (filled with elements with non-zero weight) */ + /* j indices the oids and weights */ + for(j = 0; i < n && j < cnt; j++) { if(w_ptr[j] == 0.0) continue; if(w_ptr[j] < 0.0) { GDKerror("BATsample: w contains negative weights\n"); goto bailout; } - oids[i] = (oid)(j+minoid); - keys[i] = pow(mtwist_drand(mt_rng),1.0/w_ptr[j]);//TODO cast 1.0 to dbl? + oids[i] = (oid)(j + minoid); + keys[i] = pow(mtwist_drand(mt_rng), 1.0 / w_ptr[j]);//TODO cast 1.0 to dbl? i++; } @@ -325,8 +325,13 @@ BATweightedsample(BAT *b, BUN n, BAT *w) while(true) { r = mtwist_drand(mt_rng); xw = log(r)/log(keys[0]); - for(;j= w_ptr[j]; j++) + for(; j < cnt && xw >= w_ptr[j]; j++) { + if(w_ptr[j] < 0.0) { + GDKerror("BATsample: w contains negative weights\n"); + goto bailout; + } xw -= w_ptr[j]; + } if(j >= cnt) break; /* At this point: @@ -358,7 +363,7 @@ BATweightedsample(BAT *b, BUN n, BAT *w) return sample; - bailout: +bailout: if(weights_are_cast && weights)//if weights where converted, delete converted BAT BBPunfix(weights->batCacheid); if(keys) ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: stratified_sampling - Remove old code.
Changeset: 189631c86054 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=189631c86054 Removed Files: sql/backends/monet5/sample/80_sample.sql sql/backends/monet5/sample/Makefile.ag sql/backends/monet5/sample/Tests/All sql/backends/monet5/sample/Tests/weightedsample.sql sql/backends/monet5/sample/sample.c sql/backends/monet5/sample/sample.h Modified Files: sql/backends/monet5/Makefile.ag Branch: stratified_sampling Log Message: Remove old code. diffs (168 lines): diff --git a/sql/backends/monet5/Makefile.ag b/sql/backends/monet5/Makefile.ag --- a/sql/backends/monet5/Makefile.ag +++ b/sql/backends/monet5/Makefile.ag @@ -4,7 +4,7 @@ # # Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V. -SUBDIRS = NOT_WIN32?vaults UDF LSST generator sample +SUBDIRS = NOT_WIN32?vaults UDF LSST generator INCLUDES = ../../include ../../common ../../storage ../../server \ ../../../monetdb5/modules/atoms \ diff --git a/sql/backends/monet5/sample/80_sample.sql b/sql/backends/monet5/sample/80_sample.sql deleted file mode 100644 --- a/sql/backends/monet5/sample/80_sample.sql +++ /dev/null @@ -1,13 +0,0 @@ --- This Source Code Form is subject to the terms of the Mozilla Public --- License, v. 2.0. If a copy of the MPL was not distributed with this --- file, You can obtain one at http://mozilla.org/MPL/2.0/. --- --- Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. - --- add function signatures to SQL catalog - - --- Reverse a string -create function weighted_sample(src double, cnt bigint) -returns boolean external name libsample.weighted_sample;--TODO possibly nolibsample - diff --git a/sql/backends/monet5/sample/Makefile.ag b/sql/backends/monet5/sample/Makefile.ag deleted file mode 100644 --- a/sql/backends/monet5/sample/Makefile.ag +++ /dev/null @@ -1,36 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. - -INCLUDES = .. \ -../../../include \ - ../../../common \ - ../../../storage \ - ../../../server \ - ../../../../monetdb5/modules/atoms \ - ../../../../monetdb5/modules/kernel \ - ../../../../monetdb5/mal \ - ../../../../monetdb5/modules/mal \ - ../../../../monetdb5/optimizer \ - ../../../../common/options \ - ../../../../common/stream \ - ../../../../gdk - -lib__sample = { - MODULE - DIR = libdir/monetdb5 - SOURCES = sample.c sample.h sample_impl.h - LIBS = ../../../../monetdb5/tools/libmonetdb5 \ - ../../../../gdk/libbat -} - -headers_sql = { - HEADERS = sql - DIR = libdir/monetdb5/createdb - SOURCES = 80_sample.sql -} - -EXTRA_DIST_DIR = Tests - diff --git a/sql/backends/monet5/sample/Tests/All b/sql/backends/monet5/sample/Tests/All deleted file mode 100644 --- a/sql/backends/monet5/sample/Tests/All +++ /dev/null @@ -1,1 +0,0 @@ -weightedsample diff --git a/sql/backends/monet5/sample/Tests/weightedsample.sql b/sql/backends/monet5/sample/Tests/weightedsample.sql deleted file mode 100644 --- a/sql/backends/monet5/sample/Tests/weightedsample.sql +++ /dev/null @@ -1,9 +0,0 @@ -set optimizer = 'sequential_pipe'; --- ADD FLAG TO DISALLOW PARALLELIZATION (MITOSIS) FOR weighted_sample -CREATE TABLE wsample (i INTEGER, weights DOUBLE); -INSERT INTO wsample VALUES (1, 1), (2, 1), (3, 1), (4, 1), (5, 1); - - -explain SELECT i FROM wsample WHERE weighted_sample(weights, 2); -SELECT i FROM wsample WHERE weighted_sample(weights, 2); - diff --git a/sql/backends/monet5/sample/sample.c b/sql/backends/monet5/sample/sample.c deleted file mode 100644 --- a/sql/backends/monet5/sample/sample.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. - */ - -/* monetdb_config.h must be the first include in each .c file */ - -#include "monetdb_config.h" -#include "sample.h" - -#ifdef notdefined //!!!TODO - -/* MAL wrapper */ -char * -UDFBATweightedsample(bat *ret, const bat *arg, const lng *cnt) -{//bat = identifier, BAT is actual bat, BATdescriptor turns ID into BAT - BAT *res = NULL, *src = NULL; - char *msg = NULL; - - /* assert calling sanity */ - assert(ret != NULL && arg != NULL); - - /* bat-id -> BAT-descriptor */ - if ((src = BATdescriptor(*arg)) == NULL) - throw(MAL, "batudf.reverse", RUNTIME_OBJECT_MISSING); - printf("Count: %lld\n", *cnt); - - //TODO Type checking - /* do the work */ - //msg = UDFBATreverse_ ( &res, src
MonetDB: stratified_sampling - Add some testcases.
Changeset: 4c81f2dca357 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4c81f2dca357 Added Files: sql/backends/monet5/Tests/sample00.sql sql/backends/monet5/Tests/sample01.sql sql/backends/monet5/Tests/sample02.sql sql/backends/monet5/Tests/sample03.sql Branch: stratified_sampling Log Message: Add some testcases. diffs (88 lines): diff --git a/sql/backends/monet5/Tests/sample00.sql b/sql/backends/monet5/Tests/sample00.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/sample00.sql @@ -0,0 +1,23 @@ + +START TRANSACTION; + +CREATE TABLE vals(w DOUBLE, value INTEGER); + +INSERT INTO vals VALUES (1, 100), (0, 50); + +SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; +SELECT * FROM vals SAMPLE 0.5 USING WEIGHTS w; +SELECT * FROM vals SAMPLE 0.5 USING WEIGHTS (1 - w); + +ROLLBACK; + +# different types of weights +START TRANSACTION; + +CREATE TABLE vals(w DECIMAL(10,3), value INTEGER); + +INSERT INTO vals VALUES (10.77, 100), (0, 50); + +SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; + +ROLLBACK; diff --git a/sql/backends/monet5/Tests/sample01.sql b/sql/backends/monet5/Tests/sample01.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/sample01.sql @@ -0,0 +1,11 @@ + +START TRANSACTION; + +CREATE TABLE vals(id DOUBLE, type INTEGER); + +INSERT INTO vals VALUES (1, 100), (0, 50); + +SELECT type, COUNT(*) FROM vals GROUP BY type SAMPLE 1 USING WEIGHTS cast(id AS double); + +ROLLBACK; + diff --git a/sql/backends/monet5/Tests/sample02.sql b/sql/backends/monet5/Tests/sample02.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/sample02.sql @@ -0,0 +1,12 @@ + + +START TRANSACTION; + +CREATE TABLE vals(id DOUBLE, type INTEGER); + +INSERT INTO vals VALUES (1, 100), (0, 50); + +SELECT SUM(id) FROM vals SAMPLE 1 USING WEIGHTS cast(type AS double); + +ROLLBACK; + diff --git a/sql/backends/monet5/Tests/sample03.sql b/sql/backends/monet5/Tests/sample03.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/sample03.sql @@ -0,0 +1,22 @@ +# test various error conditions + +# negative weights +START TRANSACTION; + +CREATE TABLE vals(w DOUBLE, value INTEGER); +INSERT INTO vals VALUES (1, 100), (-1, 50); + +SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; + + +ROLLBACK; + +# string weights +START TRANSACTION; + +CREATE TABLE vals(w STRING, value INTEGER); +INSERT INTO vals VALUES ('#1 sample', 100), ('#2 sample', 50); + +SELECT * FROM vals SAMPLE 1 USING WEIGHTS w; + +ROLLBACK; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Dec2016 - Merged changes
Changeset: 0c5be55fdb18 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0c5be55fdb18 Modified Files: sql/server/rel_dump.c sql/storage/store.c sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128 sql/test/BugTracker-2013/Tests/rangejoin_optimizer.Bug-3411.stable.out sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out sql/test/BugTracker-2015/Tests/large_join.Bug-3809.stable.out sql/test/BugTracker-2015/Tests/quantile_function_resolution.Bug-3773.stable.out sql/test/BugTracker-2015/Tests/schema_view.Bug-3708.stable.out sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/Tests/order_by_complex_exp.stable.out sql/test/leaks/Tests/check1.stable.out.int128 sql/test/mergetables/Tests/part-elim.stable.out Branch: Dec2016 Log Message: Merged changes diffs (truncated from 1986 to 300 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -157,8 +157,8 @@ exp_print(mvc *sql, stream *fout, sql_ex } break; case e_column: if (e->l) - mnstr_printf(fout, "%s.", (char*)e->l); - mnstr_printf(fout, "%s", (char*)e->r); + mnstr_printf(fout, "\"%s\".", (char*)e->l); + mnstr_printf(fout, "\"%s\"", (char*)e->r); if (e->rname && e->name && e->l && e->r && strcmp(e->rname, e->l) == 0 && strcmp(e->name, e->r) == 0) @@ -224,8 +224,8 @@ exp_print(mvc *sql, stream *fout, sql_ex if (e->name && alias) { mnstr_printf(fout, " as "); if (e->rname) - mnstr_printf(fout, "%s.", e->rname); - mnstr_printf(fout, "%s", e->name); + mnstr_printf(fout, "\"%s\".", e->rname); + mnstr_printf(fout, "\"%s\"", e->name); } if (comma) mnstr_printf(fout, ", "); @@ -588,13 +588,22 @@ skipWS( char *r, int *pos) static void skipIdent( char *r, int *pos) { - while(r[*pos] && (isalnum(r[*pos]) || r[*pos] == '_' || r[*pos] == '%')) + if (r[*pos] == '"') { (*pos)++; + while(r[*pos] && r[*pos] != '"') + (*pos)++; + (*pos)++; + } else { + while(r[*pos] && (isalnum(r[*pos]) || r[*pos] == '_' || r[*pos] == '%')) + (*pos)++; + } } static void skipIdentOrSymbol( char *r, int *pos) { + if (r[*pos] == '"') + return skipIdent(r, pos); while(r[*pos] && (isalnum(r[*pos]) || r[*pos] == '_' || r[*pos] == '%' || r[*pos] == '<' || r[*pos] == '>' || @@ -720,30 +729,32 @@ static sql_exp* exp_read(mvc *sql, sql_rel *lrel, sql_rel *rrel, list *pexps, char *r, int *pos, int grp) { int f = -1; - int not = 1, old, d=0, s=0, unique = 0, no_nils = 0; + int not = 1, old, d=0, s=0, unique = 0, no_nils = 0, quote = 0; char *tname, *cname = NULL, *e, *b = r + *pos, *st; sql_exp *exp = NULL; list *exps = NULL; sql_subtype *tpe; + quote = (r[*pos] == '"'); + b += quote; skipIdent(r, pos); - e = r+*pos; + e = r+*pos-quote; skipWS(r, pos); switch(r[*pos]) { - /* ident */ case '.': *e = 0; (*pos)++; tname = b; - cname = r + *pos; + cname = r + *pos + quote; skipIdentOrSymbol(r, pos); - e = r+*pos; - skipWS(r, pos); + e = r+*pos - quote; old = *e; *e = 0; tname = sa_strdup(sql->sa, tname); cname = sa_strdup(sql->sa, cname); + *e = old; + skipWS(r, pos); if (pexps) exp = exps_bind_column2(pexps, tname, cname); if (!exp && lrel) { @@ -753,7 +764,6 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re } else if (!exp) { exp = exp_column(sql->sa, tname, cname, NULL, CARD_ATOM, 1, (strchr(cname,'%') != NULL));
MonetDB: Dec2016 - Approved ouput
Changeset: 955f7a5b847c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=955f7a5b847c Added Files: sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.out Branch: Dec2016 Log Message: Approved ouput diffs (148 lines): diff --git a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err @@ -0,0 +1,41 @@ +stderr of test 'default-insert-update.Bug-6249` in directory 'sql/test/BugTracker-2017` itself: + + +# 11:11:43 > +# 11:11:43 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=39704" "--set" "mapi_usock=/var/tmp/mtest-21586/.s.monetdb.39704" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/ferreira/MonetDB-Dec2016/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2017" +# 11:11:43 > + +# builtin opt gdk_dbpath = /home/ferreira/MonetDB-Dec2016/BUILD/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 = 39704 +# cmdline opt mapi_usock = /var/tmp/mtest-21586/.s.monetdb.39704 +# cmdline opt monet_prompt = +# cmdline opt gdk_dbpath = /home/ferreira/MonetDB-Dec2016/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2017 +# cmdline opt gdk_debug = 536870922 + +# 11:11:43 > +# 11:11:43 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-21586" "--port=39704" +# 11:11:43 > + +MAPI = (monetdb) /var/tmp/mtest-21586/.s.monetdb.39704 +QUERY = INSERT INTO test2 VALUES (1, 'a', DEFAULT, 'a'); --throw an error +ERROR = !INSERT INTO: column 'c' has no valid default value +MAPI = (monetdb) /var/tmp/mtest-23398/.s.monetdb.31464 +QUERY = UPDATE test2 SET b = DEFAULT; --throw an error +ERROR = !UPDATE: column 'b' has no valid default value + + +# 11:11:43 > +# 11:11:43 > "Done." +# 11:11:43 > + diff --git a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.out b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.out @@ -0,0 +1,97 @@ +stdout of test 'default-insert-update.Bug-6249` in directory 'sql/test/BugTracker-2017` itself: + + +# 11:11:43 > +# 11:11:43 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=39704" "--set" "mapi_usock=/var/tmp/mtest-21586/.s.monetdb.39704" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/ferreira/MonetDB-Dec2016/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2017" +# 11:11:43 > + +# MonetDB 5 server v11.25.24 +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2017', using 8 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers +# Found 15.499 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2017 MonetDB B.V., all rights reserved +# Visit http://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://dhcp-120.eduroam.cwi.nl:39704/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-21586/.s.monetdb.39704 +# MonetDB/GIS module loaded +# MonetDB/SQL module loaded + +Ready. + +# 11:11:43 > +# 11:11:43 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-21586" "--port=39704" +# 11:11:43 > + +#CREATE TABLE test1 (a INT DEFAULT -1); +#INSERT INTO test1 VALUES (1); +[ 1] +#INSERT INTO test1 VALUES (DEFAULT); +[ 1] +#INSERT INTO test1 VALUES (2), (DEFAULT), (3), (DEFAULT), (4); +[ 5] +#SELECT * FROM test1; +% sys.test1 # table_name +% a # name +% int # type +% 2 # length +[ 1] +[ -1 ] +[ 2] +[ -1 ] +[ 3] +[ -1 ] +[ 4] +#UPDATE test1 SET a = DEFAULT WHERE a = 4; +[ 1] +#SELECT * FROM test1; +% sys.test1 # table_name +% a # name +% int # type +% 2 # length +[ 1] +[ -1 ] +[ 2] +[ -1 ] +[ 3] +[ -1 ] +[ -1 ] +#DROP TABLE test1; +#CREATE TABLE test2 (a INT DEFAULT 0, b CLOB, c INT, d CLOB DEFAULT 'astring'); +#INSERT INTO test2 VALUES (1, 'a', 1, 'a'); +[ 1] +#INSERT INTO test2 VALUES (DEFAULT, 'a', 1, DEFAULT); +[ 1] +#INSERT INTO test2 VALUES (2, 'b', 2, 'b'), (100, 'other', -1, DEFAULT), (3, 'c', 3, 'c'), (DEFAULT, 'd', 4, 'd'); +[ 4] +#SELECT * FROM test2; +% sys.test2, sys.test2, sys.test2, sys.test2 # table_name +% a, b, c,
MonetDB: Dec2016 - quote identifiers in relational plan output (...
Changeset: 5aa1c0ab39a2 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5aa1c0ab39a2 Modified Files: sql/server/rel_dump.c sql/storage/store.c sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128 sql/test/BugTracker-2013/Tests/rangejoin_optimizer.Bug-3411.stable.out sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out sql/test/BugTracker-2015/Tests/large_join.Bug-3809.stable.out sql/test/BugTracker-2015/Tests/quantile_function_resolution.Bug-3773.stable.out sql/test/BugTracker-2015/Tests/schema_view.Bug-3708.stable.out sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/Tests/order_by_complex_exp.stable.out sql/test/leaks/Tests/check1.stable.out.int128 sql/test/mergetables/Tests/part-elim.stable.out Branch: Dec2016 Log Message: quote identifiers in relational plan output (also used for shipping remote queries). Fixes problems with quoted identifiers in remote columns. diffs (truncated from 1986 to 300 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -157,8 +157,8 @@ exp_print(mvc *sql, stream *fout, sql_ex } break; case e_column: if (e->l) - mnstr_printf(fout, "%s.", (char*)e->l); - mnstr_printf(fout, "%s", (char*)e->r); + mnstr_printf(fout, "\"%s\".", (char*)e->l); + mnstr_printf(fout, "\"%s\"", (char*)e->r); if (e->rname && e->name && e->l && e->r && strcmp(e->rname, e->l) == 0 && strcmp(e->name, e->r) == 0) @@ -224,8 +224,8 @@ exp_print(mvc *sql, stream *fout, sql_ex if (e->name && alias) { mnstr_printf(fout, " as "); if (e->rname) - mnstr_printf(fout, "%s.", e->rname); - mnstr_printf(fout, "%s", e->name); + mnstr_printf(fout, "\"%s\".", e->rname); + mnstr_printf(fout, "\"%s\"", e->name); } if (comma) mnstr_printf(fout, ", "); @@ -588,13 +588,22 @@ skipWS( char *r, int *pos) static void skipIdent( char *r, int *pos) { - while(r[*pos] && (isalnum(r[*pos]) || r[*pos] == '_' || r[*pos] == '%')) + if (r[*pos] == '"') { (*pos)++; + while(r[*pos] && r[*pos] != '"') + (*pos)++; + (*pos)++; + } else { + while(r[*pos] && (isalnum(r[*pos]) || r[*pos] == '_' || r[*pos] == '%')) + (*pos)++; + } } static void skipIdentOrSymbol( char *r, int *pos) { + if (r[*pos] == '"') + return skipIdent(r, pos); while(r[*pos] && (isalnum(r[*pos]) || r[*pos] == '_' || r[*pos] == '%' || r[*pos] == '<' || r[*pos] == '>' || @@ -720,30 +729,32 @@ static sql_exp* exp_read(mvc *sql, sql_rel *lrel, sql_rel *rrel, list *pexps, char *r, int *pos, int grp) { int f = -1; - int not = 1, old, d=0, s=0, unique = 0, no_nils = 0; + int not = 1, old, d=0, s=0, unique = 0, no_nils = 0, quote = 0; char *tname, *cname = NULL, *e, *b = r + *pos, *st; sql_exp *exp = NULL; list *exps = NULL; sql_subtype *tpe; + quote = (r[*pos] == '"'); + b += quote; skipIdent(r, pos); - e = r+*pos; + e = r+*pos-quote; skipWS(r, pos); switch(r[*pos]) { - /* ident */ case '.': *e = 0; (*pos)++; tname = b; - cname = r + *pos; + cname = r + *pos + quote; skipIdentOrSymbol(r, pos); - e = r+*pos; - skipWS(r, pos); + e = r+*pos - quote; old = *e; *e = 0; tname = sa_strdup(sql->sa, tname); cname = sa_strdup(sql->sa, cname); + *e = old; + skipWS(r, pos); if (pexps) exp = exps_bind_column2(pexps, tname, cname); if (!exp && lrel) { @@ -753,7 +764,6 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re } else if (!
MonetDB: Jul2017 - Fix monetdb property handling.
Changeset: f97cded47fa0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f97cded47fa0 Modified Files: tools/merovingian/daemon/merovingian.c tools/merovingian/utils/properties.c Branch: Jul2017 Log Message: Fix monetdb property handling. diffs (66 lines): diff --git a/tools/merovingian/daemon/merovingian.c b/tools/merovingian/daemon/merovingian.c --- a/tools/merovingian/daemon/merovingian.c +++ b/tools/merovingian/daemon/merovingian.c @@ -356,6 +356,8 @@ main(int argc, char *argv[]) kv->val = strdup("no"); kv = findConfKey(_mero_db_props, "embedpy"); kv->val = strdup("no"); + kv = findConfKey(_mero_db_props, "embedpy3"); + kv->val = strdup("no"); kv = findConfKey(_mero_db_props, "nclients"); kv->val = strdup("64"); kv = findConfKey(_mero_db_props, "type"); diff --git a/tools/merovingian/utils/properties.c b/tools/merovingian/utils/properties.c --- a/tools/merovingian/utils/properties.c +++ b/tools/merovingian/utils/properties.c @@ -31,10 +31,11 @@ static confkeyval _internal_prop_keys[PR {"optpipe", NULL, 0, STR}, {"readonly", NULL, 0, BOOLEAN}, {"embedr", NULL, 0, BOOLEAN}, - {"embedpy", NULL, 0, BOOLEAN}, - {"embedpy3", NULL, 0, BOOLEAN}, + {"embedpy", NULL, 0, BOOLEAN}, + {"embedpy3", NULL, 0, BOOLEAN}, {"nclients", NULL, 0, INT}, {"mfunnel", NULL, 0, STR}, + {"dbextra", NULL, 0, STR}, { NULL, NULL, 0, INVALID} }; @@ -266,22 +267,22 @@ setProp(char *path, char *key, char *val value++; } } + } - /* ok, if we've reached this point we can write this stuff out! */ - /* Let's check if this was a default property of an additional one. -* Non-default properties will have a NULL kv */ - if (kv == NULL) { - confkeyval *addProperty = (struct _confkeyval *) malloc(sizeof(struct _confkeyval)); - addProperty->key = strdup(key); - addProperty->val = strdup(val); - addProperty->ival = 0; - addProperty->type = STR; + /* ok, if we've reached this point we can write this stuff out! */ + /* Let's check if this was a default property of an additional one. +* Non-default properties will have a NULL kv */ + if (kv == NULL) { + confkeyval *addProperty = (struct _confkeyval *) malloc(sizeof(struct _confkeyval)); + addProperty->key = strdup(key); + addProperty->val = strdup(val); + addProperty->ival = 0; + addProperty->type = STR; - appendProp(addProperty, path); - free(addProperty); - } else { - writeProps(props, path); - } + appendProp(addProperty, path); + free(addProperty); + } else { + writeProps(props, path); } freeConfFile(props); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jul2017 - Improve checks.
Changeset: 388aa73a2933 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=388aa73a2933 Modified Files: tools/merovingian/client/monetdb.c Branch: Jul2017 Log Message: Improve checks. diffs (33 lines): diff --git a/tools/merovingian/client/monetdb.c b/tools/merovingian/client/monetdb.c --- a/tools/merovingian/client/monetdb.c +++ b/tools/merovingian/client/monetdb.c @@ -1306,14 +1306,16 @@ command_get(int argc, char *argv[]) fprintf(stderr, "get: %s\n", e); free(e); exit(2); - } else if ( buf && strncmp(buf, "OK\n", 3) != 0) { + } else if (buf == NULL) { + fprintf(stderr, "get: malloc failed\n"); + exit(2); + } else if (strncmp(buf, "OK\n", 3) != 0) { fprintf(stderr, "get: %s\n", buf); free(buf); exit(1); } readPropsBuf(defprops, buf + 3); - if( buf) - free(buf); + free(buf); if (twidth > 0) { /* name = 15 */ @@ -1332,6 +1334,9 @@ command_get(int argc, char *argv[]) fprintf(stderr, "get: %s\n", e); free(e); exit(2); + } else if (buf == NULL) { + fprintf(stderr, "get: malloc failed\n"); + exit(2); } else if (strncmp(buf, "OK\n", 3) != 0) { fprintf(stderr, "get: %s\n", buf); free(buf); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Merge with Jul2017 branch.
Changeset: 05ef3bd6683c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=05ef3bd6683c Added Files: sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql Removed Files: sql/test/pg_regress/Tests/oid.stable.out.oid32 sql/test/pg_regress/Tests/without_oid.stable.out.oid32 Modified Files: sql/server/rel_dump.c sql/server/rel_optimizer.c sql/server/rel_updates.c sql/server/sql_parser.y sql/test/BugTracker-2017/Tests/All sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out Branch: default Log Message: Merge with Jul2017 branch. diffs (truncated from 557 to 300 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -1182,7 +1182,9 @@ rel_read(mvc *sql, char *r, int *pos, li gexps = read_exps(sql, nrel, NULL, NULL, r, pos, '[', 0); skipWS(r, pos); - exps = read_exps(sql, nrel, NULL, NULL, r, pos, '[', 1); + exps = read_exps(sql, nrel, NULL, gexps, r, pos, '[', 1); + if (!exps) + return NULL; rel = rel_groupby(sql, nrel, gexps); rel->exps = exps; diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -2461,7 +2461,8 @@ static sql_exp * math_unsafe_fixup( mvc *sql, sql_exp *e, sql_exp *cond, int lr ) { list *args = e->l; - if (args->h->next) + + if (args && args->h && args->h->next) return math_unsafe_fixup_binop(sql, e, args->h->data, args->h->next->data, cond, lr); else return math_unsafe_fixup_unop(sql, e, args->h->data, cond, lr); diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c --- a/sql/server/rel_updates.c +++ b/sql/server/rel_updates.c @@ -23,6 +23,12 @@ insert_value(mvc *sql, sql_column *c, sq { if (s->token == SQL_NULL) { return exp_atom(sql->sa, atom_general(sql->sa, &c->type, NULL)); + } else if (s->token == SQL_DEFAULT) { + if (c->def) { + return rel_parse_val(sql, sa_message(sql->sa, "select CAST(%s AS %s);", c->def, c->type.type->sqlname), sql->emode); + } else { + return sql_error(sql, 02, "INSERT INTO: column '%s' has no valid default value", c->base.name); + } } else { int is_last = 0; exp_kind ek = {type_value, card_value, FALSE}; @@ -971,11 +977,19 @@ update_table(mvc *sql, dlist *qname, dli int status = sql->session->status; exp_kind ek = {type_value, (single)?card_column:card_relation, FALSE}; - if (single) + if(single && a->token == SQL_DEFAULT) { + char *colname = assignment->h->next->data.sval; + sql_column *col = mvc_bind_column(sql, t, colname); + if (col->def) { + v = rel_parse_val(sql, sa_message(sql->sa, "select CAST(%s AS %s);", col->def, col->type.type->sqlname), sql->emode); + } else { + return sql_error(sql, 02, "UPDATE: column '%s' has no valid default value", col->base.name); + } + } else if (single) { v = rel_value_exp(sql, &rel_val, a, sql_sel, ek); - else + } else { rel_val = rel_subquery(sql, NULL, a, ek, APPLY_JOIN); - + } if (!v) { sql->errstr[0] = 0; sql->session->status = status; diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -2888,6 +2888,7 @@ simple_atom: insert_atom: simple_atom + | DEFAULT{ $$ = _symbol_create(SQL_DEFAULT, NULL ); } ; value: @@ -2908,7 +2909,12 @@ assignment_commalist: ; assignment: - column '=' search_condition + column '=' DEFAULT + { dlist *l = L(); + append_symbol(l, _symbol_create(SQL_DEFAULT, NULL ) ); + append_string(l, $1); + $$ = _symbol_create_list( SQL_ASSIGN, l); } + | column '=' search_condition { dlist *l = L(); append_symbol(l, $3 ); append_string(l, $1); diff --git a/sql/test/BugTracker-2017/Tests/All b/sql/test/BugTracker-2017/Tests/All --- a/sql/test/BugTracker-2017/Tests/All +++ b/sql/test/BugTracker
MonetDB: Jul2017 - Merge with Dec2016 branch.
Changeset: 45b83210b4f6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=45b83210b4f6 Removed Files: sql/test/pg_regress/Tests/oid.stable.out.oid32 sql/test/pg_regress/Tests/without_oid.stable.out.oid32 Branch: Jul2017 Log Message: Merge with Dec2016 branch. diffs (truncated from 420 to 300 lines): diff --git a/sql/test/pg_regress/Tests/oid.stable.out.oid32 b/sql/test/pg_regress/Tests/oid.stable.out.oid32 deleted file mode 100644 --- a/sql/test/pg_regress/Tests/oid.stable.out.oid32 +++ /dev/null @@ -1,237 +0,0 @@ -stdout of test 'oid` in directory 'sql/test/pg_regress` itself: - - -# 17:11:18 > -# 17:11:18 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=38959" "--set" "mapi_usock=/var/tmp/mtest-1142/.s.monetdb.38959" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/ufs/dinther/INSTALL/var/MonetDB/mTests_sql_test_pg_regress" "--set" "mal_listing=0" -# 17:11:18 > - -# MonetDB 5 server v11.18.0 -# This is an unreleased version -# Serving database 'mTests_sql_test_pg_regress', using 8 threads -# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked -# Found 15.356 GiB available main-memory. -# Copyright (c) 1993-July 2008 CWI. -# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved -# Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://uwakai.da.cwi.nl:38959/ -# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-1142/.s.monetdb.38959 -# MonetDB/GIS module loaded -# MonetDB/SQL module loaded - -Ready. - -# 17:11:19 > -# 17:11:19 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-1142" "--port=38959" -# 17:11:19 > - -#-- -#-- OID -#-- -#CREATE TABLE OID_TBL(f1 oid); -#INSERT INTO OID_TBL(f1) VALUES ('1234'); -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES ('1235'); -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES ('987'); -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES ('000'); -[ 1] -#INSERT INTO OID_TBL(f1) VALUES (''); -- in MonetDB this one is accepted -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES ('5 '); -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES (' 10 '); -[ 1] -#INSERT INTO OID_TBL(f1) VALUES (' 15 '); -[ 1] -#INSERT INTO OID_TBL(f1) VALUES (null); -[ 1 ] -#SELECT '' AS ten, OID_TBL.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL; -% .L2, sys.oid_tbl,sys.L6 # table_name -% ten, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1234@0, "1234@0"] -[ "", 1235@0, "1235@0"] -[ "", 987@0, "987@0" ] -[ "", 0@0,"0@0" ] -[ "", NULL, NULL] -[ "", 5@0,"5@0" ] -[ "", 10@0, "10@0" ] -[ "", 15@0, "15@0" ] -[ "", NULL, NULL] -#SELECT '' AS ten, OID_TBL.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL ORDER BY f1; -% .L2, sys.oid_tbl,sys.L6 # table_name -% ten, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", NULL, NULL] -[ "", NULL, NULL] -[ "", 0@0,"0@0" ] -[ "", 5@0,"5@0" ] -[ "", 10@0, "10@0" ] -[ "", 15@0, "15@0" ] -[ "", 987@0, "987@0" ] -[ "", 1234@0, "1234@0"] -[ "", 1235@0, "1235@0"] -#DELETE FROM OID_TBL WHERE f1 < '0'; -[ 0] -#SELECT '' AS one, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 = cast(1234 as oid); -% .L3, sys.o, sys.L7 # table_name -% one, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1234@0, "1234@0"] -#SELECT '' AS one, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 = 1234@0; -% .L2, sys.o, sys.L6 # table_name -% one, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1234@0, "1234@0"] -#SELECT '' AS one, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 = '1234'; -% .L2, sys.o, sys.L6 # table_name -% one, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1234@0, "1234@0"] -#SELECT '' AS seven, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 <> cast(1234 as oid); -% .L3, sys.o, sys.L7 # table_name -% seven, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1235@0, "1235@0"] -[ "", 987@0, "987@0" ] -[ "", 0@0,"0@0" ] -[ "", 5@0,"5@0" ] -[ "", 10@0, "10@0" ] -[ "", 15@0, "15@0" ] -#SELECT '' AS seven, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 <> 1234@0; -% .L2, sys.o, sys.L6 # table_name -% seven, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1235@0, "1235@0"] -[ "", 987@0, "987@0" ] -[ "", 0@0,"0@0" ] -[ "", 5@0,"5@0" ] -[ "", 10@0, "10@0" ] -[ "", 15@0, "15@0" ] -#
MonetDB: Dec2016 - Remove old output files for 32-bit OIDs.
Changeset: 20ad77f3b1b5 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=20ad77f3b1b5 Removed Files: sql/test/pg_regress/Tests/oid.stable.out.oid32 sql/test/pg_regress/Tests/without_oid.stable.out.oid32 Branch: Dec2016 Log Message: Remove old output files for 32-bit OIDs. Again. diffs (truncated from 420 to 300 lines): diff --git a/sql/test/pg_regress/Tests/oid.stable.out.oid32 b/sql/test/pg_regress/Tests/oid.stable.out.oid32 deleted file mode 100644 --- a/sql/test/pg_regress/Tests/oid.stable.out.oid32 +++ /dev/null @@ -1,237 +0,0 @@ -stdout of test 'oid` in directory 'sql/test/pg_regress` itself: - - -# 17:11:18 > -# 17:11:18 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=38959" "--set" "mapi_usock=/var/tmp/mtest-1142/.s.monetdb.38959" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/ufs/dinther/INSTALL/var/MonetDB/mTests_sql_test_pg_regress" "--set" "mal_listing=0" -# 17:11:18 > - -# MonetDB 5 server v11.18.0 -# This is an unreleased version -# Serving database 'mTests_sql_test_pg_regress', using 8 threads -# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked -# Found 15.356 GiB available main-memory. -# Copyright (c) 1993-July 2008 CWI. -# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved -# Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://uwakai.da.cwi.nl:38959/ -# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-1142/.s.monetdb.38959 -# MonetDB/GIS module loaded -# MonetDB/SQL module loaded - -Ready. - -# 17:11:19 > -# 17:11:19 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-1142" "--port=38959" -# 17:11:19 > - -#-- -#-- OID -#-- -#CREATE TABLE OID_TBL(f1 oid); -#INSERT INTO OID_TBL(f1) VALUES ('1234'); -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES ('1235'); -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES ('987'); -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES ('000'); -[ 1] -#INSERT INTO OID_TBL(f1) VALUES (''); -- in MonetDB this one is accepted -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES ('5 '); -[ 1 ] -#INSERT INTO OID_TBL(f1) VALUES (' 10 '); -[ 1] -#INSERT INTO OID_TBL(f1) VALUES (' 15 '); -[ 1] -#INSERT INTO OID_TBL(f1) VALUES (null); -[ 1 ] -#SELECT '' AS ten, OID_TBL.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL; -% .L2, sys.oid_tbl,sys.L6 # table_name -% ten, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1234@0, "1234@0"] -[ "", 1235@0, "1235@0"] -[ "", 987@0, "987@0" ] -[ "", 0@0,"0@0" ] -[ "", NULL, NULL] -[ "", 5@0,"5@0" ] -[ "", 10@0, "10@0" ] -[ "", 15@0, "15@0" ] -[ "", NULL, NULL] -#SELECT '' AS ten, OID_TBL.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL ORDER BY f1; -% .L2, sys.oid_tbl,sys.L6 # table_name -% ten, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", NULL, NULL] -[ "", NULL, NULL] -[ "", 0@0,"0@0" ] -[ "", 5@0,"5@0" ] -[ "", 10@0, "10@0" ] -[ "", 15@0, "15@0" ] -[ "", 987@0, "987@0" ] -[ "", 1234@0, "1234@0"] -[ "", 1235@0, "1235@0"] -#DELETE FROM OID_TBL WHERE f1 < '0'; -[ 0] -#SELECT '' AS one, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 = cast(1234 as oid); -% .L3, sys.o, sys.L7 # table_name -% one, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1234@0, "1234@0"] -#SELECT '' AS one, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 = 1234@0; -% .L2, sys.o, sys.L6 # table_name -% one, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1234@0, "1234@0"] -#SELECT '' AS one, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 = '1234'; -% .L2, sys.o, sys.L6 # table_name -% one, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1234@0, "1234@0"] -#SELECT '' AS seven, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 <> cast(1234 as oid); -% .L3, sys.o, sys.L7 # table_name -% seven, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1235@0, "1235@0"] -[ "", 987@0, "987@0" ] -[ "", 0@0,"0@0" ] -[ "", 5@0,"5@0" ] -[ "", 10@0, "10@0" ] -[ "", 15@0, "15@0" ] -#SELECT '' AS seven, o.*, cast(f1 as varchar(30)) as oid2str FROM OID_TBL o WHERE o.f1 <> 1234@0; -% .L2, sys.o, sys.L6 # table_name -% seven, f1, oid2str # name -% char,oid,varchar # type -% 0, 6, 6 # length -[ "", 1235@0, "1235@0"] -[ "", 987@0, "987@0" ] -[ "", 0@0,"0@0" ] -[ "", 5@0,"5@0" ] -[ "", 10@0, "10@0" ] -[ "",
MonetDB: default - Approve after changeset 2072c4a5a078.
Changeset: 9f1287a18e29 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9f1287a18e29 Modified Files: sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 Branch: default Log Message: Approve after changeset 2072c4a5a078. diffs (truncated from 19206 to 300 lines): diff --git a/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 b/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 --- a/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 +++ b/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 @@ -35,5165 +35,5164 @@ insert into sys.types values (8, 'bte', insert into sys.types values (9, 'sht', 'smallint', 16, 1, 2, 7, 2000); insert into sys.types values (10, 'int', 'int', 32, 1, 2, 7, 2000); insert into sys.types values (11, 'lng', 'bigint', 64, 1, 2, 7, 2000); -insert into sys.types values (12, 'lng', 'wrd', 64, 1, 2, 7, 2000); -insert into sys.types values (13, 'hge', 'hugeint', 128, 1, 2, 7, 2000); -insert into sys.types values (14, 'bte', 'decimal', 2, 1, 10, 10, 2000); -insert into sys.types values (15, 'sht', 'decimal', 4, 1, 10, 10, 2000); -insert into sys.types values (16, 'int', 'decimal', 9, 1, 10, 10, 2000); -insert into sys.types values (17, 'lng', 'decimal', 18, 1, 10, 10, 2000); -insert into sys.types values (18, 'hge', 'decimal', 38, 1, 10, 10, 2000); -insert into sys.types values (19, 'flt', 'real', 24, 2, 2, 11, 2000); -insert into sys.types values (20, 'dbl', 'double', 53, 2, 2, 11, 2000); -insert into sys.types values (21, 'int', 'month_interval', 32, 0, 2, 8, 2000); -insert into sys.types values (22, 'lng', 'sec_interval', 13, 1, 10, 9, 2000); -insert into sys.types values (23, 'daytime', 'time', 7, 0, 0, 12, 2000); -insert into sys.types values (24, 'daytime', 'timetz', 7, 1, 0, 12, 2000); -insert into sys.types values (25, 'date', 'date', 0, 0, 0, 13, 2000); -insert into sys.types values (26, 'timestamp', 'timestamp', 7, 0, 0, 14, 2000); -insert into sys.types values (27, 'timestamp', 'timestamptz', 7, 1, 0, 14, 2000); -insert into sys.types values (28, 'sqlblob', 'blob', 0, 0, 0, 5, 2000); -insert into sys.types values (29, 'wkb', 'geometry', 0, 0, 0, 15, 2000); -insert into sys.types values (30, 'wkba', 'geometrya', 0, 0, 0, 16, 2000); -insert into sys.types values (31, 'mbr', 'mbr', 0, 0, 0, 16, 2000); +insert into sys.types values (12, 'hge', 'hugeint', 128, 1, 2, 7, 2000); +insert into sys.types values (13, 'bte', 'decimal', 2, 1, 10, 10, 2000); +insert into sys.types values (14, 'sht', 'decimal', 4, 1, 10, 10, 2000); +insert into sys.types values (15, 'int', 'decimal', 9, 1, 10, 10, 2000); +insert into sys.types values (16, 'lng', 'decimal', 18, 1, 10, 10, 2000); +insert into sys.types values (17, 'hge', 'decimal', 38, 1, 10, 10, 2000); +insert into sys.types values (18, 'flt', 'real', 24, 2, 2, 11, 2000); +insert into sys.types values (19, 'dbl', 'double', 53, 2, 2, 11, 2000); +insert into sys.types values (20, 'int', 'month_interval', 32, 0, 2, 8, 2000); +insert into sys.types values (21, 'lng', 'sec_interval', 13, 1, 10, 9, 2000); +insert into sys.types values (22, 'daytime', 'time', 7, 0, 0, 12, 2000); +insert into sys.types values (23, 'daytime', 'timetz', 7, 1, 0, 12, 2000); +insert into sys.types values (24, 'date', 'date', 0, 0, 0, 13, 2000); +insert into sys.types values (25, 'timestamp', 'timestamp', 7, 0, 0, 14, 2000); +insert into sys.types values (26, 'timestamp', 'timestamptz', 7, 1, 0, 14, 2000); +insert into sys.types values (27, 'sqlblob', 'blob', 0, 0, 0, 5, 2000); +insert into sys.types values (28, 'wkb', 'geometry', 0, 0, 0, 15, 2000); +insert into sys.types values (29, 'wkba', 'geometrya', 0, 0, 0, 16, 2000); +insert into sys.types values (30, 'mbr', 'mbr', 0, 0, 0, 16, 2000); delete from sys.functions where id < 2000; delete from sys.args where func_id not in (select id from sys.functions); +insert into sys.functions values (31, 'mbr_overlap', 'mbrOverlaps', 'geom', 0, 1, false, false, false, 2000); +insert into sys.args values (12114, 31, 'res_0', 'boolean', 1, 0, 0, 0); +insert into sys.args values (12115, 31, 'arg_1', 'geometry', 0, 0, 1, 1); +insert into sys.args values (12116, 31, 'arg_2', 'geometry', 0, 0, 1, 2); insert into sys.functions values (32, 'mbr_overlap', 'mbrOverlaps', 'geom', 0, 1, false, false, false, 2000); -insert into sys.args values (12114, 32, 'res_0', 'boolean', 1, 0, 0, 0); -insert into sys.args values (12115, 32, 'arg_1', 'geometry', 0, 0, 1, 1); -insert into sys.args values (12116, 32, 'arg_2', 'geometry', 0, 0, 1, 2); -insert into sys.functions values (33, 'mbr_overlap', 'mbrOverlaps', 'geom', 0, 1, false, false, false, 2000); -insert into sys.args values (12117, 33, 'res_0', 'boolean', 1, 0, 0, 0); -insert into sys.args values (12118, 33, 'arg_1', 'mbr', 0, 0, 1, 1); -insert into sys.args values (12119, 33, 'arg_2', 'mbr', 0, 0, 1, 2); +insert into sys.args values (121
MonetDB: Jul2017 - merged with 2016
Changeset: 2cadb0af2054 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2cadb0af2054 Added Files: sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql Modified Files: sql/server/rel_updates.c sql/server/sql_parser.y sql/test/BugTracker-2017/Tests/All sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out Branch: Jul2017 Log Message: merged with 2016 diffs (110 lines): diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c --- a/sql/server/rel_updates.c +++ b/sql/server/rel_updates.c @@ -23,6 +23,12 @@ insert_value(mvc *sql, sql_column *c, sq { if (s->token == SQL_NULL) { return exp_atom(sql->sa, atom_general(sql->sa, &c->type, NULL)); + } else if (s->token == SQL_DEFAULT) { + if (c->def) { + return rel_parse_val(sql, sa_message(sql->sa, "select CAST(%s AS %s);", c->def, c->type.type->sqlname), sql->emode); + } else { + return sql_error(sql, 02, "INSERT INTO: column '%s' has no valid default value", c->base.name); + } } else { int is_last = 0; exp_kind ek = {type_value, card_value, FALSE}; @@ -971,11 +977,19 @@ update_table(mvc *sql, dlist *qname, dli int status = sql->session->status; exp_kind ek = {type_value, (single)?card_column:card_relation, FALSE}; - if (single) + if(single && a->token == SQL_DEFAULT) { + char *colname = assignment->h->next->data.sval; + sql_column *col = mvc_bind_column(sql, t, colname); + if (col->def) { + v = rel_parse_val(sql, sa_message(sql->sa, "select CAST(%s AS %s);", col->def, col->type.type->sqlname), sql->emode); + } else { + return sql_error(sql, 02, "UPDATE: column '%s' has no valid default value", col->base.name); + } + } else if (single) { v = rel_value_exp(sql, &rel_val, a, sql_sel, ek); - else + } else { rel_val = rel_subquery(sql, NULL, a, ek, APPLY_JOIN); - + } if (!v) { sql->errstr[0] = 0; sql->session->status = status; diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -2888,6 +2888,7 @@ simple_atom: insert_atom: simple_atom + | DEFAULT{ $$ = _symbol_create(SQL_DEFAULT, NULL ); } ; value: @@ -2908,7 +2909,12 @@ assignment_commalist: ; assignment: - column '=' search_condition + column '=' DEFAULT + { dlist *l = L(); + append_symbol(l, _symbol_create(SQL_DEFAULT, NULL ) ); + append_string(l, $1); + $$ = _symbol_create_list( SQL_ASSIGN, l); } + | column '=' search_condition { dlist *l = L(); append_symbol(l, $3 ); append_string(l, $1); diff --git a/sql/test/BugTracker-2017/Tests/All b/sql/test/BugTracker-2017/Tests/All --- a/sql/test/BugTracker-2017/Tests/All +++ b/sql/test/BugTracker-2017/Tests/All @@ -21,6 +21,7 @@ HAVE_NETCDF?rel2bin_project-assert.Bug-6 str2decimal.Bug-6206 integer_addition_overflow.Bug-6205 dce_bug-6177 +default-insert-update.Bug-6249 crash_on_NULL_ptr.Bug-6130 HAVE_SAMTOOLS?sqlsmith01 HAVE_NETCDF?sqlsmith02 diff --git a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql @@ -0,0 +1,30 @@ +CREATE TABLE test1 (a INT DEFAULT -1); + +INSERT INTO test1 VALUES (1); +INSERT INTO test1 VALUES (DEFAULT); +INSERT INTO test1 VALUES (2), (DEFAULT), (3), (DEFAULT), (4); + +SELECT * FROM test1; + +UPDATE test1 SET a = DEFAULT WHERE a = 4; + +SELECT * FROM test1; + +DROP TABLE test1; + +CREATE TABLE test2 (a INT DEFAULT 0, b CLOB, c INT, d CLOB DEFAULT 'astring'); + +INSERT INTO test2 VALUES (1, 'a', 1, 'a'); +INSERT INTO test2 VALUES (DEFAULT, 'a', 1, DEFAULT); +INSERT INTO test2 VALUES (2, 'b', 2, 'b'), (100, 'other', -1, DEFAULT), (3, 'c', 3, 'c'), (DEFAULT, 'd', 4, 'd'); + +SELECT * FROM test2; + +UPDATE test2 SET d = DEFAULT, b = 'bbb' WHERE a = 1; + +SELECT * FROM test2; + +INSERT INTO test2 VALUES (1, 'a', DEFAULT, 'a'); --throw an error +UPDATE test2 SET b = DEFAULT; --throw an error + +DROP TABLE test2; _
MonetDB: Dec2016 - approved output
Changeset: 68f855a8939c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=68f855a8939c Modified Files: sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out Branch: Dec2016 Log Message: approved output diffs (35 lines): diff --git a/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err b/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err --- a/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err +++ b/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err @@ -29,9 +29,6 @@ stderr of test 'crash-select_after_MAL_e # 14:22:38 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-11002" "--port=36959" # 14:22:38 > -MAPI = (monetdb) /var/tmp/mtest-11002/.s.monetdb.36959 -QUERY = SELECT DISTINCT col1 * + + col1 + + col2 * 0 / + - CAST ( + - col0 AS INTEGER ) AS col1 FROM tab0 cor0; -ERROR = !TypeException:user.main[19]:'bat.append' undefined in: bat.append(X_1274:bat[:lng],X_1280:bte); # 14:22:39 > diff --git a/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out b/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out --- a/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out +++ b/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out @@ -69,11 +69,14 @@ Ready. # 14:22:38 > #CREATE TABLE tab0(col0 INTEGER, col1 INTEGER, col2 INTEGER); +#SELECT DISTINCT col1 * + + col1 + + col2 * 0 / + - CAST ( + - col0 AS INTEGER ) AS col1 FROM tab0 cor0; +% sys.L3 # table_name +% col1 # name +% hugeint # type +% 1 # length #SELECT ALL + 93 + col0 FROM tab0 AS cor0; -% sys. # table_name -# sys.L2 # table_name -% L # name -# L2 # name +% sys.L2 # table_name +% L2 # name % bigint # type % 1 # length #DROP TABLE tab0; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: stratified_sampling - Merge.
Changeset: e99bdbf8867b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e99bdbf8867b Added Files: sql/backends/monet5/sample/80_sample.sql sql/backends/monet5/sample/Makefile.ag sql/backends/monet5/sample/Tests/All sql/backends/monet5/sample/Tests/weightedsample.sql sql/backends/monet5/sample/sample.c sql/backends/monet5/sample/sample.h Modified Files: sql/server/sql_parser.y Branch: stratified_sampling Log Message: Merge. diffs (183 lines): diff --git a/sql/backends/monet5/sample/80_sample.sql b/sql/backends/monet5/sample/80_sample.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/80_sample.sql @@ -0,0 +1,13 @@ +-- This Source Code Form is subject to the terms of the Mozilla Public +-- License, v. 2.0. If a copy of the MPL was not distributed with this +-- file, You can obtain one at http://mozilla.org/MPL/2.0/. +-- +-- Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +-- add function signatures to SQL catalog + + +-- Reverse a string +create function weighted_sample(src double, cnt bigint) +returns boolean external name libsample.weighted_sample;--TODO possibly nolibsample + diff --git a/sql/backends/monet5/sample/Makefile.ag b/sql/backends/monet5/sample/Makefile.ag new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/Makefile.ag @@ -0,0 +1,36 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +INCLUDES = .. \ +../../../include \ + ../../../common \ + ../../../storage \ + ../../../server \ + ../../../../monetdb5/modules/atoms \ + ../../../../monetdb5/modules/kernel \ + ../../../../monetdb5/mal \ + ../../../../monetdb5/modules/mal \ + ../../../../monetdb5/optimizer \ + ../../../../common/options \ + ../../../../common/stream \ + ../../../../gdk + +lib__sample = { + MODULE + DIR = libdir/monetdb5 + SOURCES = sample.c sample.h sample_impl.h + LIBS = ../../../../monetdb5/tools/libmonetdb5 \ + ../../../../gdk/libbat +} + +headers_sql = { + HEADERS = sql + DIR = libdir/monetdb5/createdb + SOURCES = 80_sample.sql +} + +EXTRA_DIST_DIR = Tests + diff --git a/sql/backends/monet5/sample/Tests/All b/sql/backends/monet5/sample/Tests/All new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/Tests/All @@ -0,0 +1,1 @@ +weightedsample diff --git a/sql/backends/monet5/sample/Tests/weightedsample.sql b/sql/backends/monet5/sample/Tests/weightedsample.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/Tests/weightedsample.sql @@ -0,0 +1,9 @@ +set optimizer = 'sequential_pipe'; +-- ADD FLAG TO DISALLOW PARALLELIZATION (MITOSIS) FOR weighted_sample +CREATE TABLE wsample (i INTEGER, weights DOUBLE); +INSERT INTO wsample VALUES (1, 1), (2, 1), (3, 1), (4, 1), (5, 1); + + +explain SELECT i FROM wsample WHERE weighted_sample(weights, 2); +SELECT i FROM wsample WHERE weighted_sample(weights, 2); + diff --git a/sql/backends/monet5/sample/sample.c b/sql/backends/monet5/sample/sample.c new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/sample.c @@ -0,0 +1,47 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +/* monetdb_config.h must be the first include in each .c file */ + +#include "monetdb_config.h" +#include "sample.h" + +#ifdef notdefined //!!!TODO + +/* MAL wrapper */ +char * +UDFBATweightedsample(bat *ret, const bat *arg, const lng *cnt) +{//bat = identifier, BAT is actual bat, BATdescriptor turns ID into BAT + BAT *res = NULL, *src = NULL; + char *msg = NULL; + + /* assert calling sanity */ + assert(ret != NULL && arg != NULL); + + /* bat-id -> BAT-descriptor */ + if ((src = BATdescriptor(*arg)) == NULL) + throw(MAL, "batudf.reverse", RUNTIME_OBJECT_MISSING); + printf("Count: %lld\n", *cnt); + + //TODO Type checking + /* do the work */ + //msg = UDFBATreverse_ ( &res, src );//TODO + throw(MAL, "batudf.reverse", "LOLFAIL");//TODO + res = _BATsample(arg, *cnt, BAT *cdf) + + /* release input BAT-descriptor */ + //BBPunfix(src->batCacheid); + + //if (msg == MAL_SUCCEED) { + /* register result BAT in buffer pool */ + // BBPkeepref((*ret = res->batCacheid)); + //} + return msg; +} + +#endif diff --git a/sql/backends/monet5/sample/sample.h b/sql/backends/monet5/sample/sample.h new file mode 100644 ---
MonetDB: stratified_sampling - Merge with default.
Changeset: bbe9fc330cfc for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bbe9fc330cfc Added Files: ChangeLog.Jul2017 NT/mkgeomwxs.py NT/mkodbcwxs.py NT/mksqlwxs.py buildtools/ChangeLog.Jul2017 clients/ChangeLog.Jul2017 clients/Tests/mclient-uri.SQL.bat clients/Tests/mclient-uri.SQL.sh clients/Tests/mclient-uri.stable.err clients/Tests/mclient-uri.stable.out clients/Tests/mclient-uri.stable.out.Windows clients/mapilib/ChangeLog.Jul2017 common/stream/ChangeLog.Jul2017 gdk/ChangeLog.Jul2017 geom/ChangeLog.Jul2017 monetdb5/ChangeLog.Jul2017 monetdb5/modules/mal/wlc.c monetdb5/modules/mal/wlc.h monetdb5/modules/mal/wlc.mal monetdb5/optimizer/opt_wlc.c monetdb5/optimizer/opt_wlc.h sql/ChangeLog.Jul2017 sql/backends/monet5/Tests/dbextra_lock_test.py sql/backends/monet5/Tests/dbextra_lock_test.stable.err sql/backends/monet5/Tests/dbextra_lock_test.stable.out sql/backends/monet5/wlr.c sql/backends/monet5/wlr.h sql/backends/monet5/wlr.mal sql/scripts/60_wlcr.sql sql/test/BugTracker-2015/Tests/crash_timestamp_convert.Bug-3816.stable.err.Windows sql/test/BugTracker-2015/Tests/crash_timestamp_convert.Bug-3816.stable.out.Windows sql/test/BugTracker-2016/Tests/storagemodel.stable.out.Darwin sql/test/BugTracker-2016/Tests/storagemodel.stable.out.FreeBSD sql/test/BugTracker-2017/Tests/all_minus_count_star.Bug-6297.sql sql/test/BugTracker-2017/Tests/all_minus_count_star.Bug-6297.stable.err sql/test/BugTracker-2017/Tests/all_minus_count_star.Bug-6297.stable.out sql/test/BugTracker-2017/Tests/coalesc-limit.Bug-6316.sql sql/test/BugTracker-2017/Tests/coalesc-limit.Bug-6316.stable.err sql/test/BugTracker-2017/Tests/coalesc-limit.Bug-6316.stable.out sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.sql sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.err sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.sql sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_not_in_select.Bug-6290.sql sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_not_in_select.Bug-6290.stable.err sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_not_in_select.Bug-6290.stable.out sql/test/BugTracker-2017/Tests/crash_function_returning_sample.Bug-6291.sql sql/test/BugTracker-2017/Tests/crash_function_returning_sample.Bug-6291.stable.err sql/test/BugTracker-2017/Tests/crash_function_returning_sample.Bug-6291.stable.out sql/test/BugTracker-2017/Tests/crash_in_in_handling.Bug-6260.sql sql/test/BugTracker-2017/Tests/crash_in_in_handling.Bug-6260.stable.err sql/test/BugTracker-2017/Tests/crash_in_in_handling.Bug-6260.stable.out sql/test/BugTracker-2017/Tests/create_table_as-missing_not_null.Bug-6329.sql sql/test/BugTracker-2017/Tests/create_table_as-missing_not_null.Bug-6329.stable.err sql/test/BugTracker-2017/Tests/create_table_as-missing_not_null.Bug-6329.stable.out sql/test/BugTracker-2017/Tests/delete_from_merge_table.Bug-3743.sql sql/test/BugTracker-2017/Tests/delete_from_merge_table.Bug-3743.stable.err sql/test/BugTracker-2017/Tests/delete_from_merge_table.Bug-3743.stable.out sql/test/BugTracker-2017/Tests/distinct_minus_count_distinct.Bug-6296.sql sql/test/BugTracker-2017/Tests/distinct_minus_count_distinct.Bug-6296.stable.err sql/test/BugTracker-2017/Tests/distinct_minus_count_distinct.Bug-6296.stable.out sql/test/BugTracker-2017/Tests/exist-bigint-missing.Bug-6315.sql sql/test/BugTracker-2017/Tests/exist-bigint-missing.Bug-6315.stable.err sql/test/BugTracker-2017/Tests/exist-bigint-missing.Bug-6315.stable.out sql/test/BugTracker-2017/Tests/function_and_mergetable.Bug-6288.sql sql/test/BugTracker-2017/Tests/function_and_mergetable.Bug-6288.stable.err sql/test/BugTracker-2017/Tests/function_and_mergetable.Bug-6288.stable.out sql/test/BugTracker-2017/Tests/lateral.Bug-6310.sql sql/test/BugTracker-2017/Tests/lateral.Bug-6310.stable.err sql/test/BugTracker-2017/Tests/lateral.Bug-6310.stable.out sql/test/BugTracker-2017/Tests/lateral02.Bug-6314.sql sql/test/BugTracker-2017/Tests/lateral02.Bug-6314.stable.err sql/test/BugTracker-2017/Tests/lateral02.Bug-6314.stable.out sql/test/BugTracker-2017/Tests/limit.bug-6322.sql sql/test/BugTracker-2017/Tests/li
MonetDB: Dec2016 - INSERT INTO and UPDATE statements with defaul...
Changeset: 24d1f738cf7c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=24d1f738cf7c Added Files: sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql Modified Files: sql/server/rel_updates.c sql/server/sql_parser.y sql/test/BugTracker-2017/Tests/All Branch: Dec2016 Log Message: INSERT INTO and UPDATE statements with default values of columns. Fixes bug 6249 diffs (110 lines): diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c --- a/sql/server/rel_updates.c +++ b/sql/server/rel_updates.c @@ -23,6 +23,12 @@ insert_value(mvc *sql, sql_column *c, sq { if (s->token == SQL_NULL) { return exp_atom(sql->sa, atom_general(sql->sa, &c->type, NULL)); + } else if (s->token == SQL_DEFAULT) { + if (c->def) { + return rel_parse_val(sql, sa_message(sql->sa, "select CAST(%s AS %s);", c->def, c->type.type->sqlname), sql->emode); + } else { + return sql_error(sql, 02, "INSERT INTO: column '%s' has no valid default value", c->base.name); + } } else { int is_last = 0; exp_kind ek = {type_value, card_value, FALSE}; @@ -971,11 +977,19 @@ update_table(mvc *sql, dlist *qname, dli int status = sql->session->status; exp_kind ek = {type_value, (single)?card_column:card_relation, FALSE}; - if (single) + if(single && a->token == SQL_DEFAULT) { + char *colname = assignment->h->next->data.sval; + sql_column *col = mvc_bind_column(sql, t, colname); + if (col->def) { + v = rel_parse_val(sql, sa_message(sql->sa, "select CAST(%s AS %s);", col->def, col->type.type->sqlname), sql->emode); + } else { + return sql_error(sql, 02, "UPDATE: column '%s' has no valid default value", col->base.name); + } + } else if (single) { v = rel_value_exp(sql, &rel_val, a, sql_sel, ek); - else + } else { rel_val = rel_subquery(sql, NULL, a, ek, APPLY_JOIN); - + } if (!v) { sql->errstr[0] = 0; sql->session->status = status; diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -2822,6 +2822,7 @@ simple_atom: insert_atom: simple_atom + | DEFAULT{ $$ = _symbol_create(SQL_DEFAULT, NULL ); } ; value: @@ -2842,7 +2843,12 @@ assignment_commalist: ; assignment: - column '=' search_condition + column '=' DEFAULT + { dlist *l = L(); + append_symbol(l, _symbol_create(SQL_DEFAULT, NULL ) ); + append_string(l, $1); + $$ = _symbol_create_list( SQL_ASSIGN, l); } + | column '=' search_condition { dlist *l = L(); append_symbol(l, $3 ); append_string(l, $1); diff --git a/sql/test/BugTracker-2017/Tests/All b/sql/test/BugTracker-2017/Tests/All --- a/sql/test/BugTracker-2017/Tests/All +++ b/sql/test/BugTracker-2017/Tests/All @@ -21,6 +21,7 @@ HAVE_NETCDF?rel2bin_project-assert.Bug-6 str2decimal.Bug-6206 integer_addition_overflow.Bug-6205 dce_bug-6177 +default-insert-update.Bug-6249 crash_on_NULL_ptr.Bug-6130 prepare.Bug-6133 null-quantile.Bug-6218 diff --git a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql @@ -0,0 +1,30 @@ +CREATE TABLE test1 (a INT DEFAULT -1); + +INSERT INTO test1 VALUES (1); +INSERT INTO test1 VALUES (DEFAULT); +INSERT INTO test1 VALUES (2), (DEFAULT), (3), (DEFAULT), (4); + +SELECT * FROM test1; + +UPDATE test1 SET a = DEFAULT WHERE a = 4; + +SELECT * FROM test1; + +DROP TABLE test1; + +CREATE TABLE test2 (a INT DEFAULT 0, b CLOB, c INT, d CLOB DEFAULT 'astring'); + +INSERT INTO test2 VALUES (1, 'a', 1, 'a'); +INSERT INTO test2 VALUES (DEFAULT, 'a', 1, DEFAULT); +INSERT INTO test2 VALUES (2, 'b', 2, 'b'), (100, 'other', -1, DEFAULT), (3, 'c', 3, 'c'), (DEFAULT, 'd', 4, 'd'); + +SELECT * FROM test2; + +UPDATE test2 SET d = DEFAULT, b = 'bbb' WHERE a = 1; + +SELECT * FROM test2; + +INSERT INTO test2 VALUES (1, 'a', DEFAULT, 'a'); --throw an error +UPDATE test2 SET b = DEFAULT; --throw an error + +DROP TABLE test2; __
MonetDB: stratified_sampling - Add missing sampling files.
Changeset: bdcd02833b9b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bdcd02833b9b Added Files: sql/backends/monet5/sample/80_sample.sql sql/backends/monet5/sample/Makefile.ag sql/backends/monet5/sample/Tests/All sql/backends/monet5/sample/Tests/weightedsample.sql sql/backends/monet5/sample/sample.c sql/backends/monet5/sample/sample.h Modified Files: sql/server/sql_parser.y Branch: stratified_sampling Log Message: Add missing sampling files. diffs (183 lines): diff --git a/sql/backends/monet5/sample/80_sample.sql b/sql/backends/monet5/sample/80_sample.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/80_sample.sql @@ -0,0 +1,13 @@ +-- This Source Code Form is subject to the terms of the Mozilla Public +-- License, v. 2.0. If a copy of the MPL was not distributed with this +-- file, You can obtain one at http://mozilla.org/MPL/2.0/. +-- +-- Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +-- add function signatures to SQL catalog + + +-- Reverse a string +create function weighted_sample(src double, cnt bigint) +returns boolean external name libsample.weighted_sample;--TODO possibly nolibsample + diff --git a/sql/backends/monet5/sample/Makefile.ag b/sql/backends/monet5/sample/Makefile.ag new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/Makefile.ag @@ -0,0 +1,36 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +INCLUDES = .. \ +../../../include \ + ../../../common \ + ../../../storage \ + ../../../server \ + ../../../../monetdb5/modules/atoms \ + ../../../../monetdb5/modules/kernel \ + ../../../../monetdb5/mal \ + ../../../../monetdb5/modules/mal \ + ../../../../monetdb5/optimizer \ + ../../../../common/options \ + ../../../../common/stream \ + ../../../../gdk + +lib__sample = { + MODULE + DIR = libdir/monetdb5 + SOURCES = sample.c sample.h sample_impl.h + LIBS = ../../../../monetdb5/tools/libmonetdb5 \ + ../../../../gdk/libbat +} + +headers_sql = { + HEADERS = sql + DIR = libdir/monetdb5/createdb + SOURCES = 80_sample.sql +} + +EXTRA_DIST_DIR = Tests + diff --git a/sql/backends/monet5/sample/Tests/All b/sql/backends/monet5/sample/Tests/All new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/Tests/All @@ -0,0 +1,1 @@ +weightedsample diff --git a/sql/backends/monet5/sample/Tests/weightedsample.sql b/sql/backends/monet5/sample/Tests/weightedsample.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/Tests/weightedsample.sql @@ -0,0 +1,9 @@ +set optimizer = 'sequential_pipe'; +-- ADD FLAG TO DISALLOW PARALLELIZATION (MITOSIS) FOR weighted_sample +CREATE TABLE wsample (i INTEGER, weights DOUBLE); +INSERT INTO wsample VALUES (1, 1), (2, 1), (3, 1), (4, 1), (5, 1); + + +explain SELECT i FROM wsample WHERE weighted_sample(weights, 2); +SELECT i FROM wsample WHERE weighted_sample(weights, 2); + diff --git a/sql/backends/monet5/sample/sample.c b/sql/backends/monet5/sample/sample.c new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/sample/sample.c @@ -0,0 +1,47 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +/* monetdb_config.h must be the first include in each .c file */ + +#include "monetdb_config.h" +#include "sample.h" + +#ifdef notdefined //!!!TODO + +/* MAL wrapper */ +char * +UDFBATweightedsample(bat *ret, const bat *arg, const lng *cnt) +{//bat = identifier, BAT is actual bat, BATdescriptor turns ID into BAT + BAT *res = NULL, *src = NULL; + char *msg = NULL; + + /* assert calling sanity */ + assert(ret != NULL && arg != NULL); + + /* bat-id -> BAT-descriptor */ + if ((src = BATdescriptor(*arg)) == NULL) + throw(MAL, "batudf.reverse", RUNTIME_OBJECT_MISSING); + printf("Count: %lld\n", *cnt); + + //TODO Type checking + /* do the work */ + //msg = UDFBATreverse_ ( &res, src );//TODO + throw(MAL, "batudf.reverse", "LOLFAIL");//TODO + res = _BATsample(arg, *cnt, BAT *cdf) + + /* release input BAT-descriptor */ + //BBPunfix(src->batCacheid); + + //if (msg == MAL_SUCCEED) { + /* register result BAT in buffer pool */ + // BBPkeepref((*ret = res->batCacheid)); + //} + return msg; +} + +#endif diff --git a/sql/backends/monet5/sample/sample.h b/sql/backends/monet5/sample/sample.h new
MonetDB: Jul2017 - merged with Dec2016
Changeset: fa87f4bfac34 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fa87f4bfac34 Modified Files: sql/server/rel_dump.c sql/server/rel_optimizer.c Branch: Jul2017 Log Message: merged with Dec2016 diffs (27 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -1182,7 +1182,9 @@ rel_read(mvc *sql, char *r, int *pos, li gexps = read_exps(sql, nrel, NULL, NULL, r, pos, '[', 0); skipWS(r, pos); - exps = read_exps(sql, nrel, NULL, NULL, r, pos, '[', 1); + exps = read_exps(sql, nrel, NULL, gexps, r, pos, '[', 1); + if (!exps) + return NULL; rel = rel_groupby(sql, nrel, gexps); rel->exps = exps; diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -2461,7 +2461,8 @@ static sql_exp * math_unsafe_fixup( mvc *sql, sql_exp *e, sql_exp *cond, int lr ) { list *args = e->l; - if (args->h->next) + + if (args && args->h && args->h->next) return math_unsafe_fixup_binop(sql, e, args->h->data, args->h->next->data, cond, lr); else return math_unsafe_fixup_unop(sql, e, args->h->data, cond, lr); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Approve after changeset 2072c4a5a078.
Changeset: 4a2e62d5b226 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4a2e62d5b226 Modified Files: sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/check.stable.out sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128 sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128 sql/test/emptydb-upgrade/Tests/check.stable.out sql/test/emptydb-upgrade/Tests/check.stable.out.32bit sql/test/emptydb-upgrade/Tests/check.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 Branch: default Log Message: Approve after changeset 2072c4a5a078. diffs (121 lines): diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128 b/sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128 --- a/sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128 +++ b/sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128 @@ -6176,7 +6176,6 @@ drop function pcre_replace(string, strin [ "sys", "lng", "bigint", 64, 1, 2, 7 ] [ "sys", "lng", "decimal", 18, 1, 10, 10 ] [ "sys", "lng", "sec_interval", 13, 1, 10, 9 ] -[ "sys", "lng", "wrd", 64, 1, 2, 7 ] [ "sys", "mbr", "mbr", 0, 0, 0, 16 ] [ "sys", "oid", "oid", 63, 0, 2, 6 ] [ "sys", "ptr", "ptr", 0, 0, 0, 1 ] diff --git a/sql/test/emptydb-upgrade-chain/Tests/check.stable.out b/sql/test/emptydb-upgrade-chain/Tests/check.stable.out --- a/sql/test/emptydb-upgrade-chain/Tests/check.stable.out +++ b/sql/test/emptydb-upgrade-chain/Tests/check.stable.out @@ -5789,7 +5789,6 @@ drop function pcre_replace(string, strin [ "sys", "lng", "bigint", 64, 1, 2, 7 ] [ "sys", "lng", "decimal", 18, 1, 10, 10 ] [ "sys", "lng", "sec_interval", 13, 1, 10, 9 ] -[ "sys", "lng", "wrd", 64, 1, 2, 7 ] [ "sys", "mbr", "mbr", 0, 0, 0, 16 ] [ "sys", "oid", "oid", 63, 0, 2, 6 ] [ "sys", "ptr", "ptr", 0, 0, 0, 1 ] diff --git a/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit b/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit --- a/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit +++ b/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit @@ -5789,7 +5789,6 @@ drop function pcre_replace(string, strin [ "sys", "int", "decimal", 9, 1, 10, 10 ] [ "sys", "int", "int", 32, 1, 2, 7 ] [ "sys", "int", "month_interval", 32, 0, 2, 8 ] -[ "sys", "int", "wrd", 32, 1, 2, 7 ] [ "sys", "json", "json", 0, 0, 0, 16 ] [ "sys", "lng", "bigint", 64, 1, 2, 7 ] [ "sys", "lng", "decimal", 18, 1, 10, 10 ] diff --git a/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128 b/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128 --- a/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128 +++ b/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128 @@ -6176,7 +6176,6 @@ drop function pcre_replace(string, strin [ "sys", "lng", "bigint", 64, 1, 2, 7 ] [ "sys", "lng", "decimal", 18, 1, 10, 10 ] [ "sys", "lng", "sec_interval", 13, 1, 10, 9 ] -[ "sys", "lng", "wrd", 64, 1, 2, 7 ] [ "sys", "mbr", "mbr", 0, 0, 0, 16 ] [ "sys", "oid", "oid", 63, 0, 2, 6 ] [ "sys", "ptr", "ptr", 0, 0, 0, 1 ] diff --git a/sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128 b/sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128 --- a/sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128 +++ b/sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128 @@ -6176,7 +6176,6 @@ drop function pcre_replace(string, strin [ "sys", "lng", "bigint", 64, 1, 2, 7 ] [ "sys", "lng", "decimal", 18, 1, 10, 10 ] [ "sys", "lng", "sec_interval", 13, 1, 10, 9 ] -[ "sys", "lng", "wrd", 64, 1, 2, 7 ] [ "sys", "mbr", "mbr", 0, 0, 0, 16 ] [ "sys", "oid", "oid", 63, 0, 2, 6 ] [ "sys", "ptr", "ptr", 0, 0, 0, 1 ] diff --git
MonetDB: Dec2016 - fixed bug in rel_read, solves bug 6289
Changeset: ec29ede4f97c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec29ede4f97c Modified Files: sql/server/rel_dump.c sql/server/rel_optimizer.c Branch: Dec2016 Log Message: fixed bug in rel_read, solves bug 6289 diffs (27 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -1182,7 +1182,9 @@ rel_read(mvc *sql, char *r, int *pos, li gexps = read_exps(sql, nrel, NULL, NULL, r, pos, '[', 0); skipWS(r, pos); - exps = read_exps(sql, nrel, NULL, NULL, r, pos, '[', 1); + exps = read_exps(sql, nrel, NULL, gexps, r, pos, '[', 1); + if (!exps) + return NULL; rel = rel_groupby(sql, nrel, gexps); rel->exps = exps; diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -2461,7 +2461,8 @@ static sql_exp * math_unsafe_fixup( mvc *sql, sql_exp *e, sql_exp *cond, int lr ) { list *args = e->l; - if (args->h->next) + + if (args && args->h && args->h->next) return math_unsafe_fixup_binop(sql, e, args->h->data, args->h->next->data, cond, lr); else return math_unsafe_fixup_unop(sql, e, args->h->data, cond, lr); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Merge with Jul2017 branch.
Changeset: 720f0a5f3636 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=720f0a5f3636 Removed Files: NT/updatecodes.py Modified Files: sql/server/rel_dump.c Branch: default Log Message: Merge with Jul2017 branch. diffs (69 lines): diff --git a/NT/updatecodes.py b/NT/updatecodes.py deleted file mode 100755 --- a/NT/updatecodes.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/python - -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V. - -import subprocess -import re - -prcdre = re.compile('"ProductCode" = "8:{(.*)}"') -pacdre = re.compile('"PackageCode" = "8:{(.*)}"') - -def update(f): -p = subprocess.Popen(['uuidgen'], stdout = subprocess.PIPE, - universal_newlines = True) -u, e = p.communicate() -productcode = u.strip('\n').upper() -p = subprocess.Popen(['uuidgen'], stdout = subprocess.PIPE, - universal_newlines = True) -u, e = p.communicate() -packagecode = u.strip('\n').upper() -fp = open(f) -data = fp.read() -fp.close() -repl = '"ProductCode" = "8:{%s}"' % productcode -data = prcdre.sub(repl, data) -repl = '"PackageCode" = "8:{%s}"' % packagecode -data = pacdre.sub(repl, data) -fp = open(f, 'w') -fp.write(data) -fp.close() - -if __name__ == '__main__': -import sys -for f in sys.argv[1:]: -update(f) diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -1308,19 +1308,19 @@ rel_read(mvc *sql, char *r, int *pos, li rel->exps = exps; return rel; case 'u': - if (j != op_basetable) { + if (j == op_basetable) { *pos += (int) strlen("union"); j = op_union; } /* fall through */ case 'i': - if (j != op_basetable) { + if (j == op_basetable) { *pos += (int) strlen("intersect"); j = op_inter; } /* fall through */ case 'e': - if (j != op_basetable) { + if (j == op_basetable) { *pos += (int) strlen("except"); j = op_except; } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list