--load python3 if want to load python2: create extension plpythonu
CREATE EXTENSION plpython3u;
CREATE EXTENSION
CREATE TABLE temp (a INT ,b INT) ;
CREATE TABLE
INSERT INTO temp VALUES (1,2),(2,3),(3,4),(4,5),(5,6);
INSERT 0 5
CREATE OR REPLACE FUNCTION pymax(a INT, b INT)
RETURNS INT
LANGUAGE plpython3u FENCED
AS $$
if a > b:
return a;
else:
return b;
$$;
CREATE FUNCTION
SELECT pymax(1, 2);
pymax
-------
2
(1 row)
SELECT pymax(1 + 3, 2);
pymax
-------
4
(1 row)
SELECT pymax(a, b) FROM temp;
pymax
-------
2
3
4
5
6
(5 rows)
CREATE OR REPLACE FUNCTION pyless(a INT, b INT)
RETURNS INT
LANGUAGE plpython3u FENCED
AS $$
import numpy
if a < b:
return a;
else:
return b;
$$;
CREATE FUNCTION
SELECT pyless(1, 2);
pyless
--------
1
(1 row)
SELECT pyless(1 + 3, 2);
pyless
--------
2
(1 row)
SELECT pyless(a, b) FROM temp;
pyless
--------
1
2
3
4
5
(5 rows)
CREATE OR REPLACE FUNCTION pyequal(a INT, b INT)
RETURNS BOOLEAN
LANGUAGE plpython3u FENCED
AS $$
return a==b
$$;
CREATE FUNCTION
SELECT pyequal(1, 2);
pyequal
---------
f
(1 row)
SELECT pyequal(1 + 3, 2 + 2);
pyequal
---------
t
(1 row)
SELECT pyequal(a, b) FROM temp;
pyequal
---------
f
f
f
f
f
(5 rows)
CREATE OR REPLACE FUNCTION printa()
RETURNS VARCHAR
LANGUAGE plpython3u FENCED
AS $$
return 'AAAA'
$$;
CREATE FUNCTION
SELECT printa();
printa
--------
AAAA
(1 row)
CREATE OR REPLACE FUNCTION printb()
RETURNS VARCHAR
LANGUAGE plpython3u FENCED
AS $$
return 'BBBB'
$$;
CREATE FUNCTION
SELECT printb();
printb
--------
BBBB
(1 row)
CREATE TABLE employee (name TEXT, salary INTEGER, age INTEGER);
CREATE TABLE
INSERT INTO employee VALUES ('tom', 2000, 20),('jerry', 3000, 25);
INSERT 0 2
CREATE OR REPLACE FUNCTION make_pair (name TEXT, value INTEGER)
RETURNS TEXT
AS $$
return "name:" + name + ", value:" + str(value)
$$ LANGUAGE plpython3u FENCED;
CREATE FUNCTION
SELECT make_pair(name, age) FROM employee;
make_pair
----------------------
name:tom, value:20
name:jerry, value:25
(2 rows)
-- cleanup tables and functions in random order
DROP TABLE temp;
DROP TABLE employee;
DROP FUNCTION pymax;
DROP FUNCTION pyless;
DROP FUNCTION printa;
DROP FUNCTION printb;
DROP FUNCTION make_pair;
SELECT 'DB4AI PLPYTHON FENCED UDF TEST COMPLETED';
?column?
------------------------------------------
DB4AI PLPYTHON FENCED UDF TEST COMPLETED
(1 row)