MonetDB: stratified_sampling - Approve tests.

2017-06-28 Thread Mark Raasveldt
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 ...

2017-06-28 Thread Mark Raasveldt
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...

2017-06-28 Thread Mark Raasveldt
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.

2017-06-28 Thread Mark Raasveldt
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.

2017-06-28 Thread Mark Raasveldt
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

2017-06-28 Thread Pedro Ferreira
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

2017-06-28 Thread Pedro Ferreira
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 (...

2017-06-28 Thread Niels Nes
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.

2017-06-28 Thread Sjoerd Mullender
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.

2017-06-28 Thread Sjoerd Mullender
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.

2017-06-28 Thread Sjoerd Mullender
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.

2017-06-28 Thread Sjoerd Mullender
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.

2017-06-28 Thread Sjoerd Mullender
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.

2017-06-28 Thread Sjoerd Mullender
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

2017-06-28 Thread Niels Nes
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

2017-06-28 Thread Niels Nes
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.

2017-06-28 Thread Mark Raasveldt
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.

2017-06-28 Thread Mark Raasveldt
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...

2017-06-28 Thread Pedro Ferreira
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.

2017-06-28 Thread Abe Wits
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

2017-06-28 Thread Niels Nes
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.

2017-06-28 Thread Sjoerd Mullender
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

2017-06-28 Thread Niels Nes
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.

2017-06-28 Thread Sjoerd Mullender
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