mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
Add transforms feature
This provides a mechanism for specifying conversions between SQL data types and procedural languages. As examples, there are transforms for hstore and ltree for PL/Perl and PL/Python. reviews by Pavel Stěhule and Andres Freund
This commit is contained in:
45
contrib/ltree_plpython/expected/ltree_plpython.out
Normal file
45
contrib/ltree_plpython/expected/ltree_plpython.out
Normal file
@ -0,0 +1,45 @@
|
||||
CREATE EXTENSION plpython2u;
|
||||
CREATE EXTENSION ltree_plpython2u;
|
||||
CREATE FUNCTION test1(val ltree) RETURNS int
|
||||
LANGUAGE plpythonu
|
||||
TRANSFORM FOR TYPE ltree
|
||||
AS $$
|
||||
plpy.info(repr(val))
|
||||
return len(val)
|
||||
$$;
|
||||
SELECT test1('aa.bb.cc'::ltree);
|
||||
INFO: ['aa', 'bb', 'cc']
|
||||
CONTEXT: PL/Python function "test1"
|
||||
test1
|
||||
-------
|
||||
3
|
||||
(1 row)
|
||||
|
||||
CREATE FUNCTION test1n(val ltree) RETURNS int
|
||||
LANGUAGE plpython2u
|
||||
TRANSFORM FOR TYPE ltree
|
||||
AS $$
|
||||
plpy.info(repr(val))
|
||||
return len(val)
|
||||
$$;
|
||||
SELECT test1n('aa.bb.cc'::ltree);
|
||||
INFO: ['aa', 'bb', 'cc']
|
||||
CONTEXT: PL/Python function "test1n"
|
||||
test1n
|
||||
--------
|
||||
3
|
||||
(1 row)
|
||||
|
||||
CREATE FUNCTION test2() RETURNS ltree
|
||||
LANGUAGE plpythonu
|
||||
TRANSFORM FOR TYPE ltree
|
||||
AS $$
|
||||
return ['foo', 'bar', 'baz']
|
||||
$$;
|
||||
-- plpython to ltree is not yet implemented, so this will fail,
|
||||
-- because it will try to parse the Python list as an ltree input
|
||||
-- string.
|
||||
SELECT test2();
|
||||
ERROR: syntax error at position 0
|
||||
CONTEXT: while creating return value
|
||||
PL/Python function "test2"
|
Reference in New Issue
Block a user