List:Commits« Previous MessageNext Message »
From:Monty Taylor Date:June 10 2008 3:17pm
Subject:bzr commit into NDB/Bindings:trunk branch (monty:402)
View as plain text  
#At https://bazaar.launchpad.net/~ndb-bindings/ndb-bindings/trunk

  402 Monty Taylor	2008-06-10
      Added .value property that calls the appropriate get* switching on column type.
modified:
  python/ndbapi.i
  python/swig/module_pythoncode.i
  python/swig/recattr_getvalue.i
  python/tests/ndbapi/TestDecimal.py

=== modified file 'python/ndbapi.i'
--- a/python/ndbapi.i	2008-04-22 06:21:51 +0000
+++ b/python/ndbapi.i	2008-06-10 15:17:19 +0000
@@ -24,6 +24,7 @@
 
 %pythoncode %{
 import decimal
+value_lookup=dict()
   %}
 
 %include "ndbapi/ndbglobals.i"

=== modified file 'python/swig/module_pythoncode.i'
--- a/python/swig/module_pythoncode.i	2008-05-22 17:05:11 +0000
+++ b/python/swig/module_pythoncode.i	2008-06-10 15:17:19 +0000
@@ -52,4 +52,37 @@
       connection.wait_until_ready(timeout_for_first_alive,timeout_after_first_alive)
       return connection
 
+
+    value_lookup[NDB_TYPE_UNDEFINED]=NdbRecAttr.undefinedValue
+    value_lookup[NDB_TYPE_TINYINT]=NdbRecAttr.getInt32
+    value_lookup[NDB_TYPE_TINYUNSIGNED]=NdbRecAttr.getUint32
+    value_lookup[NDB_TYPE_SMALLINT]=NdbRecAttr.getInt32
+    value_lookup[NDB_TYPE_SMALLUNSIGNED]=NdbRecAttr.getUint32
+    value_lookup[NDB_TYPE_MEDIUMINT]=NdbRecAttr.getInt32
+    value_lookup[NDB_TYPE_MEDIUMUNSIGNED]=NdbRecAttr.getUint32
+    value_lookup[NDB_TYPE_INT]=NdbRecAttr.getInt32
+    value_lookup[NDB_TYPE_UNSIGNED]=NdbRecAttr.getUint32
+    value_lookup[NDB_TYPE_BIGINT]=NdbRecAttr.getInt64
+    value_lookup[NDB_TYPE_BIGUNSIGNED]=NdbRecAttr.getUint64
+    value_lookup[NDB_TYPE_FLOAT]=NdbRecAttr.getFloat
+    value_lookup[NDB_TYPE_DOUBLE]=NdbRecAttr.getDouble
+    value_lookup[NDB_TYPE_OLDDECIMAL]=NdbRecAttr.getDouble
+    value_lookup[NDB_TYPE_CHAR]=NdbRecAttr.getString
+    value_lookup[NDB_TYPE_VARCHAR]=NdbRecAttr.getString
+    value_lookup[NDB_TYPE_BINARY]=NdbRecAttr.getBytes
+    value_lookup[NDB_TYPE_VARBINARY]=NdbRecAttr.getBytes
+    value_lookup[NDB_TYPE_DATETIME]=NdbRecAttr.getDatetime
+    value_lookup[NDB_TYPE_DATE]=NdbRecAttr.getDate
+    value_lookup[NDB_TYPE_BLOB]=NdbRecAttr.undefinedValue
+    value_lookup[NDB_TYPE_TEXT]=NdbRecAttr.undefinedValue
+    value_lookup[NDB_TYPE_BIT]=NdbRecAttr.undefinedValue
+    value_lookup[NDB_TYPE_LONGVARCHAR]=NdbRecAttr.getString
+    value_lookup[NDB_TYPE_LONGVARBINARY]=NdbRecAttr.getBytes
+    value_lookup[NDB_TYPE_TIME]=NdbRecAttr.getTime
+    value_lookup[NDB_TYPE_YEAR]=NdbRecAttr.undefinedValue
+    value_lookup[NDB_TYPE_TIMESTAMP]=NdbRecAttr.getTimestamp
+    value_lookup[NDB_TYPE_OLDDECIMALUNSIGNED]=NdbRecAttr.getDouble
+    value_lookup[NDB_TYPE_DECIMAL]=NdbRecAttr.getDecimal
+    value_lookup[NDB_TYPE_DECIMALUNSIGNED]=NdbRecAttr.getDecimal
+
     %}

=== modified file 'python/swig/recattr_getvalue.i'
--- a/python/swig/recattr_getvalue.i	2008-05-08 16:09:17 +0000
+++ b/python/swig/recattr_getvalue.i	2008-06-10 15:17:19 +0000
@@ -22,32 +22,15 @@
 %extend NdbRecAttr {
 
   %pythoncode %{
-def getValue(self):
-  t=self.getColType()
 
-  if t >= NDB_TYPE_TINYINT and t <= NDB_TYPE_BIGINT and (t%2==0.0):
-    ret = self.getInt32()
-  elif t >= NDB_TYPE_TINYUNSIGNED and t <= NDB_TYPE_BIGUNSIGNED and (t%2==1):
-    ret = self.getUint32()
-  elif t == NDB_TYPE_FLOAT:
-    ret = self.getFloat()
-  elif t == NDB_TYPE_DOUBLE or t == NDB_TYPE_OLDDECIMAL:
-     ret = self.getDouble()
-  elif t >= NDB_TYPE_CHAR and t <= NDB_TYPE_VARBINARY:
-    ret = self.aRef()
-  elif t == NDB_TYPE_DECIMAL:
-    ret = self.getDecimal()
-  elif t == NDB_TYPE_DATE:
-    ret = self.getUint32()
-    year = ret/10000 % 10000
-    month = ret/100 % 100
-    day = ret % 100
-    ret = "%s-%s-%s" % (year,month,day)
-  else:
-    # TODO add newer datatypes here
-    raise NdbApiException, "unknown type"
-    return ret
+def undefinedValue(self):
+  return self.getBytes()
 
+def _getValue(self):
+  col_type=self.getColType()
+  return value_lookup[col_type](self)
+
+value=property(_getValue, None, None, "The value stored in the NdbRecAttr")
             %}
 
  };

=== modified file 'python/tests/ndbapi/TestDecimal.py'
--- a/python/tests/ndbapi/TestDecimal.py	2008-05-21 20:38:02 +0000
+++ b/python/tests/ndbapi/TestDecimal.py	2008-06-10 15:17:19 +0000
@@ -51,7 +51,7 @@ class TestDecimal(ClusterTestCase.Cluste
         
         trans = self.ndb.startTransaction()
 
-        d = rec.getDecimal()
+        d = rec.value
         self.assertEquals(d,decimal.Decimal(self.val1))
         trans.close()
 
@@ -65,7 +65,7 @@ class TestDecimal(ClusterTestCase.Cluste
         rec = op.getValue("val")
         trans.executeCommit()
         
-        d = rec.getDecimal()
+        d = rec.value
         self.assertEquals(d,decimal.Decimal(self.val2))
         trans.close()
 

Thread
bzr commit into NDB/Bindings:trunk branch (monty:402) Monty Taylor10 Jun