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

Reply via email to