Changeset: 88b94e330a48 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=88b94e330a48
Added Files:
        sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.sql
        
sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.err
        
sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out
        sql/test/LSST/Tests/cleanup.reqtests
        sql/test/LSST/Tests/dbQuery000.reqtests
        sql/test/LSST/Tests/dbQuery001.reqtests
        sql/test/LSST/Tests/dbQuery002.reqtests
        sql/test/LSST/Tests/dbQuery003.reqtests
        sql/test/LSST/Tests/dbQuery004.reqtests
        sql/test/LSST/Tests/dbQuery005.reqtests
        sql/test/LSST/Tests/dbQuery007.reqtests
        sql/test/LSST/Tests/dbQuery008.reqtests
        sql/test/LSST/Tests/dbQuery009.reqtests
        sql/test/LSST/Tests/dbQuery010.reqtests
        sql/test/LSST/Tests/dbQuery011.reqtests
        sql/test/LSST/Tests/dbQuery012.reqtests
        sql/test/LSST/Tests/dbQuery013.reqtests
        sql/test/LSST/Tests/dbQuery014.reqtests
        sql/test/LSST/Tests/dbQuery015.reqtests
        sql/test/LSST/Tests/dbQuery016.reqtests
        sql/test/LSST/Tests/dbQuery017.reqtests
        sql/test/LSST/Tests/dbQuery018.reqtests
        sql/test/LSST/Tests/dbQuery019.reqtests
        sql/test/LSST/Tests/dbQuery020.reqtests
        sql/test/LSST/Tests/dbQuery022.reqtests
        sql/test/LSST/Tests/dbQuery024.reqtests
        sql/test/LSST/Tests/dbQuery025.reqtests
        sql/test/LSST/Tests/dbQuery026.reqtests
        sql/test/LSST/Tests/dbQuery027.reqtests
        sql/test/LSST/Tests/dbQuery028.reqtests
        sql/test/LSST/Tests/dbQuery029.reqtests
        sql/test/LSST/Tests/dbQuery030.reqtests
        sql/test/LSST/Tests/dbQuery031.reqtests
        sql/test/LSST/Tests/dbQuery032.reqtests
        sql/test/LSST/Tests/dbQuery034.reqtests
        sql/test/LSST/Tests/dbQuery035.reqtests
        sql/test/LSST/Tests/dbQuery036.reqtests
        sql/test/LSST/Tests/dbQuery037.reqtests
        sql/test/LSST/Tests/dbQuery038.reqtests
        sql/test/LSST/Tests/dbQuery041.reqtests
        sql/test/LSST/Tests/dbQuery042.reqtests
        sql/test/LSST/Tests/dbQuery043.reqtests
        sql/test/LSST/Tests/dbQuery044.reqtests
        sql/test/LSST/Tests/dbQuery045.reqtests
        sql/test/LSST/Tests/dbQuery046.reqtests
        sql/test/LSST/Tests/dbQuery047.reqtests
        sql/test/LSST/Tests/dbQuery048.reqtests
        sql/test/LSST/Tests/dbQuery053.reqtests
        sql/test/LSST/Tests/dbQuery054.reqtests
        sql/test/LSST/Tests/dbQuery055.reqtests
        sql/test/LSST/Tests/dbQuery056.reqtests
        sql/test/LSST/Tests/dbQuery066.reqtests
        sql/test/Users/Tests/privs.reqtests
        sql/test/Users/Tests/privs2.reqtests
        sql/test/Users/Tests/role1.reqtests
        sql/test/Users/Tests/role2.reqtests
        sql/test/Users/Tests/table.reqtests
        sql/test/Users/Tests/test_privs2_p1.reqtests
        sql/test/Users/Tests/test_privs2_p2.reqtests
        sql/test/Users/Tests/test_privs_p1.reqtests
        sql/test/Users/Tests/test_privs_p2.reqtests
        sql/test/Users/Tests/unknown_user.reqtests
        sql/test/broken_delete/Tests/broken_delete_1.reqtests
        sql/test/broken_delete/Tests/broken_delete_2.reqtests
        sql/test/broken_delete/Tests/broken_delete_3.reqtests
        sql/test/broken_delete/Tests/broken_delete_4.reqtests
        sql/test/broken_delete/Tests/broken_delete_5.reqtests
        sql/test/rdf/Tests/drop_tables_t.reqtests
        sql/test/rdf/Tests/drop_tables_v.reqtests
        sql/test/rdf/Tests/q1_t.reqtests
        sql/test/rdf/Tests/q1_v.reqtests
        sql/test/rdf/Tests/q2_28_t.reqtests
        sql/test/rdf/Tests/q2_28_v.reqtests
        sql/test/rdf/Tests/q2_t.reqtests
        sql/test/rdf/Tests/q2_v.reqtests
        sql/test/rdf/Tests/q3_28_t.reqtests
        sql/test/rdf/Tests/q3_28_v.reqtests
        sql/test/rdf/Tests/q3_t.reqtests
        sql/test/rdf/Tests/q3_v.reqtests
        sql/test/rdf/Tests/q4_28_t.reqtests
        sql/test/rdf/Tests/q4_28_v.reqtests
        sql/test/rdf/Tests/q4_t.reqtests
        sql/test/rdf/Tests/q4_v.reqtests
        sql/test/rdf/Tests/q5_t.reqtests
        sql/test/rdf/Tests/q5_v.reqtests
        sql/test/rdf/Tests/q6_28_t.reqtests
        sql/test/rdf/Tests/q6_28_v.reqtests
        sql/test/rdf/Tests/q6_t.reqtests
        sql/test/rdf/Tests/q6_v.reqtests
        sql/test/rdf/Tests/q7_t.reqtests
        sql/test/rdf/Tests/q7_v.reqtests
        sql/test/rdf/Tests/q8_t.reqtests
        sql/test/rdf/Tests/q8_v.reqtests
        sql/test/sql_xml/Tests/xml.reqtests
        sql/test/sql_xml/Tests/xml_attribute_parsing.SF-1855673.reqtests
        sql/test/sql_xml/Tests/xmlelement_segfault.SF-2812767.reqtests
        sql/test/testdb/Tests/testdb-dump.reqtests
