-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathio.sql
More file actions
133 lines (117 loc) · 2.61 KB
/
Copy pathio.sql
File metadata and controls
133 lines (117 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
SET standard_conforming_strings TO ON;
CREATE OR REPLACE FUNCTION nothing() RETURNS VOID LANGUAGE python AS
$python$
def main():
pass
$python$;
SELECT nothing();
CREATE OR REPLACE FUNCTION return(int) RETURNS int LANGUAGE python AS
$python$
def main(n):
return n
$python$;
SELECT return(-3);
SELECT return(3);
SELECT return(0);
SELECT return(NULL);
CREATE OR REPLACE FUNCTION return(bigint) RETURNS bigint
LANGUAGE python AS
$python$
def main(n):
return n
$python$;
SELECT return(-12839128482::bigint);
SELECT return(12839128482::bigint);
SELECT return(NULL::bigint);
CREATE OR REPLACE FUNCTION return(text) RETURNS text
LANGUAGE python AS
$python$
def main(n):
return n
$python$;
SELECT return(E'\nfoo bar feh \t\t\n\n');
SELECT return(NULL::text);
CREATE OR REPLACE FUNCTION return(bytea) RETURNS bytea
LANGUAGE python AS
$python$
def main(d):
return d
$python$;
SELECT return('\020foo\011\000\001'::bytea);
CREATE OR REPLACE FUNCTION return(bigint[])
RETURNS bigint[]
LANGUAGE python AS
$python$
def main(n):
return n
$python$;
SELECT return(ARRAY[1::bigint,2,3]);
SELECT return(ARRAY[3::bigint,2,1]);
SELECT return(ARRAY[[3::bigint],[2],[1]]);
DROP TYPE IF EXISTS composite CASCADE;
CREATE TYPE composite AS (foo text, bar int);
CREATE OR REPLACE FUNCTION return(composite) RETURNS composite
LANGUAGE python AS
$python$
def main(n):
return n
$python$;
SELECT return(CAST(ROW('foo', 321) AS composite));
-- Test pl's "explicit" cast
CREATE OR REPLACE FUNCTION outonly(OUT foo int)
LANGUAGE python AS
$python$
def main():
return 2
$python$;
SELECT outonly();
CREATE OR REPLACE FUNCTION inoutonly(INOUT foo int)
LANGUAGE python AS
$python$
def main(n):
return n
$python$;
SELECT inoutonly(2);
SELECT inoutonly(3);
SELECT inoutonly(-3);
SELECT inoutonly(NULL);
CREATE OR REPLACE FUNCTION multiple_outs(OUT foo int, OUT bar int)
LANGUAGE python AS
$python$
def main():
return (1, 2)
$python$;
SELECT multiple_outs();
CREATE OR REPLACE FUNCTION
in_multiple_outs(INOUT foo int, OUT bar int)
LANGUAGE python AS
$python$
def main(n):
return (n, 2)
$python$;
SELECT in_multiple_outs(1);
SELECT in_multiple_outs(-11);
SELECT in_multiple_outs(1982);
-- Validate that the function cache is invalidated when a new one
-- is created in the same session.
CREATE OR REPLACE FUNCTION changing() RETURNS text
LANGUAGE python AS
$python$
def main():
return "foo"
$python$;
SELECT changing();
CREATE OR REPLACE FUNCTION changing() RETURNS text
LANGUAGE python AS
$python$
def main():
return "foobar"
$python$;
SELECT changing();
CREATE OR REPLACE FUNCTION changing() RETURNS text
LANGUAGE python AS
$python$
def main():
return "bar"
$python$;
SELECT changing();