Changeset: bc3b13d59fc0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bc3b13d59fc0
Added Files:
sql/test/BugTracker-2023/Tests/aggregate-vararg.Bug-7422.test
Modified Files:
sql/server/rel_select.c
sql/test/BugTracker-2023/Tests/All
sql/test/BugTracker-2023/Tests/SingleServer
Branch: Dec2023
Log Message:
handle aggregates with variable number of arguments, fixes bug #7422
Also added a test
diffs (51 lines):
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
@@ -4099,7 +4099,8 @@ static sql_exp *
found = true; /* something was found */
} else {
a = sf;
- exps = nexps;
+ if (!sf->func->vararg)
+ exps = nexps;
}
}
} else {
diff --git a/sql/test/BugTracker-2023/Tests/All
b/sql/test/BugTracker-2023/Tests/All
--- a/sql/test/BugTracker-2023/Tests/All
+++ b/sql/test/BugTracker-2023/Tests/All
@@ -22,3 +22,4 @@ insert-delete-insert-crash-7415
orderby-debug-crash-7416
newurl-issue-7417
rel_order_by-assertion-7418
+HAVE_LIBPY3?aggregate-vararg.Bug-7422
diff --git a/sql/test/BugTracker-2023/Tests/SingleServer
b/sql/test/BugTracker-2023/Tests/SingleServer
--- a/sql/test/BugTracker-2023/Tests/SingleServer
+++ b/sql/test/BugTracker-2023/Tests/SingleServer
@@ -0,0 +1,1 @@
+--set embedded_py=3
diff --git a/sql/test/BugTracker-2023/Tests/aggregate-vararg.Bug-7422.test
b/sql/test/BugTracker-2023/Tests/aggregate-vararg.Bug-7422.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2023/Tests/aggregate-vararg.Bug-7422.test
@@ -0,0 +1,20 @@
+statement ok
+CREATE OR REPLACE AGGREGATE python_aggregate (*)
+RETURNS INTEGER
+LANGUAGE PYTHON
+{
+try:
+ unique = numpy.unique(aggr_group)
+ x = numpy.zeros(shape=(unique.size))
+ for i in range(0, unique.size):
+ x[i] = numpy.sum(val[aggr_group==unique[i]])
+except NameError:
+# aggr_group doesn't exist. no groups, aggregate on all data
+ x = numpy.sum(arg2)
+return (x)
+}
+
+query I nosort
+select python_aggregate(5,2);
+----
+2
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]