diff --git a/src/pl/plpython/expected/plpython_do.out b/src/pl/plpython/expected/plpython_do.out index 41b7a51138..d979cf811c 100644 --- a/src/pl/plpython/expected/plpython_do.out +++ b/src/pl/plpython/expected/plpython_do.out @@ -1,6 +1,9 @@ DO $$ plpy.notice("This is plpythonu.") $$ LANGUAGE plpythonu; NOTICE: This is plpythonu. CONTEXT: PL/Python anonymous code block +DO $$ plpy.notice("This is plpython2u.") $$ LANGUAGE plpython2u; +NOTICE: This is plpython2u. +CONTEXT: PL/Python anonymous code block DO $$ nonsense $$ LANGUAGE plpythonu; ERROR: NameError: global name 'nonsense' is not defined CONTEXT: Traceback (most recent call last): diff --git a/src/pl/plpython/expected/plpython_spi.out b/src/pl/plpython/expected/plpython_spi.out index 631a1a4425..671c24e33f 100644 --- a/src/pl/plpython/expected/plpython_spi.out +++ b/src/pl/plpython/expected/plpython_spi.out @@ -1,3 +1,23 @@ +-- +-- result objects +-- +CREATE FUNCTION test_resultobject_access() RETURNS void +AS $$ +rv = plpy.execute("SELECT fname, lname, username FROM users ORDER BY username") +plpy.info([row for row in rv]) +rv[1] = dict([(k, v*2) for (k, v) in rv[1].items()]) +plpy.info([row for row in rv]) +$$ LANGUAGE plpythonu; +SELECT test_resultobject_access(); +INFO: [{'lname': 'doe', 'username': 'j_doe', 'fname': 'jane'}, {'lname': 'doe', 'username': 'johnd', 'fname': 'john'}, {'lname': 'smith', 'username': 'slash', 'fname': 'rick'}, {'lname': 'doe', 'username': 'w_doe', 'fname': 'willem'}] +CONTEXT: PL/Python function "test_resultobject_access" +INFO: [{'lname': 'doe', 'username': 'j_doe', 'fname': 'jane'}, {'lname': 'doedoe', 'username': 'johndjohnd', 'fname': 'johnjohn'}, {'lname': 'smith', 'username': 'slash', 'fname': 'rick'}, {'lname': 'doe', 'username': 'w_doe', 'fname': 'willem'}] +CONTEXT: PL/Python function "test_resultobject_access" + test_resultobject_access +-------------------------- + +(1 row) + -- -- nested calls -- diff --git a/src/pl/plpython/sql/plpython_do.sql b/src/pl/plpython/sql/plpython_do.sql index 8596c39d37..beb443f95d 100644 --- a/src/pl/plpython/sql/plpython_do.sql +++ b/src/pl/plpython/sql/plpython_do.sql @@ -1,3 +1,5 @@ DO $$ plpy.notice("This is plpythonu.") $$ LANGUAGE plpythonu; +DO $$ plpy.notice("This is plpython2u.") $$ LANGUAGE plpython2u; + DO $$ nonsense $$ LANGUAGE plpythonu; diff --git a/src/pl/plpython/sql/plpython_spi.sql b/src/pl/plpython/sql/plpython_spi.sql index ce218e93b6..7be2fbff71 100644 --- a/src/pl/plpython/sql/plpython_spi.sql +++ b/src/pl/plpython/sql/plpython_spi.sql @@ -1,3 +1,18 @@ +-- +-- result objects +-- + +CREATE FUNCTION test_resultobject_access() RETURNS void +AS $$ +rv = plpy.execute("SELECT fname, lname, username FROM users ORDER BY username") +plpy.info([row for row in rv]) +rv[1] = dict([(k, v*2) for (k, v) in rv[1].items()]) +plpy.info([row for row in rv]) +$$ LANGUAGE plpythonu; + +SELECT test_resultobject_access(); + + -- -- nested calls --