Changeset: a550e33cf6ac for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a550e33cf6ac
Modified Files:
        sql/test/BugTracker-2021/Tests/All
Branch: Jan2022
Log Message:

Merged with Jul2021


diffs (99 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
@@ -37,3 +37,4 @@ concurrent-add-column.Bug-7196
 serializable-snapshot.Bug-7200
 unique-idx.Bug-7201
 distinct-with-orderby.Bug-7202
+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,59 @@
+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)
+}
+
+statement ok
+CREATE OR REPLACE function f3()
+returns table(s STRING, i INT)
+LANGUAGE PYTHON {
+  return([["test"],[5]])
+}
+
+statement ok
+CREATE OR REPLACE function f4()
+returns table(s STRING, i INT)
+LANGUAGE PYTHON {
+  return([[],[]])
+}
+
+query TI rowsort
+select * from f()
+----
+test
+5
+
+query TI rowsort
+select * from f2()
+----
+
+query TI rowsort
+select * from f3()
+----
+test
+5
+
+query TI rowsort
+select * from f4()
+----
+
+statement ok
+ROLLBACK
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to