Changeset: 31df346d9720 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/31df346d9720
Branch: Jul2021
Log Message:
merged
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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list