Changeset: 06c10a6c6aa5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/06c10a6c6aa5
Added Files:
sql/test/BugTracker-2024/Tests/7525-cudf-aggr-var-input.test
Modified Files:
sql/backends/monet5/UDF/capi/capi.c
sql/test/BugTracker-2022/Tests/All
sql/test/BugTracker-2024/Tests/All
sql/test/BugTracker-2024/Tests/SingleServer
Branch: Aug2024
Log Message:
fixes for bug #7525, ie properly initialize input variables for vararg
aggregates
diffs (83 lines):
diff --git a/sql/backends/monet5/UDF/capi/capi.c
b/sql/backends/monet5/UDF/capi/capi.c
--- a/sql/backends/monet5/UDF/capi/capi.c
+++ b/sql/backends/monet5/UDF/capi/capi.c
@@ -571,15 +571,16 @@ static str CUDFeval(Client cntxt, MalBlk
}
// the first unknown argument is the group, we don't really care for the
// rest.
- for (i = pci->retc + ARG_OFFSET; i < (size_t)pci->argc && !seengrp;
i++) {
+ for (i = pci->retc + ARG_OFFSET; i < (size_t)pci->argc; i++) {
if (args[i] == NULL) {
- if (!seengrp && grouped) {
+ if (grouped && (i+2) == (size_t)pci->argc) {
args[i] = GDKstrdup("aggr_group");
if (!args[i]) {
msg = createException(MAL, "cudf.eval",
MAL_MALLOC_FAIL);
goto wrapup;
}
- seengrp = i; /* Don't be interested in the
extents BAT */
+ seengrp = i++; /* Don't be interested in the
extents BAT */
+ break;
} else {
snprintf(argbuf, sizeof(argbuf), "arg%zu", i -
pci->retc - 1);
args[i] = GDKstrdup(argbuf);
diff --git a/sql/test/BugTracker-2022/Tests/All
b/sql/test/BugTracker-2022/Tests/All
--- a/sql/test/BugTracker-2022/Tests/All
+++ b/sql/test/BugTracker-2022/Tests/All
@@ -9,7 +9,7 @@ pkey-restart.Bug-7263
delete-update.Bug-7267
having-clauses.Bug-7278
dump-table-data.Bug-7282
-NOT_WIN32?cudf-grouped-aggr.Bug-7285
+HAVE_CUDF?cudf-grouped-aggr.Bug-7285
create_func_with_case_and_in
single_row_in_rel_order_by_column.Bug-7306
push-aggr-down-removes-distinct-on-union-all.Bug-7318
diff --git a/sql/test/BugTracker-2024/Tests/7525-cudf-aggr-var-input.test
b/sql/test/BugTracker-2024/Tests/7525-cudf-aggr-var-input.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/7525-cudf-aggr-var-input.test
@@ -0,0 +1,26 @@
+statement ok
+CREATE OR REPLACE AGGREGATE jit_sum(*) RETURNS BIGINT LANGUAGE C
+ {
+ // initialize one aggregate per group
+ result->initialize(result, aggr_group.count);
+ // zero initialize the sums
+ memset(result->data, 0, result->count * sizeof(result->null_value));
+ // gather the sums for each of the groups
+ for(size_t i = 0; i < arg2.count; i++) {
+ result->data[aggr_group.data[i]] += input.data[i];
+ }
+ };
+
+statement ok
+CREATE TABLE grouped_ints(value INTEGER, groupnr INTEGER);
+
+statement ok
+INSERT INTO grouped_ints VALUES (1, 0), (2, 1), (3, 0), (4, 1), (5, 0);
+
+query i, i
+SELECT groupnr, jit_sum(value) FROM grouped_ints GROUP BY groupnr;
+----
+0
+9
+1
+6
diff --git a/sql/test/BugTracker-2024/Tests/All
b/sql/test/BugTracker-2024/Tests/All
--- a/sql/test/BugTracker-2024/Tests/All
+++ b/sql/test/BugTracker-2024/Tests/All
@@ -60,6 +60,7 @@ 7512-concurrent-globaltmp-instantiate-cr
7513-uri-authority-parse-issue
7514-wrong-window-function
7524-right-outer-join
+HAVE_CUDF?7525-cudf-aggr-var-input
7528-jarowinkler-null
7534-is-distinct-from
7535-create-view-groupby-func
diff --git a/sql/test/BugTracker-2024/Tests/SingleServer
b/sql/test/BugTracker-2024/Tests/SingleServer
--- a/sql/test/BugTracker-2024/Tests/SingleServer
+++ b/sql/test/BugTracker-2024/Tests/SingleServer
@@ -0,0 +1,2 @@
+--set embedded_c=true
+--set capi_cc='cc -std=c99'
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]