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