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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to