aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/interfaces/python/pgmodule.c39
-rwxr-xr-xsrc/interfaces/python/tutorial/advanced.py20
2 files changed, 48 insertions, 11 deletions
diff --git a/src/interfaces/python/pgmodule.c b/src/interfaces/python/pgmodule.c
index df685902531..355c3e4725d 100644
--- a/src/interfaces/python/pgmodule.c
+++ b/src/interfaces/python/pgmodule.c
@@ -289,23 +289,26 @@ get_type_array(PGresult *result, int nfields)
{
case INT2OID:
case INT4OID:
- case INT8OID:
case OIDOID:
typ[j] = 1;
break;
+ case INT8OID:
+ typ[j] = 2;
+ break;
+
case FLOAT4OID:
case FLOAT8OID:
case NUMERICOID:
- typ[j] = 2;
+ typ[j] = 3;
break;
case CASHOID:
- typ[j] = 3;
+ typ[j] = 4;
break;
default:
- typ[j] = 4;
+ typ[j] = 5;
break;
}
}
@@ -1797,23 +1800,26 @@ pgquery_getresult(pgqueryobject * self, PyObject * args)
{
case INT2OID:
case INT4OID:
- case INT8OID:
case OIDOID:
typ[j] = 1;
break;
+ case INT8OID:
+ typ[j] = 2;
+ break;
+
case FLOAT4OID:
case FLOAT8OID:
case NUMERICOID:
- typ[j] = 2;
+ typ[j] = 3;
break;
case CASHOID:
- typ[j] = 3;
+ typ[j] = 4;
break;
default:
- typ[j] = 4;
+ typ[j] = 5;
break;
}
}
@@ -1846,10 +1852,14 @@ pgquery_getresult(pgqueryobject * self, PyObject * args)
break;
case 2:
- val = PyFloat_FromDouble(strtod(s, NULL));
+ val = PyLong_FromLong(strtol(s, NULL, 10));
break;
case 3:
+ val = PyFloat_FromDouble(strtod(s, NULL));
+ break;
+
+ case 4:
{
int mult = 1;
@@ -1946,11 +1956,14 @@ pgquery_dictresult(pgqueryobject * self, PyObject * args)
{
case INT2OID:
case INT4OID:
- case INT8OID:
case OIDOID:
typ[j] = 1;
break;
+ case INT8OID:
+ typ[j] = 2;
+ break;
+
case FLOAT4OID:
case FLOAT8OID:
case NUMERICOID:
@@ -1995,10 +2008,14 @@ pgquery_dictresult(pgqueryobject * self, PyObject * args)
break;
case 2:
- val = PyFloat_FromDouble(strtod(s, NULL));
+ val = PyLong_FromLong(strtol(s, NULL, 10));
break;
case 3:
+ val = PyFloat_FromDouble(strtod(s, NULL));
+ break;
+
+ case 4:
{
int mult = 1;
diff --git a/src/interfaces/python/tutorial/advanced.py b/src/interfaces/python/tutorial/advanced.py
index 49e6e436e8c..41a5bc457a3 100755
--- a/src/interfaces/python/tutorial/advanced.py
+++ b/src/interfaces/python/tutorial/advanced.py
@@ -109,11 +109,13 @@ def array_demo(pgcnx):
print "CREATE TABLE sal_emp ("
print " name text,"
print " pay_by_quarter int4[],"
+ print " pay_by_extra_quarter int8[],"
print " schedule text[][]"
print ")"
pgcnx.query("""CREATE TABLE sal_emp (
name text,
pay_by_quarter int4[],
+ pay_by_extra_quarter int8[],
schedule text[][])""")
wait_key()
print
@@ -123,18 +125,22 @@ def array_demo(pgcnx):
print "INSERT INTO sal_emp VALUES ("
print " 'Bill',"
print " '{10000,10000,10000,10000}',"
+ print " '{9223372036854775800,9223372036854775800,9223372036854775800}',"
print " '{{\"meeting\", \"lunch\"}, {}}')"
print
print "INSERT INTO sal_emp VALUES ("
print " 'Carol',"
print " '{20000,25000,25000,25000}',"
+ print " '{9223372036854775807,9223372036854775807,9223372036854775807}',"
print " '{{\"talk\", \"consult\"}, {\"meeting\"}}')"
print
pgcnx.query("""INSERT INTO sal_emp VALUES (
'Bill', '{10000,10000,10000,10000}',
+ '{9223372036854775800,9223372036854775800,9223372036854775800}',
'{{\"meeting\", \"lunch\"}, {}}')""")
pgcnx.query("""INSERT INTO sal_emp VALUES (
'Carol', '{20000,25000,25000,25000}',
+ '{9223372036854775807,9223372036854775807,9223372036854775807}',
'{{\"talk\", \"consult\"}, {\"meeting\"}}')""")
wait_key()
print
@@ -148,12 +154,26 @@ def array_demo(pgcnx):
print pgcnx.query("""SELECT name FROM sal_emp WHERE
sal_emp.pay_by_quarter[1] <> sal_emp.pay_by_quarter[2]""")
print
+ print pgcnx.query("""SELECT name FROM sal_emp WHERE
+ sal_emp.pay_by_extra_quarter[1] <> sal_emp.pay_by_extra_quarter[2]""")
+ print
print "-- retrieve third quarter pay of all employees"
print
print "SELECT sal_emp.pay_by_quarter[3] FROM sal_emp"
print
print pgcnx.query("SELECT sal_emp.pay_by_quarter[3] FROM sal_emp")
print
+ print "-- retrieve third quarter extra pay of all employees"
+ print
+ print "SELECT sal_emp.pay_by_extra_quarter[3] FROM sal_emp"
+ print pgcnx.query("SELECT sal_emp.pay_by_extra_quarter[3] FROM sal_emp")
+ print
+ print "-- retrieve first two quarters of extra quarter pay of all employees"
+ print
+ print "SELECT sal_emp.pay_by_extra_quarter[1:2] FROM sal_emp"
+ print
+ print pgcnx.query("SELECT sal_emp.pay_by_extra_quarter[1:2] FROM sal_emp")
+ print
print "-- select subarrays"
print
print "SELECT sal_emp.schedule[1:2][1:1] FROM sal_emp WHERE"