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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list