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