Changeset: 68f26b54b3d4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=68f26b54b3d4
Added Files:
        sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.sql
        sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.err
        sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.out
Modified Files:
        gdk/gdk_calc.c
        sql/test/BugTracker-2015/Tests/All
Branch: Oct2014
Log Message:

When converting to Boolean, sortedness and keyness get lost.
This fixes bug 3719.
Also added test.


diffs (179 lines):

diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -9812,14 +9812,18 @@ BATconvert(BAT *b, BAT *s, int tp, int a
 
        bn->T->nil = nils != 0;
        bn->T->nonil = nils == 0;
-       if (b->T->type != TYPE_str || BATcount(bn) < 2 ) {
+       if ((bn->T->type != TYPE_bit && b->T->type != TYPE_str) ||
+           BATcount(bn) < 2) {
                bn->T->sorted = nils == 0 && b->T->sorted;
                bn->T->revsorted = nils == 0 && b->T->revsorted;
        } else {
                bn->T->sorted = 0;
                bn->T->revsorted = 0;
        }
-       bn->T->key = (b->T->key & 1) && nils <= 1;
+       if (bn->T->type != TYPE_bit || BATcount(bn) < 2)
+               bn->T->key = (b->T->key & 1) && nils <= 1;
+       else
+               bn->T->key = 0;
 
        return bn;
 }
diff --git a/sql/test/BugTracker-2015/Tests/All 
b/sql/test/BugTracker-2015/Tests/All
--- a/sql/test/BugTracker-2015/Tests/All
+++ b/sql/test/BugTracker-2015/Tests/All
@@ -25,3 +25,4 @@ case_aggr.Bug-3705
 assertHead.Bug-3706
 ifthenelse.Bug-3699
 readonly.Bug-3709
+convert-to-bit.Bug-3719
diff --git a/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.sql 
b/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.sql
@@ -0,0 +1,11 @@
+START TRANSACTION;
+
+CREATE TABLE t1(a INTEGER, b INTEGER, c INTEGER, d INTEGER, e INTEGER);
+INSERT INTO t1(e,c,b,d,a) VALUES(103,102,100,101,104);
+INSERT INTO t1(a,c,d,e,b) VALUES(107,106,108,109,105);
+INSERT INTO t1(e,d,b,a,c) VALUES(110,114,112,111,113);
+INSERT INTO t1(d,c,e,a,b) VALUES(116,119,117,115,118);
+SELECT count(*) FROM t1 AS x;
+SELECT count(*) FROM t1 AS x WHERE x.c;
+
+ROLLBACK;
diff --git a/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.err 
b/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'convert-to-bit.Bug-3719` in directory 
'sql/test/BugTracker-2015` itself:
+
+
+# 21:04:30 >  
+# 21:04:30 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=34382" "--set" 
"mapi_usock=/var/tmp/mtest-24478/.s.monetdb.34382" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2015"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 21:04:30 >  
+
+# builtin opt  gdk_dbpath = /home/sjoerd/Monet-stable/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 = 34382
+# cmdline opt  mapi_usock = /var/tmp/mtest-24478/.s.monetdb.34382
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/home/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2015
+# cmdline opt  mal_listing = 0
+# cmdline opt  embedded_r = yes
+# cmdline opt  gdk_debug = 536870922
+
+# 21:04:30 >  
+# 21:04:30 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-24478" "--port=34382"
+# 21:04:30 >  
+
+
+# 21:04:31 >  
+# 21:04:31 >  "Done."
+# 21:04:31 >  
+
diff --git a/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.out 
b/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.out
@@ -0,0 +1,84 @@
+stdout of test 'convert-to-bit.Bug-3719` in directory 
'sql/test/BugTracker-2015` itself:
+
+
+# 21:04:30 >  
+# 21:04:30 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=34382" "--set" 
"mapi_usock=/var/tmp/mtest-24478/.s.monetdb.34382" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2015"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 21:04:30 >  
+
+# MonetDB 5 server v11.19.12 (hg id: afaaca293945+)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2015', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 7.733 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://gaai.mullender.nl:34382/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-24478/.s.monetdb.34382
+# 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
+
+# 21:04:30 >  
+# 21:04:30 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-24478" "--port=34382"
+# 21:04:30 >  
+
+#START TRANSACTION;
+#CREATE TABLE t1(a INTEGER, b INTEGER, c INTEGER, d INTEGER, e INTEGER);
+#INSERT INTO t1(e,c,b,d,a) VALUES(103,102,100,101,104);
+[ 1    ]
+#INSERT INTO t1(a,c,d,e,b) VALUES(107,106,108,109,105);
+[ 1    ]
+#INSERT INTO t1(e,d,b,a,c) VALUES(110,114,112,111,113);
+[ 1    ]
+#INSERT INTO t1(d,c,e,a,b) VALUES(116,119,117,115,118);
+[ 1    ]
+#SELECT count(*) FROM t1 AS x;
+% sys.L1 # table_name
+% L1 # name
+% wrd # type
+% 1 # length
+[ 4    ]
+#SELECT count(*) FROM t1 AS x WHERE x.c;
+% sys.L1 # table_name
+% L1 # name
+% wrd # type
+% 1 # length
+[ 4    ]
+#ROLLBACK;
+
+# 21:04:31 >  
+# 21:04:31 >  "Done."
+# 21:04:31 >  
+
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to