summaryrefslogtreecommitdiff
path: root/src/pl/plpython/sql/plpython_composite.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plpython/sql/plpython_composite.sql')
-rw-r--r--src/pl/plpython/sql/plpython_composite.sql11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/pl/plpython/sql/plpython_composite.sql b/src/pl/plpython/sql/plpython_composite.sql
index 21757701cc1..1bb9b83b719 100644
--- a/src/pl/plpython/sql/plpython_composite.sql
+++ b/src/pl/plpython/sql/plpython_composite.sql
@@ -208,6 +208,17 @@ SELECT * FROM return_record_2('v4') AS (v1 int, v3 int, v2 int);
SELECT * FROM return_record_2('v3') AS (v1 int, v3 int, v2 int);
SELECT * FROM return_record_2('v3') AS (v1 int, v2 int, v3 int);
+-- recursion with a different inner result type didn't use to work
+CREATE FUNCTION return_record_3(t text) RETURNS record AS $$
+if t == "text":
+ plpy.execute("SELECT * FROM return_record_3('int') AS (a int)");
+ return { "a": "x" }
+elif t == "int":
+ return { "a": 1 }
+$$ LANGUAGE plpython3u;
+
+SELECT * FROM return_record_3('text') AS (a text);
+
-- multi-dimensional array of composite types.
CREATE FUNCTION composite_type_as_list() RETURNS type_record[] AS $$
return [[('first', 1), ('second', 1)], [('first', 2), ('second', 2)], [('first', 3), ('second', 3)]];