Changeset: a3da268f796f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a3da268f796f Added Files: sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.err sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.out Modified Files: monetdb5/modules/kernel/aggr.c Branch: Oct2014 Log Message:
Fix for bug 3611. If the main bat is empty, the quantile bat may also be empty. In that case, just use 0.5 as quantile value so that we get a result with a nil value. diffs (146 lines): diff --git a/monetdb5/modules/kernel/aggr.c b/monetdb5/modules/kernel/aggr.c --- a/monetdb5/modules/kernel/aggr.c +++ b/monetdb5/modules/kernel/aggr.c @@ -682,13 +682,17 @@ AGGRsubgroupedExt(bat *retval1, bat *ret if (grpfunc1) bn = (*grpfunc1)(b, g, e, s, tp, skip_nils, abort_on_error); if (quantilefunc) { - assert(BATcount(q)>0); + assert(BATcount(q) > 0 || BATcount(b) == 0); assert(q->ttype == TYPE_dbl); - qvalue = ((const double *)Tloc(q, BUNfirst(q)))[0]; - if (qvalue < 0|| qvalue > 1) { - char *s; - s = createException(MAL, malfunc, "quantile value of %f is not in range [0,1]", qvalue); - return s; + if (BATcount(q) == 0) { + qvalue = 0.5; + } else { + qvalue = ((const dbl *)Tloc(q, BUNfirst(q)))[0]; + if (qvalue < 0|| qvalue > 1) { + char *s; + s = createException(MAL, malfunc, "quantile value of %f is not in range [0,1]", qvalue); + return s; + } } bn = (*quantilefunc)(b, g, e, s, tp, qvalue, skip_nils, abort_on_error); } diff --git a/sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.err b/sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.err @@ -0,0 +1,37 @@ +stderr of test 'empty_intermediate_quantile.Bug-3611` in directory 'sql/test/BugTracker-2014` itself: + + +# 15:37:45 > +# 15:37:45 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=37103" "--set" "mapi_usock=/var/tmp/mtest-6192/.s.monetdb.37103" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014" "--set" "mal_listing=0" "--set" "embedded_r=yes" +# 15:37:45 > + +# builtin opt gdk_dbpath = /ufs/sjoerd/Monet-candidate/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 = 37103 +# cmdline opt mapi_usock = /var/tmp/mtest-6192/.s.monetdb.37103 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014 +# cmdline opt mal_listing = 0 +# cmdline opt embedded_r = yes +# cmdline opt gdk_debug = 536870922 + +# 15:37:46 > +# 15:37:46 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-6192" "--port=37103" +# 15:37:46 > + + +# 15:37:46 > +# 15:37:46 > "Done." +# 15:37:46 > + diff --git a/sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.out b/sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.out @@ -0,0 +1,72 @@ +stdout of test 'empty_intermediate_quantile.Bug-3611` in directory 'sql/test/BugTracker-2014` itself: + + +# 15:37:45 > +# 15:37:45 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=37103" "--set" "mapi_usock=/var/tmp/mtest-6192/.s.monetdb.37103" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014" "--set" "mal_listing=0" "--set" "embedded_r=yes" +# 15:37:45 > + +# MonetDB 5 server v11.19.4 (hg id: 957ab8b84580+) +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2014', 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-2014 MonetDB B.V., all rights reserved +# Visit http://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://madrid.ins.cwi.nl:37103/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-6192/.s.monetdb.37103 +# 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 + +# 15:37:46 > +# 15:37:46 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-6192" "--port=37103" +# 15:37:46 > + +#START TRANSACTION; +#CREATE TABLE tempa ( one double , two integer ) ; +#INSERT INTO tempa VALUES ( 1.0 , 1 ) , ( 2.0 , 2 ) ; +[ 2 ] +#SELECT quantile( one , 0.25 ) , quantile( one , 0.5 ) FROM tempa WHERE two > 2 ; +% sys.L1, sys.L2 # table_name +% L1, L2 # name +% double, double # type +% 24, 24 # length +[ NULL, NULL ] +#ROLLBACK; + +# 15:37:46 > +# 15:37:46 > "Done." +# 15:37:46 > + _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list