Changeset: 9ae9190996d9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9ae9190996d9
Added Files:
        sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.sql
        sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.stable.err
        sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.stable.out
Modified Files:
        monetdb5/modules/kernel/group.c
        monetdb5/optimizer/opt_pushselect.c
        sql/backends/monet5/sql_gencode.c
        sql/server/rel_select.c
        sql/test/BugTracker-2013/Tests/All
Branch: default
Log Message:

Merge with Feb2013 branch.


diffs (251 lines):

diff --git a/monetdb5/optimizer/opt_pushselect.c 
b/monetdb5/optimizer/opt_pushselect.c
--- a/monetdb5/optimizer/opt_pushselect.c
+++ b/monetdb5/optimizer/opt_pushselect.c
@@ -190,7 +190,7 @@ OPTpushselectImplementation(Client cntxt
                }
        }
 
-       if ((!subselects.nr && !nr_topn && !nr_likes)  || newMalBlkStmt(mb, 
mb->ssize+20) <0 ) {
+       if ((!subselects.nr && !nr_topn && !nr_likes) || newMalBlkStmt(mb, 
mb->ssize+20) <0 ) {
                GDKfree(vars);
                return 0;
        }
@@ -382,5 +382,6 @@ OPTpushselectImplementation(Client cntxt
                if (old[i])
                        pushInstruction(mb,old[i]);
        GDKfree(vars);
+       GDKfree(old);
        return actions;
 }
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -943,7 +943,7 @@ _dumpstmt(backend *sql, MalBlkPtr mb, st
 
                                /* since both arguments of algebra.slice are
                                   inclusive correct the LIMIT value by
-                                  substracting 1 */
+                                  subtracting 1 */
                                if (s->op2->op4.aval->data.val.wval) {
                                        assert(0);
                                        q = newStmt1(mb, calcRef, "-");
@@ -965,7 +965,7 @@ _dumpstmt(backend *sql, MalBlkPtr mb, st
 
                                /* since both arguments of algebra.subslice are
                                   inclusive correct the LIMIT value by
-                                  substracting 1 */
+                                  subtracting 1 */
                                q = newStmt1(mb, calcRef, "-");
                                q = pushArgument(mb, q, len);
                                q = pushInt(mb, q, 1);
@@ -1259,7 +1259,7 @@ _dumpstmt(backend *sql, MalBlkPtr mb, st
                                break;
                        }
                        /* if st_join2 try to convert to bandjoin */
-                       /* ie check if we substract/add a constant, to the
+                       /* ie check if we subtract/add a constant, to the
                           same column */
                        if (s->type == st_join2 &&
                            range_join_convertable(s, &base, &low, &high)) {
@@ -1805,6 +1805,7 @@ _dumpstmt(backend *sql, MalBlkPtr mb, st
                        char aggrF[64];
                        int restype = s->op4.aggrval->res.type->localtype;
                        int complex_aggr = 0;
+                       int abort_on_error;
 
                        if (backend_create_func(sql, s->op4.aggrval->aggr) < 0)
                                return -1;
@@ -1815,6 +1816,11 @@ _dumpstmt(backend *sql, MalBlkPtr mb, st
                            strcmp(aggrfunc, "sum") == 0 ||
                            strcmp(aggrfunc, "prod") == 0)
                                complex_aggr = 1;
+                       /* some "sub" aggregates have an extra
+                        * argument "abort_on_error" */
+                       abort_on_error = complex_aggr ||
+                               strncmp(aggrfunc, "stdev", 5) == 0 ||
+                               strncmp(aggrfunc, "variance", 8) == 0;
 
                        if (s->op3) {
                                snprintf(aggrF, 64, "sub%s", aggrfunc);
@@ -1861,7 +1867,7 @@ _dumpstmt(backend *sql, MalBlkPtr mb, st
                                q = pushArgument(mb, q, e);
                                g = getDestVar(q);
                                q = pushBit(mb, q, no_nil);
-                               if (complex_aggr)
+                               if (abort_on_error)
                                        q = pushBit(mb, q, TRUE);
                        }
                        s->nr = getDestVar(q);
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
@@ -3370,7 +3370,7 @@ rel_unop(mvc *sql, sql_rel **rel, symbol
 
 
 #define is_addition(fname) (strcmp(fname, "sql_add") == 0)
-#define is_substraction(fname) (strcmp(fname, "sql_sub") == 0)
+#define is_subtraction(fname) (strcmp(fname, "sql_sub") == 0)
 
 sql_exp *
 rel_binop_(mvc *sql, sql_exp *l, sql_exp *r, sql_schema *s,
@@ -3395,7 +3395,7 @@ rel_binop_(mvc *sql, sql_exp *l, sql_exp
        if (!t1 || !t2)
                return sql_error(sql, 01, "Cannot have a parameter (?) on both 
sides of an expression");
 
-       if ((is_addition(fname) || is_substraction(fname)) && t1->type->eclass 
== EC_NUM && t2->type->eclass == EC_NUM) {
+       if ((is_addition(fname) || is_subtraction(fname)) && t1->type->eclass 
== EC_NUM && t2->type->eclass == EC_NUM) {
                sql_subtype ntp;
 
                sql_find_numeric(&ntp, t1->type->localtype, t1->digits+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
@@ -5,3 +5,4 @@ subtract-one-year.Bug-3215
 perl-undef-0.Bug-3235
 crash-from-optimizer.Bug-3241
 select-view-view.Bug-3245
+stddev-group.Bug-3257
diff --git a/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.sql 
b/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.sql
@@ -0,0 +1,8 @@
+start transaction;
+create table t3257 (i int, j int);
+insert into t3257 values (0, 0), (1, 0), (2, 1), (3, 1);
+select stddev_pop(i) from t3257;
+select stddev_pop(i) from t3257 group by j;
+select var_pop(i) from t3257;
+select var_pop(i) from t3257 group by j;
+rollback;
diff --git a/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.stable.err 
b/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'stddev-group.Bug-3257` in directory 'sql/test/BugTracker-2013` 
itself:
+
+
+# 14:53:54 >  
+# 14:53:54 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=31114" "--set" 
"mapi_usock=/var/tmp/mtest-31621/.s.monetdb.31114" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2013" 
"--set" "mal_listing=0"
+# 14:53:54 >  
+
+# builtin opt  gdk_dbpath = /ufs/sjoerd/Monet-stable/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 = 31114
+# cmdline opt  mapi_usock = /var/tmp/mtest-31621/.s.monetdb.31114
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2013
+# cmdline opt  mal_listing = 0
+
+# 14:53:55 >  
+# 14:53:55 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-31621" "--port=31114"
+# 14:53:55 >  
+
+
+# 14:53:55 >  
+# 14:53:55 >  "Done."
+# 14:53:55 >  
+
diff --git a/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.stable.out 
b/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2013/Tests/stddev-group.Bug-3257.stable.out
@@ -0,0 +1,86 @@
+stdout of test 'stddev-group.Bug-3257` in directory 'sql/test/BugTracker-2013` 
itself:
+
+
+# 14:53:54 >  
+# 14:53:54 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=31114" "--set" 
"mapi_usock=/var/tmp/mtest-31621/.s.monetdb.31114" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2013" 
"--set" "mal_listing=0"
+# 14:53:54 >  
+
+# MonetDB 5 server v11.15.4 (hg id: 94f2735ddd81+)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2013', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 15.629 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://madrid.ins.cwi.nl:31114/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-31621/.s.monetdb.31114
+# MonetDB/GIS module loaded
+# MonetDB/JAQL module loaded
+# MonetDB/SQL 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_history.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 17_compress.sql
+# loading sql script: 18_dictionary.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: 39_analytics.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 99_system.sql
+
+# 14:53:55 >  
+# 14:53:55 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-31621" "--port=31114"
+# 14:53:55 >  
+
+#start transaction;
+#create table t3257 (i int, j int);
+#insert into t3257 values (0, 0), (1, 0), (2, 1), (3, 1);
+[ 4    ]
+#select stddev_pop(i) from t3257;
+% sys.t3257 # table_name
+% L1 # name
+% double # type
+% 24 # length
+[ 1.118033989  ]
+#select stddev_pop(i) from t3257 group by j;
+% sys.t3257 # table_name
+% L1 # name
+% double # type
+% 24 # length
+[ 0.5  ]
+[ 0.5  ]
+#select var_pop(i) from t3257;
+% sys.t3257 # table_name
+% L1 # name
+% double # type
+% 24 # length
+[ 1.25 ]
+#select var_pop(i) from t3257 group by j;
+% sys.t3257 # table_name
+% L1 # name
+% double # type
+% 24 # length
+[ 0.25 ]
+[ 0.25 ]
+#rollback;
+
+# 14:53:55 >  
+# 14:53:55 >  "Done."
+# 14:53:55 >  
+
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to