Changeset: 20df17272b37 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/20df17272b37
Added Files:
sql/test/BugTracker-2021/Tests/python-empty-arrays.Bug-7206.test
Modified Files:
sql/backends/monet5/UDF/pyapi3/conversion3.c
sql/test/BugTracker-2021/Tests/All
Branch: Jul2021
Log Message:
Added test and fix for bug #7206 Empty numpy arrays and lists are also single
arrays
diffs (75 lines):
diff --git a/sql/backends/monet5/UDF/pyapi3/conversion3.c
b/sql/backends/monet5/UDF/pyapi3/conversion3.c
--- a/sql/backends/monet5/UDF/pyapi3/conversion3.c
+++ b/sql/backends/monet5/UDF/pyapi3/conversion3.c
@@ -612,6 +612,8 @@ PyObject *PyObject_CheckForConversion(Py
if (PyType_IsNumpyArray(data)) {
if (PyArray_NDIM((PyArrayObject *)data) != 1) {
IsSingleArray = FALSE;
+ } else if (PyArray_SIZE((PyArrayObject *)data)
== 0) {
+ IsSingleArray = TRUE;
} else {
pColO = PyArray_GETITEM(
(PyArrayObject *)data,
@@ -619,8 +621,12 @@ PyObject *PyObject_CheckForConversion(Py
IsSingleArray =
PyType_IsPyScalar(pColO);
}
} else if (PyList_Check(data)) {
- pColO = PyList_GetItem(data, 0);
- IsSingleArray = PyType_IsPyScalar(pColO);
+ if (PyList_Size(data) == 0) {
+ IsSingleArray = TRUE;
+ } else {
+ pColO = PyList_GetItem(data, 0);
+ IsSingleArray =
PyType_IsPyScalar(pColO);
+ }
} else if (!PyType_IsNumpyMaskedArray(data)) {
// it is neither a python array, numpy array or
numpy masked
// array, thus the result is unsupported! Throw
an exception!
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
@@ -32,3 +32,4 @@ remote-table-large.Bug-7178
grouping-sets-aliases.Bug-7185
concurrent-add-column.Bug-7196
serializable-snapshot.Bug-7200
+HAVE_LIBPY3?python-empty-arrays.Bug-7206
diff --git a/sql/test/BugTracker-2021/Tests/python-empty-arrays.Bug-7206.test
b/sql/test/BugTracker-2021/Tests/python-empty-arrays.Bug-7206.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2021/Tests/python-empty-arrays.Bug-7206.test
@@ -0,0 +1,35 @@
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE OR REPLACE function f()
+returns table(s STRING, i INT)
+LANGUAGE PYTHON {
+ result = dict()
+ result['s'] = numpy.array(["test"], dtype=object)
+ result['i'] = numpy.array([5], dtype=int)
+ return(result)
+}
+
+statement ok
+CREATE OR REPLACE function f2()
+returns table(s STRING, i INT)
+LANGUAGE PYTHON {
+ result = dict()
+ result['s'] = numpy.array([], dtype=object)
+ result['i'] = numpy.array([], dtype=int)
+ return(result)
+}
+
+query TI rowsort
+select * from f()
+----
+test
+5
+
+query TI rowsort
+select * from f2()
+----
+
+statement ok
+ROLLBACK
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list