Changeset: 03602986e015 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=03602986e015
Modified Files:
        sql/server/rel_optimizer.c
        sql/test/BugTracker-2011/Tests/All
        sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.sql
        sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.stable.err
        sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.stable.out
Branch: Apr2011
Log Message:

fixed bug in merging of single (theta expressions) into range expressions.
(fixes bug 2806)


diffs (205 lines):

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
@@ -3537,14 +3537,14 @@
                        e->r = exp_merge_range(sa, e->r);
                /* only look for gt, gte, lte, lt */
                } else if (n->next &&
-                   e->type == e_cmp && e->flag < cmp_equal && 
+                   e->type == e_cmp && e->flag < cmp_equal && !e->f && 
                    re->card == CARD_ATOM) {
                        for (m=n->next; m; m = m->next) {
                                sql_exp *f = m->data;
                                sql_exp *lf = f->l;
                                sql_exp *rf = f->r;
 
-                               if (f->type == e_cmp && f->flag < cmp_equal && 
+                               if (f->type == e_cmp && f->flag < cmp_equal && 
!f->f &&
                                    rf->card == CARD_ATOM && 
                                    exp_match_exp(le, lf)) {
                                        sql_exp *ne;
@@ -3574,14 +3574,14 @@
                                }
                        }
                } else if (n->next &&
-                          e->type == e_cmp && e->flag < cmp_equal && 
+                          e->type == e_cmp && e->flag < cmp_equal && !e->f && 
                           re->card > CARD_ATOM) {
                        for (m=n->next; m; m = m->next) {
                                sql_exp *f = m->data;
                                sql_exp *lf = f->l;
                                sql_exp *rf = f->r;
 
-                               if (f->type == e_cmp && f->flag < cmp_equal && 
+                               if (f->type == e_cmp && f->flag < cmp_equal && 
!f->f  &&
                                    rf->card > CARD_ATOM) {
                                        sql_exp *ne;
                                        int swap = 0, lt = 0, gt = 0;
diff --git a/sql/test/BugTracker-2011/Tests/All 
b/sql/test/BugTracker-2011/Tests/All
--- a/sql/test/BugTracker-2011/Tests/All
+++ b/sql/test/BugTracker-2011/Tests/All
@@ -8,3 +8,4 @@
 ambigous_idx_name.Bug-2800
 crash_on_alias.Bug-2798
 groupby_primary_key.Bug-2807
+merge_range_exp.Bug-2806
diff --git a/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.sql 
b/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.sql
@@ -0,0 +1,19 @@
+
+create table xx( id serial, ival int);
+
+insert into xx(ival) values(1),(2),(3),(4),(5),(6);
+
+select * from xx;
+
+create view iview as 
+select id,ival from xx where ival >=2 and ival <5;
+
+select * from iview;
+
+select * from iview where ival between 2 and 5;
+select * from iview where ival between 3 and 5;
+select * from iview where ival between 4 and 5;
+select * from iview where ival between 2 and 4;
+
+drop view iview;
+drop table xx;
diff --git a/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.stable.err 
b/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.stable.err
@@ -0,0 +1,39 @@
+stderr of test 'merge_range_exp.Bug-2806` in directory 'test/BugTracker-2011` 
itself:
+
+
+# 15:52:06 >  
+# 15:52:06 >   mserver5  --debug=10 --set gdk_nr_threads=0  --set 
"gdk_dbfarm=/ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" --set 
mapi_open=true --set mapi_port=31260 --set monet_prompt= --trace --forcemito 
--set mal_listing=2  "--dbname=mTests_test_BugTracker-2011" --set mal_listing=0 
; echo ; echo Over..
+# 15:52:06 >  
+
+# builtin opt  gdk_dbname = demo
+# builtin opt  gdk_dbfarm = 
/ufs/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_alloc_map = no
+# builtin opt  gdk_vmtrim = yes
+# 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  default_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# builtin opt  minimal_pipe = inline,remap,deadcode,multiplex,garbageCollector
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  gdk_dbfarm = 
/ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 31260
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbname = mTests_test_BugTracker-2011
+# cmdline opt  mal_listing = 0
+
+# 15:52:06 >  
+# 15:52:06 >  mclient -lsql -ftest -i -e --host=alf --port=31260 
+# 15:52:06 >  
+
+
+# 15:52:06 >  
+# 15:52:06 >  Done.
+# 15:52:06 >  
+
diff --git a/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.stable.out 
b/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2011/Tests/merge_range_exp.Bug-2806.stable.out
@@ -0,0 +1,87 @@
+stdout of test 'merge_range_exp.Bug-2806` in directory 'test/BugTracker-2011` 
itself:
+
+
+# 15:52:06 >  
+# 15:52:06 >   mserver5  --debug=10 --set gdk_nr_threads=0  --set 
"gdk_dbfarm=/ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" --set 
mapi_open=true --set mapi_port=31260 --set monet_prompt= --trace --forcemito 
--set mal_listing=2  "--dbname=mTests_test_BugTracker-2011" --set mal_listing=0 
; echo ; echo Over..
+# 15:52:06 >  
+
+# MonetDB 5 server v11.3.2
+# This is an unreleased version
+# Serving database 'mTests_test_BugTracker-2011', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 7.752 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2011 MonetDB B.V., all rights reserved
+# Visit http://monetdb.cwi.nl/ for further information
+# Listening for connection requests on mapi:monetdb://alf.ins.cwi.nl:31260/
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+
+Ready.
+
+Over..
+
+# 15:52:06 >  
+# 15:52:06 >  mclient -lsql -ftest -i -e --host=alf --port=31260 
+# 15:52:06 >  
+
+#create table xx( id serial, ival int);
+#insert into xx(ival) values(1),(2),(3),(4),(5),(6);
+[ 6    ]
+#select * from xx;
+% sys.xx,      sys.xx # table_name
+% id,  ival # name
+% int, int # type
+% 1,   1 # length
+[ 1,   1       ]
+[ 2,   2       ]
+[ 3,   3       ]
+[ 4,   4       ]
+[ 5,   5       ]
+[ 6,   6       ]
+#create view iview as 
+#select id,ival from xx where ival >=2 and ival <5;
+#select * from iview;
+% sys.iview,   sys.iview # table_name
+% id,  ival # name
+% int, int # type
+% 1,   1 # length
+[ 2,   2       ]
+[ 3,   3       ]
+[ 4,   4       ]
+#select * from iview where ival between 2 and 5;
+% sys.iview,   sys.iview # table_name
+% id,  ival # name
+% int, int # type
+% 1,   1 # length
+[ 2,   2       ]
+[ 3,   3       ]
+[ 4,   4       ]
+#select * from iview where ival between 3 and 5;
+% sys.iview,   sys.iview # table_name
+% id,  ival # name
+% int, int # type
+% 1,   1 # length
+[ 3,   3       ]
+[ 4,   4       ]
+#select * from iview where ival between 4 and 5;
+% sys.iview,   sys.iview # table_name
+% id,  ival # name
+% int, int # type
+% 1,   1 # length
+[ 4,   4       ]
+#select * from iview where ival between 2 and 4;
+% sys.iview,   sys.iview # table_name
+% id,  ival # name
+% int, int # type
+% 1,   1 # length
+[ 2,   2       ]
+[ 3,   3       ]
+[ 4,   4       ]
+#drop view iview;
+#drop table xx;
+
+# 15:52:06 >  
+# 15:52:06 >  Done.
+# 15:52:06 >  
+
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to