Changeset: 309c27f88d09 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/309c27f88d09 Added Files: sql/test/BugTracker-2021/Tests/python-aggregates-void-bat.Bug-7138.test Removed Files: sql/test/BugTracker-2021/Tests/python-aggregates-void-bat.Bug-7138.sql sql/test/BugTracker-2021/Tests/python-aggregates-void-bat.Bug-7138.stable.err sql/test/BugTracker-2021/Tests/python-aggregates-void-bat.Bug-7138.stable.out Modified Files: sql/backends/monet5/UDF/pyapi3/pyapi3.c sql/test/BugTracker-2021/Tests/All Branch: Jul2021 Log Message:
Merged with Oct2020 and converted diffs (157 lines): diff --git a/sql/backends/monet5/UDF/pyapi3/pyapi3.c b/sql/backends/monet5/UDF/pyapi3/pyapi3.c --- a/sql/backends/monet5/UDF/pyapi3/pyapi3.c +++ b/sql/backends/monet5/UDF/pyapi3/pyapi3.c @@ -122,11 +122,19 @@ PYAPI3PyAPIevalAggrMap(Client cntxt, Mal } \ /*iterate over the elements of the current BAT*/ \ temp_indices = GDKzalloc(sizeof(lng) * group_count); \ - for (element_it = 0; element_it < elements; element_it++) { \ - /*group of current element*/ \ - oid group = aggr_group_arr[element_it]; \ - /*append current element to proper group*/ \ - ptr[group][i][temp_indices[group]++] = batcontent[element_it]; \ + if (BATtvoid(aggr_group)) { \ + for (element_it = 0; element_it < elements; element_it++) { \ + /*append current element to proper group*/ \ + ptr[element_it][i][temp_indices[element_it]++] = \ + batcontent[element_it]; \ + } \ + } else { \ + for (element_it = 0; element_it < elements; element_it++) { \ + /*group of current element*/ \ + oid group = aggr_group_arr[element_it]; \ + /*append current element to proper group*/ \ + ptr[group][i][temp_indices[group]++] = batcontent[element_it]; \ + } \ } \ GDKfree(temp_indices); \ } @@ -736,9 +744,15 @@ static str PyAPIeval(Client cntxt, MalBl goto aggrwrapup; } - aggr_group_arr = (oid *)aggr_group->theap->base + aggr_group->tbaseoff; - for (element_it = 0; element_it < elements; element_it++) { - group_counts[aggr_group_arr[element_it]]++; + if (BATtvoid(aggr_group)) { + for (element_it = 0; element_it < elements; element_it++) { + group_counts[element_it]++; + } + } else { + aggr_group_arr = (oid *)aggr_group->theap->base + aggr_group->tbaseoff; + for (element_it = 0; element_it < elements; element_it++) { + group_counts[aggr_group_arr[element_it]]++; + } } // now perform the actual splitting of the data, first construct @@ -807,13 +821,22 @@ static str PyAPIeval(Client cntxt, MalBl // iterate over the elements of the current BAT temp_indices = GDKzalloc(sizeof(PyObject *) * group_count); - for (element_it = 0; element_it < elements; - element_it++) { - // group of current element - oid group = aggr_group_arr[element_it]; - // append current element to proper group - ptr[group][i][temp_indices[group]++] = - batcontent[element_it]; + if (BATtvoid(aggr_group)) { + for (element_it = 0; element_it < elements; + element_it++) { + // append current element to proper group + ptr[element_it][i][temp_indices[element_it]++] = + batcontent[element_it]; + } + } else { + for (element_it = 0; element_it < elements; + element_it++) { + // group of current element + oid group = aggr_group_arr[element_it]; + // append current element to proper group + ptr[group][i][temp_indices[group]++] = + batcontent[element_it]; + } } GDKfree(temp_indices); break; diff --git a/sql/test/BugTracker-2021/Tests/All b/sql/test/BugTracker-2021/Tests/All --- a/sql/test/BugTracker-2021/Tests/All +++ b/sql/test/BugTracker-2021/Tests/All @@ -14,3 +14,4 @@ batappend-undefined.Bug-7130 WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133 WITH-alias-DELETE-2.deletes-too-many-tuples.Bug-7133 merge-delete.Bug-7136 +HAVE_LIBPY3?python-aggregates-void-bat.Bug-7138 diff --git a/sql/test/BugTracker-2021/Tests/SingleServer b/sql/test/BugTracker-2021/Tests/SingleServer new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2021/Tests/SingleServer @@ -0,0 +1,1 @@ +--set embedded_py=3 diff --git a/sql/test/BugTracker-2021/Tests/python-aggregates-void-bat.Bug-7138.test b/sql/test/BugTracker-2021/Tests/python-aggregates-void-bat.Bug-7138.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2021/Tests/python-aggregates-void-bat.Bug-7138.test @@ -0,0 +1,61 @@ +statement ok +START TRANSACTION + +statement ok +create table integers (i int) + +statement ok rowcount 10 +insert into integers (select value from generate_series(1,11,1)) + +statement ok +CREATE FUNCTION python_sum(v int) returns int +language P +{ + return numpy.sum(v) +} + +statement ok +CREATE FUNCTION python_sum2(v int) returns int +language PYTHON_MAP +{ + return numpy.sum(v) +} + +statement ok +CREATE AGGREGATE python_sum3(v int) returns int +language P +{ + return numpy.sum(v) +} + +statement ok +CREATE AGGREGATE python_sum4(v int) returns int +language PYTHON_MAP +{ + return numpy.sum(v) +} + +query I rowsort +select python_sum(i) from integers where i = 1 group by i +---- +1 + +query I rowsort +select python_sum2(i) from integers where i = 1 group by i +---- +1 + +query I rowsort +select python_sum3(i) from integers where i = 1 group by i +---- +1 + +query I rowsort +select python_sum4(i) from integers where i = 1 group by i +---- +1 + +statement ok +ROLLBACK + + _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list