94 lines
2.2 KiB
Plaintext
94 lines
2.2 KiB
Plaintext
-- first some tests of basic functionality
|
|
CREATE EXTENSION plpython3u;
|
|
-- really stupid function just to get the module loaded
|
|
CREATE FUNCTION stupid() RETURNS text AS 'return "zarkon"' LANGUAGE plpython3u;
|
|
select stupid();
|
|
stupid
|
|
--------
|
|
zarkon
|
|
(1 row)
|
|
|
|
-- check 2/3 versioning
|
|
CREATE FUNCTION stupidn() RETURNS text AS 'return "zarkon"' LANGUAGE plpython3u;
|
|
select stupidn();
|
|
stupidn
|
|
---------
|
|
zarkon
|
|
(1 row)
|
|
|
|
-- test multiple arguments and odd characters in function name
|
|
CREATE FUNCTION "Argument test #1"(u users, a1 text, a2 text) RETURNS text
|
|
AS
|
|
'keys = list(u.keys())
|
|
keys.sort()
|
|
out = []
|
|
for key in keys:
|
|
out.append("%s: %s" % (key, u[key]))
|
|
words = a1 + " " + a2 + " => {" + ", ".join(out) + "}"
|
|
return words'
|
|
LANGUAGE plpython3u;
|
|
select "Argument test #1"(users, fname, lname) from users where lname = 'doe' order by 1;
|
|
Argument test #1
|
|
-----------------------------------------------------------------------
|
|
jane doe => {fname: jane, lname: doe, userid: 1, username: j_doe}
|
|
john doe => {fname: john, lname: doe, userid: 2, username: johnd}
|
|
willem doe => {fname: willem, lname: doe, userid: 3, username: w_doe}
|
|
(3 rows)
|
|
|
|
-- check module contents
|
|
CREATE FUNCTION module_contents() RETURNS SETOF text AS
|
|
$$
|
|
contents = list(filter(lambda x: not x.startswith("__"), dir(plpy)))
|
|
contents.sort()
|
|
return contents
|
|
$$ LANGUAGE plpython3u;
|
|
select module_contents();
|
|
module_contents
|
|
-----------------
|
|
Error
|
|
Fatal
|
|
SPIError
|
|
commit
|
|
cursor
|
|
debug
|
|
error
|
|
execute
|
|
fatal
|
|
info
|
|
log
|
|
notice
|
|
prepare
|
|
quote_ident
|
|
quote_literal
|
|
quote_nullable
|
|
rollback
|
|
spiexceptions
|
|
subtransaction
|
|
warning
|
|
(20 rows)
|
|
|
|
CREATE FUNCTION elog_test_basic() RETURNS void
|
|
AS $$
|
|
plpy.debug('debug')
|
|
plpy.log('log')
|
|
plpy.info('info')
|
|
plpy.info(37)
|
|
plpy.info()
|
|
plpy.info('info', 37, [1, 2, 3])
|
|
plpy.notice('notice')
|
|
plpy.warning('warning')
|
|
plpy.error('error')
|
|
$$ LANGUAGE plpython3u;
|
|
SELECT elog_test_basic();
|
|
INFO: info
|
|
INFO: 37
|
|
INFO: ()
|
|
INFO: ('info', 37, [1, 2, 3])
|
|
NOTICE: notice
|
|
WARNING: warning
|
|
ERROR: plpy.Error: error
|
|
CONTEXT: Traceback (most recent call last):
|
|
PL/Python function "elog_test_basic", line 10, in <module>
|
|
plpy.error('error')
|
|
PL/Python function "elog_test_basic"
|