Changeset: 38d023249aa0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38d023249aa0 Modified Files: monetdb5/extras/pyapi/Tests/pyapi_types_string.malC monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.err monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.out monetdb5/extras/pyapi/pyapi.c monetdb5/extras/pyapi/type_conversion.c monetdb5/extras/pyapi/type_conversion.h Branch: pyapi Log Message:
Return BATs of the actual MAL types instead of the ATOMstorage type. diffs (truncated from 308 to 300 lines): diff --git a/monetdb5/extras/pyapi/Tests/pyapi_types_string.malC b/monetdb5/extras/pyapi/Tests/pyapi_types_string.malC --- a/monetdb5/extras/pyapi/Tests/pyapi_types_string.malC +++ b/monetdb5/extras/pyapi/Tests/pyapi_types_string.malC @@ -100,28 +100,28 @@ bat.append(bdbl,nil:dbl); rstr:bat[:oid,:str] := pyapi.eval(nil:ptr,"return(arg1)",bdbl); io.print(rstr); -# convert bit to string +# convert string to bit bstr:= bat.new(:oid,:str); bat.append(bstr,"1":str); bat.append(bstr,"0":str); rbit:bat[:oid,:bit] := pyapi.eval(nil:ptr,"return(arg1)",bstr); io.print(rbit); -# convert bte to string -#bstr:= bat.new(:oid,:str); -#bat.append(bstr,"42":str); -#bat.append(bstr,"84":str); -#rbte:bat[:oid,:bte] := pyapi.eval(nil:ptr,"return(arg1)",bstr); -#io.print(rbte); +# convert string to bte +bstr:= bat.new(:oid,:str); +bat.append(bstr,"42":str); +bat.append(bstr,"84":str); +rbte:bat[:oid,:bte] := pyapi.eval(nil:ptr,"return(arg1)",bstr); +io.print(rbte); -# convert short to string +# convert string to short bstr:= bat.new(:oid,:str); bat.append(bstr,"42":str); bat.append(bstr,"82":str); rsht:bat[:oid,:sht] := pyapi.eval(nil:ptr,"return(arg1)",bstr); io.print(rsht); -# convert int to string +# convert string to int bstr:= bat.new(:oid,:str); bat.append(bstr,"1804289383":str); bat.append(bstr,"846930886":str); @@ -131,21 +131,28 @@ bat.append(bstr,nil:str); rstr:bat[:oid,:int] := pyapi.eval(nil:ptr,"return(arg1)",bstr); io.print(rstr); -# convert word to string -#bstr:= bat.new(:oid,:str); -#bat.append(bstr,"1804289383":str); -#bat.append(bstr,"846930886":str); -#rwrd:bat[:oid,:wrd] := pyapi.eval(nil:ptr,"return(arg1)",bstr); -#io.print(rwrd); +# convert string to word +bstr:= bat.new(:oid,:str); +bat.append(bstr,"1804289383":str); +bat.append(bstr,"846930886":str); +rwrd:bat[:oid,:wrd] := pyapi.eval(nil:ptr,"return(arg1)",bstr); +io.print(rwrd); -# convert long to string +# convert string to oid +bstr:= bat.new(:oid,:str); +bat.append(bstr,"18042893":str); +bat.append(bstr,"8469308":str); +rwrd:bat[:oid,:oid] := pyapi.eval(nil:ptr,"return(arg1)",bstr); +io.print(rwrd); + +# convert string to long bstr:= bat.new(:oid,:str); bat.append(bstr,"1804289383":str); bat.append(bstr,"846930886":str); rlng:bat[:oid,:lng] := pyapi.eval(nil:ptr,"return(arg1)",bstr); io.print(rlng); -# convert float to string +# convert string to float bstr:= bat.new(:oid,:str); bat.append(bstr,"18042.89383":str); bat.append(bstr,"846.930886":str); @@ -155,7 +162,7 @@ bat.append(bstr,nil:str); rstr:bat[:oid,:flt] := pyapi.eval(nil:ptr,"return(arg1)",bstr); io.print(rstr); -# convert dbl to string +# convert string to dbl bstr:= bat.new(:oid,:str); bat.append(bstr,"18042.89383":str); bat.append(bstr,"846.930886":str); diff --git a/monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.err b/monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.err --- a/monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.err +++ b/monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.err @@ -1,11 +1,11 @@ stderr of test 'pyapi_types_string` in directory 'monetdb5/extras/pyapi` itself: -# 18:14:04 > -# 18:14:04 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=34518" "--set" "mapi_usock=/var/tmp/mtest-9443/.s.monetdb.34518" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/export/scratch2/raasveld/build/var/MonetDB/mTests_monetdb5_extras_pyapi" "--set" "mal_listing=2" "--set" "embedded_r=true" "--set" "embedded_py=true" -# 18:14:04 > +# 20:45:38 > +# 20:45:38 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=37361" "--set" "mapi_usock=/var/tmp/mtest-9070/.s.monetdb.37361" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/home/mytherin/opt/var/MonetDB/mTests_monetdb5_extras_pyapi" "--set" "mal_listing=2" "--set" "embedded_r=true" "--set" "embedded_py=true" +# 20:45:38 > -# builtin opt gdk_dbpath = /export/scratch2/raasveld/build/var/monetdb5/dbfarm/demo +# builtin opt gdk_dbpath = /home/mytherin/opt/var/monetdb5/dbfarm/demo # builtin opt gdk_debug = 0 # builtin opt gdk_vmtrim = no # builtin opt monet_prompt = > @@ -17,22 +17,22 @@ stderr of test 'pyapi_types_string` in d # builtin opt sql_debug = 0 # cmdline opt gdk_nr_threads = 0 # cmdline opt mapi_open = true -# cmdline opt mapi_port = 34518 -# cmdline opt mapi_usock = /var/tmp/mtest-9443/.s.monetdb.34518 +# cmdline opt mapi_port = 37361 +# cmdline opt mapi_usock = /var/tmp/mtest-9070/.s.monetdb.37361 # cmdline opt monet_prompt = # cmdline opt mal_listing = 2 -# cmdline opt gdk_dbpath = /export/scratch2/raasveld/build/var/MonetDB/mTests_monetdb5_extras_pyapi +# cmdline opt gdk_dbpath = /home/mytherin/opt/var/MonetDB/mTests_monetdb5_extras_pyapi # cmdline opt mal_listing = 2 # cmdline opt embedded_r = true # cmdline opt embedded_py = true # cmdline opt gdk_debug = 536870922 -# 18:14:05 > -# 18:14:05 > "mclient" "-lmal" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-9443" "--port=34518" -# 18:14:05 > +# 20:45:39 > +# 20:45:39 > "mclient" "-lmal" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-9070" "--port=37361" +# 20:45:39 > -# 18:14:05 > -# 18:14:05 > "Done." -# 18:14:05 > +# 20:45:39 > +# 20:45:39 > "Done." +# 20:45:39 > diff --git a/monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.out b/monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.out --- a/monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.out +++ b/monetdb5/extras/pyapi/Tests/pyapi_types_string.stable.out @@ -1,22 +1,23 @@ stdout of test 'pyapi_types_string` in directory 'monetdb5/extras/pyapi` itself: -# 18:14:04 > -# 18:14:04 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=34518" "--set" "mapi_usock=/var/tmp/mtest-9443/.s.monetdb.34518" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/export/scratch2/raasveld/build/var/MonetDB/mTests_monetdb5_extras_pyapi" "--set" "mal_listing=2" "--set" "embedded_r=true" "--set" "embedded_py=true" -# 18:14:04 > +# 20:45:38 > +# 20:45:38 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=37361" "--set" "mapi_usock=/var/tmp/mtest-9070/.s.monetdb.37361" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/home/mytherin/opt/var/MonetDB/mTests_monetdb5_extras_pyapi" "--set" "mal_listing=2" "--set" "embedded_r=true" "--set" "embedded_py=true" +# 20:45:38 > # MonetDB 5 server v11.22.0 # This is an unreleased version # Serving database 'mTests_monetdb5_extras_pyapi', using 8 threads # Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs and 128bit integers dynamically linked -# Found 15.590 GiB available main-memory. +# Found 7.684 GiB available main-memory. # Copyright (c) 1993-July 2008 CWI. # Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved # Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://lyon.ins.cwi.nl:34518/ -# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-9443/.s.monetdb.34518 -# MonetDB/GIS module loaded +# Listening for connection requests on mapi:monetdb://mytherin-N750JV:37361/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-9070/.s.monetdb.37361 # Start processing logs sql/sql_logs version 52200 +# Start reading the write-ahead log 'sql_logs/sql/log.4' +# Finished reading the write-ahead log 'sql_logs/sql/log.4' # Finished processing logs sql/sql_logs # MonetDB/SQL module loaded # MonetDB/Python module loaded @@ -24,9 +25,9 @@ stdout of test 'pyapi_types_string` in d Ready. -# 18:14:05 > -# 18:14:05 > "mclient" "-lmal" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-9443" "--port=34518" -# 18:14:05 > +# 20:45:39 > +# 20:45:39 > "mclient" "-lmal" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-9070" "--port=37361" +# 20:45:39 > #io.print(rstr); #--------------------------# @@ -143,6 +144,13 @@ Ready. #--------------------------# [ 0@0, true ] [ 1@0, false ] +#io.print(rbte); +#--------------------------# +# h t # name +# void bte # type +#--------------------------# +[ 0@0, 42 ] +[ 1@0, 84 ] #io.print(rsht); #--------------------------# # h t # name @@ -160,6 +168,20 @@ Ready. [ 2@0, 1681692777 ] [ 3@0, 1714636915 ] [ 4@0, nil ] +#io.print(rwrd); +#--------------------------# +# h t # name +# void wrd # type +#--------------------------# +[ 0@0, 1804289383 ] +[ 1@0, 846930886 ] +#io.print(rwrd); +#--------------------------# +# h t # name +# void oid # type +#--------------------------# +[ 0@0, 18042893@0 ] +[ 1@0, 8469308@0 ] #io.print(rlng); #--------------------------# # h t # name @@ -188,7 +210,7 @@ Ready. [ 3@0, 1714636.915 ] [ 4@0, nil ] -# 18:14:05 > -# 18:14:05 > "Done." -# 18:14:05 > +# 20:45:39 > +# 20:45:39 > "Done." +# 20:45:39 > diff --git a/monetdb5/extras/pyapi/pyapi.c b/monetdb5/extras/pyapi/pyapi.c --- a/monetdb5/extras/pyapi/pyapi.c +++ b/monetdb5/extras/pyapi/pyapi.c @@ -985,7 +985,7 @@ returnvalues: PyReturn *ret = &pyreturn_values[i]; int bat_type = TYPE_any; if (!varres) { - bat_type = ATOMstorage(getColumnType(getArgType(mb,pci,i))); + bat_type = getColumnType(getArgType(mb,pci,i)); if (bat_type == TYPE_any || bat_type == TYPE_void) { getArgType(mb,pci,i) = bat_type; @@ -1017,8 +1017,7 @@ returnvalues: #ifndef WIN32 if (mapped && child_process) { - // If we get here, something went wrong in a child process, - + // If we get here, something went wrong in a child process char *shm_ptr, *error_mem, *tmp_msg; ReturnBatDescr *ptr; @@ -1962,8 +1961,11 @@ BAT *PyObject_ConvertToBAT(PyReturn *ret VERBOSE_MESSAGE("- Returning a Numpy Array of type %s of size %zu and storing it in a BAT of type %s\n", PyType_Format(ret->result_type), ret->count, BatType_Format(bat_type)); switch (bat_type) { + case TYPE_bit: + NP_CREATE_BAT(b, bit); + break; case TYPE_bte: - NP_CREATE_BAT(b, bit); + NP_CREATE_BAT(b, bte); break; case TYPE_sht: NP_CREATE_BAT(b, sht); @@ -1971,9 +1973,15 @@ BAT *PyObject_ConvertToBAT(PyReturn *ret case TYPE_int: NP_CREATE_BAT(b, int); break; + case TYPE_oid: + NP_CREATE_BAT(b, oid); + break; case TYPE_lng: NP_CREATE_BAT(b, lng); break; + case TYPE_wrd: + NP_CREATE_BAT(b, wrd); + break; case TYPE_flt: NP_CREATE_BAT(b, flt); break; diff --git a/monetdb5/extras/pyapi/type_conversion.c b/monetdb5/extras/pyapi/type_conversion.c --- a/monetdb5/extras/pyapi/type_conversion.c +++ b/monetdb5/extras/pyapi/type_conversion.c @@ -166,6 +166,9 @@ bool pyobject_to_##type(PyObject **pyobj } \ PY_TO_(tpe, inttpe); +CONVERSION_FUNCTION_FACTORY(bte, bte) +CONVERSION_FUNCTION_FACTORY(wrd, wrd) +CONVERSION_FUNCTION_FACTORY(oid, oid) CONVERSION_FUNCTION_FACTORY(bit, bit) CONVERSION_FUNCTION_FACTORY(sht, sht) CONVERSION_FUNCTION_FACTORY(int, int) diff --git a/monetdb5/extras/pyapi/type_conversion.h b/monetdb5/extras/pyapi/type_conversion.h --- a/monetdb5/extras/pyapi/type_conversion.h +++ b/monetdb5/extras/pyapi/type_conversion.h @@ -54,6 +54,9 @@ PyObject *PyLong_FromHge(hge h); bool unicode_to_##tpe(Py_UNICODE *ptr, size_t maxsize, tpe *value); \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list