aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2009-08-24 20:25:25 +0000
committerPeter Eisentraut <peter_e@gmx.net>2009-08-24 20:25:25 +0000
commit5dff93638c4443d3afba017f64c9ade69e0fbd3b (patch)
treef3d9c7456f569a2b68dc7e3227485d15c0d358dc
parent8bed238c871fae205c5c6615f3b9ab8a039359e2 (diff)
downloadpostgresql-5dff93638c4443d3afba017f64c9ade69e0fbd3b.tar.gz
postgresql-5dff93638c4443d3afba017f64c9ade69e0fbd3b.zip
Make PL/Python tests more compatible with Python 3
This changes a bunch of incidentially used constructs in the PL/Python regression tests to equivalent constructs in cases where Python 3 no longer supports the old syntax. Support for older Python versions is unchanged.
-rw-r--r--src/pl/plpython/expected/plpython_error.out8
-rw-r--r--src/pl/plpython/expected/plpython_error_2.out8
-rw-r--r--src/pl/plpython/expected/plpython_global.out10
-rw-r--r--src/pl/plpython/expected/plpython_import.out20
-rw-r--r--src/pl/plpython/expected/plpython_setof.out2
-rw-r--r--src/pl/plpython/expected/plpython_spi.out4
-rw-r--r--src/pl/plpython/expected/plpython_test.out2
-rw-r--r--src/pl/plpython/expected/plpython_trigger.out4
-rw-r--r--src/pl/plpython/sql/plpython_error.sql8
-rw-r--r--src/pl/plpython/sql/plpython_global.sql10
-rw-r--r--src/pl/plpython/sql/plpython_import.sql20
-rw-r--r--src/pl/plpython/sql/plpython_setof.sql2
-rw-r--r--src/pl/plpython/sql/plpython_spi.sql4
-rw-r--r--src/pl/plpython/sql/plpython_test.sql2
-rw-r--r--src/pl/plpython/sql/plpython_trigger.sql4
15 files changed, 60 insertions, 48 deletions
diff --git a/src/pl/plpython/expected/plpython_error.out b/src/pl/plpython/expected/plpython_error.out
index 8454b05e5ea..58f7b3a766e 100644
--- a/src/pl/plpython/expected/plpython_error.out
+++ b/src/pl/plpython/expected/plpython_error.out
@@ -45,7 +45,7 @@ CONTEXT: PL/Python function "exception_index_invalid_nested"
*/
CREATE FUNCTION invalid_type_uncaught(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
SD["plan"] = plpy.prepare(q, [ "test" ])
rv = plpy.execute(SD["plan"], [ a ])
@@ -64,7 +64,7 @@ CONTEXT: PL/Python function "invalid_type_uncaught"
*/
CREATE FUNCTION invalid_type_caught(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
try:
SD["plan"] = plpy.prepare(q, [ "test" ])
@@ -87,7 +87,7 @@ CONTEXT: PL/Python function "invalid_type_caught"
*/
CREATE FUNCTION invalid_type_reraised(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
try:
SD["plan"] = plpy.prepare(q, [ "test" ])
@@ -108,7 +108,7 @@ CONTEXT: PL/Python function "invalid_type_reraised"
*/
CREATE FUNCTION valid_type(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
SD["plan"] = plpy.prepare("SELECT fname FROM users WHERE lname = $1", [ "text" ])
rv = plpy.execute(SD["plan"], [ a ])
if len(rv):
diff --git a/src/pl/plpython/expected/plpython_error_2.out b/src/pl/plpython/expected/plpython_error_2.out
index 7d41c8a8695..bcbf2e655c2 100644
--- a/src/pl/plpython/expected/plpython_error_2.out
+++ b/src/pl/plpython/expected/plpython_error_2.out
@@ -45,7 +45,7 @@ CONTEXT: PL/Python function "exception_index_invalid_nested"
*/
CREATE FUNCTION invalid_type_uncaught(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
SD["plan"] = plpy.prepare(q, [ "test" ])
rv = plpy.execute(SD["plan"], [ a ])
@@ -64,7 +64,7 @@ CONTEXT: PL/Python function "invalid_type_uncaught"
*/
CREATE FUNCTION invalid_type_caught(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
try:
SD["plan"] = plpy.prepare(q, [ "test" ])
@@ -87,7 +87,7 @@ CONTEXT: PL/Python function "invalid_type_caught"
*/
CREATE FUNCTION invalid_type_reraised(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
try:
SD["plan"] = plpy.prepare(q, [ "test" ])
@@ -108,7 +108,7 @@ CONTEXT: PL/Python function "invalid_type_reraised"
*/
CREATE FUNCTION valid_type(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
SD["plan"] = plpy.prepare("SELECT fname FROM users WHERE lname = $1", [ "text" ])
rv = plpy.execute(SD["plan"], [ a ])
if len(rv):
diff --git a/src/pl/plpython/expected/plpython_global.out b/src/pl/plpython/expected/plpython_global.out
index f20014b926e..192e3e48a72 100644
--- a/src/pl/plpython/expected/plpython_global.out
+++ b/src/pl/plpython/expected/plpython_global.out
@@ -3,23 +3,23 @@
--
CREATE FUNCTION global_test_one() returns text
AS
-'if not SD.has_key("global_test"):
+'if "global_test" not in SD:
SD["global_test"] = "set by global_test_one"
-if not GD.has_key("global_test"):
+if "global_test" not in GD:
GD["global_test"] = "set by global_test_one"
return "SD: " + SD["global_test"] + ", GD: " + GD["global_test"]'
LANGUAGE plpythonu;
CREATE FUNCTION global_test_two() returns text
AS
-'if not SD.has_key("global_test"):
+'if "global_test" not in SD:
SD["global_test"] = "set by global_test_two"
-if not GD.has_key("global_test"):
+if "global_test" not in GD:
GD["global_test"] = "set by global_test_two"
return "SD: " + SD["global_test"] + ", GD: " + GD["global_test"]'
LANGUAGE plpythonu;
CREATE FUNCTION static_test() returns int4
AS
-'if SD.has_key("call"):
+'if "call" in SD:
SD["call"] = SD["call"] + 1
else:
SD["call"] = 1
diff --git a/src/pl/plpython/expected/plpython_import.out b/src/pl/plpython/expected/plpython_import.out
index f1f665e0523..7fcd9267371 100644
--- a/src/pl/plpython/expected/plpython_import.out
+++ b/src/pl/plpython/expected/plpython_import.out
@@ -17,11 +17,9 @@ CREATE FUNCTION import_succeed() returns text
import cmath
import errno
import math
- import md5
import operator
import random
import re
- import sha
import string
import time
except Exception, ex:
@@ -31,15 +29,23 @@ return "succeeded, as expected"'
LANGUAGE plpythonu;
CREATE FUNCTION import_test_one(p text) RETURNS text
AS
-'import sha
-digest = sha.new(p)
+'try:
+ import hashlib
+ digest = hashlib.sha1(p.encode("ascii"))
+except ImportError:
+ import sha
+ digest = sha.new(p)
return digest.hexdigest()'
LANGUAGE plpythonu;
CREATE FUNCTION import_test_two(u users) RETURNS text
AS
-'import sha
-plain = u["fname"] + u["lname"]
-digest = sha.new(plain);
+'plain = u["fname"] + u["lname"]
+try:
+ import hashlib
+ digest = hashlib.sha1(plain.encode("ascii"))
+except ImportError:
+ import sha
+ digest = sha.new(plain);
return "sha hash of " + plain + " is " + digest.hexdigest()'
LANGUAGE plpythonu;
-- import python modules
diff --git a/src/pl/plpython/expected/plpython_setof.out b/src/pl/plpython/expected/plpython_setof.out
index 03a97194c82..ebf896df01f 100644
--- a/src/pl/plpython/expected/plpython_setof.out
+++ b/src/pl/plpython/expected/plpython_setof.out
@@ -13,7 +13,7 @@ return [ content ]*count
$$ LANGUAGE plpythonu;
CREATE FUNCTION test_setof_as_tuple(count integer, content text) RETURNS SETOF text AS $$
t = ()
-for i in xrange(count):
+for i in range(count):
t += ( content, )
return t
$$ LANGUAGE plpythonu;
diff --git a/src/pl/plpython/expected/plpython_spi.out b/src/pl/plpython/expected/plpython_spi.out
index f4910d9d52b..9cef3f2bb0b 100644
--- a/src/pl/plpython/expected/plpython_spi.out
+++ b/src/pl/plpython/expected/plpython_spi.out
@@ -19,7 +19,7 @@ CREATE FUNCTION nested_call_three(a text) RETURNS text
-- some spi stuff
CREATE FUNCTION spi_prepared_plan_test_one(a text) RETURNS text
AS
-'if not SD.has_key("myplan"):
+'if "myplan" not in SD:
q = "SELECT count(*) FROM users WHERE lname = $1"
SD["myplan"] = plpy.prepare(q, [ "text" ])
try:
@@ -32,7 +32,7 @@ return None
LANGUAGE plpythonu;
CREATE FUNCTION spi_prepared_plan_test_nested(a text) RETURNS text
AS
-'if not SD.has_key("myplan"):
+'if "myplan" not in SD:
q = "SELECT spi_prepared_plan_test_one(''%s'') as count" % a
SD["myplan"] = plpy.prepare(q)
try:
diff --git a/src/pl/plpython/expected/plpython_test.out b/src/pl/plpython/expected/plpython_test.out
index 5cce4e290f0..8bef675009b 100644
--- a/src/pl/plpython/expected/plpython_test.out
+++ b/src/pl/plpython/expected/plpython_test.out
@@ -10,7 +10,7 @@ select stupid();
-- test multiple arguments
CREATE FUNCTION argument_test_one(u users, a1 text, a2 text) RETURNS text
AS
-'keys = u.keys()
+'keys = list(u.keys())
keys.sort()
out = []
for key in keys:
diff --git a/src/pl/plpython/expected/plpython_trigger.out b/src/pl/plpython/expected/plpython_trigger.out
index 75914047cea..b60796dab5b 100644
--- a/src/pl/plpython/expected/plpython_trigger.out
+++ b/src/pl/plpython/expected/plpython_trigger.out
@@ -69,10 +69,10 @@ CREATE TABLE trigger_test
(i int, v text );
CREATE FUNCTION trigger_data() returns trigger language plpythonu as $$
-if TD.has_key('relid'):
+if 'relid' in TD:
TD['relid'] = "bogus:12345"
-skeys = TD.keys()
+skeys = list(TD.keys())
skeys.sort()
for key in skeys:
val = TD[key]
diff --git a/src/pl/plpython/sql/plpython_error.sql b/src/pl/plpython/sql/plpython_error.sql
index 04161bc25ec..5ca68495be0 100644
--- a/src/pl/plpython/sql/plpython_error.sql
+++ b/src/pl/plpython/sql/plpython_error.sql
@@ -37,7 +37,7 @@ SELECT exception_index_invalid_nested();
*/
CREATE FUNCTION invalid_type_uncaught(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
SD["plan"] = plpy.prepare(q, [ "test" ])
rv = plpy.execute(SD["plan"], [ a ])
@@ -55,7 +55,7 @@ SELECT invalid_type_uncaught('rick');
*/
CREATE FUNCTION invalid_type_caught(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
try:
SD["plan"] = plpy.prepare(q, [ "test" ])
@@ -77,7 +77,7 @@ SELECT invalid_type_caught('rick');
*/
CREATE FUNCTION invalid_type_reraised(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
q = "SELECT fname FROM users WHERE lname = $1"
try:
SD["plan"] = plpy.prepare(q, [ "test" ])
@@ -97,7 +97,7 @@ SELECT invalid_type_reraised('rick');
*/
CREATE FUNCTION valid_type(a text) RETURNS text
AS
-'if not SD.has_key("plan"):
+'if "plan" not in SD:
SD["plan"] = plpy.prepare("SELECT fname FROM users WHERE lname = $1", [ "text" ])
rv = plpy.execute(SD["plan"], [ a ])
if len(rv):
diff --git a/src/pl/plpython/sql/plpython_global.sql b/src/pl/plpython/sql/plpython_global.sql
index e676ad6f438..32502b41eee 100644
--- a/src/pl/plpython/sql/plpython_global.sql
+++ b/src/pl/plpython/sql/plpython_global.sql
@@ -4,18 +4,18 @@
CREATE FUNCTION global_test_one() returns text
AS
-'if not SD.has_key("global_test"):
+'if "global_test" not in SD:
SD["global_test"] = "set by global_test_one"
-if not GD.has_key("global_test"):
+if "global_test" not in GD:
GD["global_test"] = "set by global_test_one"
return "SD: " + SD["global_test"] + ", GD: " + GD["global_test"]'
LANGUAGE plpythonu;
CREATE FUNCTION global_test_two() returns text
AS
-'if not SD.has_key("global_test"):
+'if "global_test" not in SD:
SD["global_test"] = "set by global_test_two"
-if not GD.has_key("global_test"):
+if "global_test" not in GD:
GD["global_test"] = "set by global_test_two"
return "SD: " + SD["global_test"] + ", GD: " + GD["global_test"]'
LANGUAGE plpythonu;
@@ -23,7 +23,7 @@ return "SD: " + SD["global_test"] + ", GD: " + GD["global_test"]'
CREATE FUNCTION static_test() returns int4
AS
-'if SD.has_key("call"):
+'if "call" in SD:
SD["call"] = SD["call"] + 1
else:
SD["call"] = 1
diff --git a/src/pl/plpython/sql/plpython_import.sql b/src/pl/plpython/sql/plpython_import.sql
index 7830dd7362d..477af328d18 100644
--- a/src/pl/plpython/sql/plpython_import.sql
+++ b/src/pl/plpython/sql/plpython_import.sql
@@ -20,11 +20,9 @@ CREATE FUNCTION import_succeed() returns text
import cmath
import errno
import math
- import md5
import operator
import random
import re
- import sha
import string
import time
except Exception, ex:
@@ -35,16 +33,24 @@ return "succeeded, as expected"'
CREATE FUNCTION import_test_one(p text) RETURNS text
AS
-'import sha
-digest = sha.new(p)
+'try:
+ import hashlib
+ digest = hashlib.sha1(p.encode("ascii"))
+except ImportError:
+ import sha
+ digest = sha.new(p)
return digest.hexdigest()'
LANGUAGE plpythonu;
CREATE FUNCTION import_test_two(u users) RETURNS text
AS
-'import sha
-plain = u["fname"] + u["lname"]
-digest = sha.new(plain);
+'plain = u["fname"] + u["lname"]
+try:
+ import hashlib
+ digest = hashlib.sha1(plain.encode("ascii"))
+except ImportError:
+ import sha
+ digest = sha.new(plain);
return "sha hash of " + plain + " is " + digest.hexdigest()'
LANGUAGE plpythonu;
diff --git a/src/pl/plpython/sql/plpython_setof.sql b/src/pl/plpython/sql/plpython_setof.sql
index e036d569f20..53d91a9e7d7 100644
--- a/src/pl/plpython/sql/plpython_setof.sql
+++ b/src/pl/plpython/sql/plpython_setof.sql
@@ -15,7 +15,7 @@ $$ LANGUAGE plpythonu;
CREATE FUNCTION test_setof_as_tuple(count integer, content text) RETURNS SETOF text AS $$
t = ()
-for i in xrange(count):
+for i in range(count):
t += ( content, )
return t
$$ LANGUAGE plpythonu;
diff --git a/src/pl/plpython/sql/plpython_spi.sql b/src/pl/plpython/sql/plpython_spi.sql
index c6632985257..2157569f4c7 100644
--- a/src/pl/plpython/sql/plpython_spi.sql
+++ b/src/pl/plpython/sql/plpython_spi.sql
@@ -25,7 +25,7 @@ CREATE FUNCTION nested_call_three(a text) RETURNS text
CREATE FUNCTION spi_prepared_plan_test_one(a text) RETURNS text
AS
-'if not SD.has_key("myplan"):
+'if "myplan" not in SD:
q = "SELECT count(*) FROM users WHERE lname = $1"
SD["myplan"] = plpy.prepare(q, [ "text" ])
try:
@@ -39,7 +39,7 @@ return None
CREATE FUNCTION spi_prepared_plan_test_nested(a text) RETURNS text
AS
-'if not SD.has_key("myplan"):
+'if "myplan" not in SD:
q = "SELECT spi_prepared_plan_test_one(''%s'') as count" % a
SD["myplan"] = plpy.prepare(q)
try:
diff --git a/src/pl/plpython/sql/plpython_test.sql b/src/pl/plpython/sql/plpython_test.sql
index d45299420f7..4a7a687e666 100644
--- a/src/pl/plpython/sql/plpython_test.sql
+++ b/src/pl/plpython/sql/plpython_test.sql
@@ -9,7 +9,7 @@ select stupid();
-- test multiple arguments
CREATE FUNCTION argument_test_one(u users, a1 text, a2 text) RETURNS text
AS
-'keys = u.keys()
+'keys = list(u.keys())
keys.sort()
out = []
for key in keys:
diff --git a/src/pl/plpython/sql/plpython_trigger.sql b/src/pl/plpython/sql/plpython_trigger.sql
index ce1a737a844..385fa93bda4 100644
--- a/src/pl/plpython/sql/plpython_trigger.sql
+++ b/src/pl/plpython/sql/plpython_trigger.sql
@@ -69,10 +69,10 @@ CREATE TABLE trigger_test
CREATE FUNCTION trigger_data() returns trigger language plpythonu as $$
-if TD.has_key('relid'):
+if 'relid' in TD:
TD['relid'] = "bogus:12345"
-skeys = TD.keys()
+skeys = list(TD.keys())
skeys.sort()
for key in skeys:
val = TD[key]