Modified Files:
        monetdb5/optimizer/opt_evaluate.c
        sql/server/rel_select.c
        sql/test/BugTracker-2013/Tests/All
Branch: SciQL-2
Log Message:

Merge with Feb2013 branch.


diffs (truncated from 825 to 300 lines):

diff --git a/monetdb5/optimizer/opt_evaluate.c 
b/monetdb5/optimizer/opt_evaluate.c
--- a/monetdb5/optimizer/opt_evaluate.c
+++ b/monetdb5/optimizer/opt_evaluate.c
@@ -111,6 +111,12 @@ OPTevaluateImplementation(Client cntxt, 
        if (assigned == NULL)
                return 0;
 
+       alias = (int*)GDKzalloc(mb->vsize * sizeof(int) * 2); /* we introduce 
more */
+       if (alias == NULL){
+               GDKfree(assigned);
+               return 0;
+       }
+
        limit = mb->stop;
        for (i = 1; i < limit; i++) {
                p = getInstrPtr(mb, i);
@@ -119,10 +125,6 @@ OPTevaluateImplementation(Client cntxt, 
                        assigned[getArg(p,k)]++;
        }
 
-       alias = (int*)GDKzalloc(mb->vsize * sizeof(int) * 2); /* we introduce 
more */
-       if (alias == NULL)
-               return 0;
-
        for (i = 1; i < limit; i++) {
                p = getInstrPtr(mb, i);
                use = assigned[getArg(p,0)] == 1 && !(p->argc == p->retc && 
blockExit(p));
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -2593,6 +2593,24 @@ exp_convert_inplace(mvc *sql, sql_subtyp
        return NULL;
 }
 
+static sql_exp *
+rel_numeric_supertype(mvc *sql, sql_exp *e )
+{
+       sql_subtype *tp = exp_subtype(e);
+
+       if (tp->type->eclass == EC_DEC) {
+               sql_subtype *dtp = sql_bind_localtype("dbl");
+
+               return rel_check_type(sql, dtp, e, type_cast);
+       }
+       if (tp->type->eclass == EC_NUM) {
+               sql_subtype *ltp = sql_bind_localtype("lng");
+
+               return rel_check_type(sql, ltp, e, type_cast);
+       }
+       return e;
+}
+
 sql_exp *
 rel_check_type(mvc *sql, sql_subtype *t, sql_exp *exp, int tpe)
 {
@@ -4571,26 +4589,6 @@ static sql_exp *
                        return e;
                }
                a = sql_bind_aggr(sql->sa, s, aname, NULL);
-               /* add aggr expression to the groupby, and return a
-                       column expression */
-
-               /* for correlated selections, we need to count on the
-                  join expression */
-               /*
-               if (groupby->r && exps_intern(groupby->r)) {
-                       sql_rel *i = groupby->l;
-
-                       if (i->exps && f == sql_sel && is_join(i->op)) {
-                               sql_rel *j = i->r;
-
-                               sql_exp *e = j->exps->h->data;
-                               assert(0);
-                               e = exp_column(sql->sa, exp_relname(e), 
exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0, e->type == 
e_column?e->f:NULL);
-                               e = exp_aggr1(sql->sa, e, a, distinct, 1, 
groupby->card, 0);
-                               return e;
-                       }
-               }
-               */
                e = exp_aggr(sql->sa, NULL, a, distinct, 0, groupby->card, 0);
                if (*rel == groupby && f == sql_sel) /* selection */
                        return e;
@@ -4623,22 +4621,40 @@ static sql_exp *
 
        a = sql_bind_aggr_(sql->sa, s, aname, exp_types(sql->sa, exps));
        if (!a) { /* find aggr + convert */
-               a = sql_find_aggr(sql->sa, s, aname);
-               if (a) {
-                       node *n, *op = a->aggr->ops->h;
-                       list *nexps = sa_list(sql->sa);
-
-                       for (n = exps->h ; a && op && n; op = op->next, n = 
n->next ) {
-                               sql_arg *arg = op->data;
-                               sql_exp *e = n->data;
-
-                               e = rel_check_type(sql, &arg->type, e, 
type_equal);
-                               if (!e)
-                                       a = NULL;
-                               list_append(nexps, e);
+               /* First try larger numeric type */
+               node *n;
+               list *nexps = sa_list(sql->sa);
+
+               for (n = exps->h ;  n; n = n->next ) {
+                       sql_exp *e = n->data;
+
+                       /* cast up, for now just dec to double */
+                       e = rel_numeric_supertype(sql, e);
+                       if (!e)
+                               break;
+                       list_append(nexps, e);
+               }
+               a = sql_bind_aggr_(sql->sa, s, aname, exp_types(sql->sa, 
nexps));
+               if (a && list_length(nexps))  /* count(col) has |exps| != 
|nexps| */
+                       exps = nexps;
+               if (!a) {
+                       a = sql_find_aggr(sql->sa, s, aname);
+                       if (a) {
+                               node *n, *op = a->aggr->ops->h;
+                               list *nexps = sa_list(sql->sa);
+
+                               for (n = exps->h ; a && op && n; op = op->next, 
n = n->next ) {
+                                       sql_arg *arg = op->data;
+                                       sql_exp *e = n->data;
+
+                                       e = rel_check_type(sql, &arg->type, e, 
type_equal);
+                                       if (!e)
+                                               a = NULL;
+                                       list_append(nexps, e);
+                               }
+                               if (a && list_length(nexps))  /* count(col) has 
|exps| != |nexps| */
+                                       exps = nexps;
                        }
-                       if (a && list_length(nexps))  /* count(col) has |exps| 
!= |nexps| */
-                               exps = nexps;
                }
        }
        /* TODO: convert to single super type (iff |exps| > 1) */
diff --git a/sql/test/BugTracker-2013/Tests/All 
b/sql/test/BugTracker-2013/Tests/All
--- a/sql/test/BugTracker-2013/Tests/All
+++ b/sql/test/BugTracker-2013/Tests/All
@@ -35,3 +35,4 @@ incorrect_subquery_delete.Bug-3315
 qualified_aggrname.Bug-3332
 cannot_use_columns_after_groupby.Bug-3340
 sort_void_crash.Bug-3341
+bogus_aggregation_casts.Bug-3342
diff --git 
a/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.sql 
b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.sql
@@ -0,0 +1,11 @@
+create table part (p_partkey integer not null, p_name varchar(55) not null, 
p_mfgr char(25) not null, p_brand char(10) not null, p_type varchar(25) not 
null, p_size integer not null, p_container char(10) not null, p_retailprice 
decimal(12,2) not null, p_comment varchar(23) not null);
+copy 5 records into part from stdin;
+1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO 
BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi|
+2|maroon sky cream royal snow|Manufacturer#1|Brand#13|LARGE BRUSHED BRASS|1|LG 
CASE|902.00|lar accounts amo|
+3|brown blue puff midnight black|Manufacturer#4|Brand#42|STANDARD POLISHED 
BRASS|21|WRAP CASE|903.00|egular deposits hag|
+4|orange goldenrod peach misty seashell|Manufacturer#3|Brand#34|SMALL PLATED 
BRASS|14|MED DRUM|904.00|p furiously r|
+5|midnight linen almond tomato plum|Manufacturer#3|Brand#32|STANDARD POLISHED 
TIN|15|SM PKG|905.00| wake carefully |
+
+select sys.median(cast (p_retailprice as double)) from part;
+select sys.median(p_retailprice) from part;
+drop table part;
diff --git 
a/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.err 
b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'bogus_aggregation_casts.Bug-3342` in directory 
'sql/test/BugTracker-2013` itself:
+
+
+# 21:17:24 >  
+# 21:17:24 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=30271" "--set" 
"mapi_usock=/var/tmp/mtest-12574/.s.monetdb.30271" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2013"
 "--set" "mal_listing=0"
+# 21:17:24 >  
+
+# builtin opt  gdk_dbpath = 
/home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# 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  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 30271
+# cmdline opt  mapi_usock = /var/tmp/mtest-12574/.s.monetdb.30271
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2013
+# cmdline opt  mal_listing = 0
+
+# 21:17:25 >  
+# 21:17:25 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-12574" "--port=30271"
+# 21:17:25 >  
+
+
+# 21:17:25 >  
+# 21:17:25 >  "Done."
+# 21:17:25 >  
+
diff --git 
a/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out 
b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out
@@ -0,0 +1,53 @@
+stdout of test 'bogus_aggregation_casts.Bug-3342` in directory 
'sql/test/BugTracker-2013` itself:
+
+
+# 21:17:24 >  
+# 21:17:24 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=30271" "--set" 
"mapi_usock=/var/tmp/mtest-12574/.s.monetdb.30271" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2013"
 "--set" "mal_listing=0"
+# 21:17:24 >  
+
+# MonetDB 5 server v11.15.12
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2013', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 3.775 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2013 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on 
mapi:monetdb://niels.nesco.mine.nu:30271/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-12574/.s.monetdb.30271
+# MonetDB/GIS module loaded
+# MonetDB/JAQL module loaded
+# MonetDB/SQL module loaded
+
+Ready.
+
+# 21:17:25 >  
+# 21:17:25 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-12574" "--port=30271"
+# 21:17:25 >  
+
+#create table part (p_partkey integer not null, p_name varchar(55) not null, 
p_mfgr char(25) not null, p_brand char(10) not null, p_type varchar(25) not 
null, p_size integer not null, p_container char(10) not null, p_retailprice 
decimal(12,2) not null, p_comment varchar(23) not null);
+#copy 5 records into part from stdin;
+#1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO 
BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi|
+#2|maroon sky cream royal snow|Manufacturer#1|Brand#13|LARGE BRUSHED 
BRASS|1|LG CASE|902.00|lar accounts amo|
+#3|brown blue puff midnight black|Manufacturer#4|Brand#42|STANDARD POLISHED 
BRASS|21|WRAP CASE|903.00|egular deposits hag|
+#4|orange goldenrod peach misty seashell|Manufacturer#3|Brand#34|SMALL PLATED 
BRASS|14|MED DRUM|904.00|p furiously r|
+#5|midnight linen almond tomato plum|Manufacturer#3|Brand#32|STANDARD POLISHED 
TIN|15|SM PKG|905.00| wake carefully |
+[ 5    ]
+#select sys.median(cast (p_retailprice as double)) from part;
+% sys.L1 # table_name
+% L1 # name
+% double # type
+% 24 # length
+[ 903  ]
+#select sys.median(p_retailprice) from part;
+% sys.L1 # table_name
+% L1 # name
+% double # type
+% 24 # length
+[ 903  ]
+#drop table part;
+
+# 21:17:25 >  
+# 21:17:25 >  "Done."
+# 21:17:25 >  
+
diff --git a/sql/test/LSST/Tests/cleanup.reqtests 
b/sql/test/LSST/Tests/cleanup.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/LSST/Tests/cleanup.reqtests
@@ -0,0 +1,1 @@
+schema_3_1_88
diff --git a/sql/test/LSST/Tests/dbQuery000.reqtests 
b/sql/test/LSST/Tests/dbQuery000.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/LSST/Tests/dbQuery000.reqtests
@@ -0,0 +1,1 @@
+schema_3_1_88
diff --git a/sql/test/LSST/Tests/dbQuery001.reqtests 
b/sql/test/LSST/Tests/dbQuery001.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/LSST/Tests/dbQuery001.reqtests
@@ -0,0 +1,1 @@
+schema_3_1_88
diff --git a/sql/test/LSST/Tests/dbQuery002.reqtests 
b/sql/test/LSST/Tests/dbQuery002.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/LSST/Tests/dbQuery002.reqtests
@@ -0,0 +1,1 @@
+schema_3_1_88
diff --git a/sql/test/LSST/Tests/dbQuery003.reqtests 
b/sql/test/LSST/Tests/dbQuery003.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/LSST/Tests/dbQuery003.reqtests
@@ -0,0 +1,1 @@
+schema_3_1_88
diff --git a/sql/test/LSST/Tests/dbQuery004.reqtests 
b/sql/test/LSST/Tests/dbQuery004.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/LSST/Tests/dbQuery004.reqtests
@@ -0,0 +1,1 @@
+schema_3_1_88
diff --git a/sql/test/LSST/Tests/dbQuery005.reqtests 
b/sql/test/LSST/Tests/dbQuery005.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/LSST/Tests/dbQuery005.reqtests
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to