Changeset: 332e4c09e080 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=332e4c09e080 Added Files: sql/test/bugs/Tests/apply_with_union_assertion.sql sql/test/bugs/Tests/apply_with_union_assertion.stable.err sql/test/bugs/Tests/apply_with_union_assertion.stable.out Branch: Oct2014 Log Message:
Added a test for the crash fixed by changeset 83b96198059d diffs (196 lines): diff --git a/sql/test/bugs/Tests/apply_with_union_assertion.sql b/sql/test/bugs/Tests/apply_with_union_assertion.sql new file mode 100644 --- /dev/null +++ b/sql/test/bugs/Tests/apply_with_union_assertion.sql @@ -0,0 +1,39 @@ +CREATE TABLE tbl (col1 DATE, col2 DATE, col3 CHARACTER LARGE OBJECT, col4 CHARACTER LARGE OBJECT); +CREATE TABLE tbl1 (col7 DATE, col3 CHARACTER LARGE OBJECT, col4 CHARACTER LARGE OBJECT, col5 BOOLEAN, col6 CHARACTER LARGE OBJECT); +INSERT INTO tbl VALUES ('2015-01-01','2015-01-01','Z','0000'); +INSERT INTO tbl1 VALUES ('2015-01-01','Z','0000',false,''); + +CREATE FUNCTION mydateformat(d date) +RETURNS CHAR(10) +BEGIN + DECLARE outdate varchar(10); + DECLARE dt int; + DECLARE dm int; + SET dt = EXTRACT(DAY FROM d); + IF (dt < 10 ) + THEN SET outdate = '0' || dt || '-'; + ELSE SET outdate = dt || '-'; + END IF; + SET dm = EXTRACT(MONTH FROM d); + IF (dm < 10 ) + THEN SET outdate = outdate || '0' || dm || '-'; + ELSE SET outdate = outdate || dm || '-'; + END IF; + SET outdate = outdate || EXTRACT(YEAR FROM d); + RETURN outdate; +END; + +UPDATE tbl1 +SET (col5,col6) = ( + SELECT true ,'overwriten by col6 with tbl.col3 (' || tbl.col3 || ') and tbl.col1 (' || mydateformat(tbl.col1) || ') and tbl.col2 (' || mydateformat(tbl.col2) || ')' + FROM tbl + WHERE tbl1.col7 >= tbl.col1 AND tbl1.col7 <= tbl.col2 + AND ( (tbl1.col3 = tbl.col3 AND (tbl1.col4 = '0000' OR tbl.col4 = '0000')) OR (tbl1.col4 = tbl.col4)) +); + +SELECT * FROM tbl1; + +DROP FUNCTION mydateformat; +DROP TABLE tbl1; +DROP TABLE tbl; + diff --git a/sql/test/bugs/Tests/apply_with_union_assertion.stable.err b/sql/test/bugs/Tests/apply_with_union_assertion.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/bugs/Tests/apply_with_union_assertion.stable.err @@ -0,0 +1,37 @@ +stderr of test 'apply_with_union_assertion` in directory 'sql/test/bugs` itself: + + +# 15:11:29 > +# 15:11:29 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=33563" "--set" "mapi_usock=/var/tmp/mtest-12425/.s.monetdb.33563" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/export/scratch2/zhang/monet-install/Oct2014/debug/var/MonetDB/mTests_sql_test_bugs" "--set" "mal_listing=0" "--set" "embedded_r=yes" +# 15:11:29 > + +# builtin opt gdk_dbpath = /export/scratch2/zhang/monet-install/Oct2014/debug/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 = 50000 +# 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 = 33563 +# cmdline opt mapi_usock = /var/tmp/mtest-12425/.s.monetdb.33563 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /export/scratch2/zhang/monet-install/Oct2014/debug/var/MonetDB/mTests_sql_test_bugs +# cmdline opt mal_listing = 0 +# cmdline opt embedded_r = yes +# cmdline opt gdk_debug = 536870922 + +# 15:11:30 > +# 15:11:30 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-12425" "--port=33563" +# 15:11:30 > + + +# 15:11:30 > +# 15:11:30 > "Done." +# 15:11:30 > + diff --git a/sql/test/bugs/Tests/apply_with_union_assertion.stable.out b/sql/test/bugs/Tests/apply_with_union_assertion.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/bugs/Tests/apply_with_union_assertion.stable.out @@ -0,0 +1,105 @@ +stdout of test 'apply_with_union_assertion` in directory 'sql/test/bugs` itself: + + +# 15:11:29 > +# 15:11:29 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=33563" "--set" "mapi_usock=/var/tmp/mtest-12425/.s.monetdb.33563" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/export/scratch2/zhang/monet-install/Oct2014/debug/var/MonetDB/mTests_sql_test_bugs" "--set" "mal_listing=0" "--set" "embedded_r=yes" +# 15:11:29 > + +# MonetDB 5 server v11.19.10 +# This is an unreleased version +# Serving database 'mTests_sql_test_bugs', using 8 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Found 15.590 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://riga.ins.cwi.nl:33563/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-12425/.s.monetdb.33563 +# MonetDB/GIS module loaded +# MonetDB/SQL module loaded +# MonetDB/R module loaded + +Ready. +# SQL catalog created, loading sql scripts once +# loading sql script: 09_like.sql +# loading sql script: 10_math.sql +# loading sql script: 11_times.sql +# loading sql script: 12_url.sql +# loading sql script: 13_date.sql +# loading sql script: 14_inet.sql +# loading sql script: 15_querylog.sql +# loading sql script: 16_tracelog.sql +# loading sql script: 19_cluster.sql +# loading sql script: 20_vacuum.sql +# loading sql script: 21_dependency_functions.sql +# loading sql script: 22_clients.sql +# loading sql script: 23_skyserver.sql +# loading sql script: 24_zorder.sql +# loading sql script: 25_debug.sql +# loading sql script: 26_sysmon.sql +# loading sql script: 39_analytics.sql +# loading sql script: 40_geom.sql +# loading sql script: 40_json.sql +# loading sql script: 41_jsonstore.sql +# loading sql script: 45_uuid.sql +# loading sql script: 46_gsl.sql +# loading sql script: 75_storagemodel.sql +# loading sql script: 80_statistics.sql +# loading sql script: 80_udf.sql +# loading sql script: 85_bam.sql +# loading sql script: 90_generator.sql +# loading sql script: 99_system.sql +#WARNING To speedup user.mydateformat a bulk operator implementation is needed +#WARNING To speedup user.mydateformat a bulk operator implementation is needed + +# 15:11:30 > +# 15:11:30 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-12425" "--port=33563" +# 15:11:30 > + +#CREATE TABLE tbl (col1 DATE, col2 DATE, col3 CHARACTER LARGE OBJECT, col4 CHARACTER LARGE OBJECT); +#CREATE TABLE tbl1 (col7 DATE, col3 CHARACTER LARGE OBJECT, col4 CHARACTER LARGE OBJECT, col5 BOOLEAN, col6 CHARACTER LARGE OBJECT); +#INSERT INTO tbl VALUES ('2015-01-01','2015-01-01','Z','0000'); +[ 1 ] +#INSERT INTO tbl1 VALUES ('2015-01-01','Z','0000',false,''); +[ 1 ] +#CREATE FUNCTION mydateformat(d date) +#RETURNS CHAR(10) +#BEGIN +# DECLARE outdate varchar(10); +# DECLARE dt int; +# DECLARE dm int; +# SET dt = EXTRACT(DAY FROM d); +# IF (dt < 10 ) +# THEN SET outdate = '0' || dt || '-'; +# ELSE SET outdate = dt || '-'; +# END IF; +# SET dm = EXTRACT(MONTH FROM d); +# IF (dm < 10 ) +# THEN SET outdate = outdate || '0' || dm || '-'; +# ELSE SET outdate = outdate || dm || '-'; +# END IF; +# SET outdate = outdate || EXTRACT(YEAR FROM d); +# RETURN outdate; +#END; +#UPDATE tbl1 +#SET (col5,col6) = ( +# SELECT true ,'overwriten by col6 with tbl.col3 (' || tbl.col3 || ') and tbl.col1 (' || mydateformat(tbl.col1) || ') and tbl.col2 (' || mydateformat(tbl.col2) || ')' +# FROM tbl +# WHERE tbl1.col7 >= tbl.col1 AND tbl1.col7 <= tbl.col2 +# AND ( (tbl1.col3 = tbl.col3 AND (tbl1.col4 = '0000' OR tbl.col4 = '0000')) OR (tbl1.col4 = tbl.col4)) +#); +[ 1 ] +#SELECT * FROM tbl1; +% sys.tbl1, sys.tbl1, sys.tbl1, sys.tbl1, sys.tbl1 # table_name +% col7, col3, col4, col5, col6 # name +% date, clob, clob, boolean, clob # type +% 10, 1, 4, 5, 88 # length +[ 2015-01-01, "Z", "0000", true, "overwriten by col6 with tbl.col3 (Z) and tbl.col1 (01-01-2015) and tbl.col2 (01-01-2015)" ] +#DROP FUNCTION mydateformat; +#DROP TABLE tbl1; +#DROP TABLE tbl; + +# 15:11:30 > +# 15:11:30 > "Done." +# 15:11:30 > + _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list