~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to src/pl/plperl/test/test_queries.sql

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--
 
2
-- checkpoint so that if we have a crash in the tests, replay of the
 
3
-- just-completed CREATE DATABASE won't discard the core dump file
 
4
--
 
5
checkpoint;
 
6
 
 
7
--
 
8
-- Test result value processing
 
9
--
 
10
 
 
11
CREATE OR REPLACE FUNCTION perl_int(int) RETURNS INTEGER AS $$
 
12
return undef;
 
13
$$ LANGUAGE plperl;
 
14
 
 
15
SELECT perl_int(11);
 
16
SELECT * FROM perl_int(42);
 
17
 
 
18
CREATE OR REPLACE FUNCTION perl_int(int) RETURNS INTEGER AS $$
 
19
return $_[0] + 1;
 
20
$$ LANGUAGE plperl;
 
21
 
 
22
SELECT perl_int(11);
 
23
SELECT * FROM perl_int(42);
 
24
 
 
25
 
 
26
CREATE OR REPLACE FUNCTION perl_set_int(int) RETURNS SETOF INTEGER AS $$
 
27
return undef;
 
28
$$ LANGUAGE plperl;
 
29
 
 
30
SELECT perl_set_int(5);
 
31
SELECT * FROM perl_set_int(5);
 
32
 
 
33
CREATE OR REPLACE FUNCTION perl_set_int(int) RETURNS SETOF INTEGER AS $$
 
34
return [0..$_[0]];
 
35
$$ LANGUAGE plperl;
 
36
 
 
37
SELECT perl_set_int(5);
 
38
SELECT * FROM perl_set_int(5);
 
39
 
 
40
 
 
41
CREATE TYPE testrowperl AS (f1 integer, f2 text, f3 text);
 
42
 
 
43
CREATE OR REPLACE FUNCTION perl_row() RETURNS testrowperl AS $$
 
44
    return undef;
 
45
$$ LANGUAGE plperl;
 
46
 
 
47
SELECT perl_row();
 
48
SELECT * FROM perl_row();
 
49
 
 
50
CREATE OR REPLACE FUNCTION perl_row() RETURNS testrowperl AS $$
 
51
    return {f2 => 'hello', f1 => 1, f3 => 'world'};
 
52
$$ LANGUAGE plperl;
 
53
 
 
54
SELECT perl_row();
 
55
SELECT * FROM perl_row();
 
56
 
 
57
 
 
58
CREATE OR REPLACE FUNCTION perl_set() RETURNS SETOF testrowperl AS $$
 
59
    return undef;
 
60
$$  LANGUAGE plperl;
 
61
 
 
62
SELECT perl_set();
 
63
SELECT * FROM perl_set();
 
64
 
 
65
CREATE OR REPLACE FUNCTION perl_set() RETURNS SETOF testrowperl AS $$
 
66
    return [
 
67
        { f1 => 1, f2 => 'Hello', f3 =>  'World' },
 
68
        undef,
 
69
        { f1 => 3, f2 => 'Hello', f3 =>  'PL/Perl' }
 
70
    ];
 
71
$$  LANGUAGE plperl;
 
72
 
 
73
SELECT perl_set();
 
74
SELECT * FROM perl_set();
 
75
 
 
76
CREATE OR REPLACE FUNCTION perl_set() RETURNS SETOF testrowperl AS $$
 
77
    return [
 
78
        { f1 => 1, f2 => 'Hello', f3 =>  'World' },
 
79
        { f1 => 2, f2 => 'Hello', f3 =>  'PostgreSQL' },
 
80
        { f1 => 3, f2 => 'Hello', f3 =>  'PL/Perl' }
 
81
    ];
 
82
$$  LANGUAGE plperl;
 
83
 
 
84
SELECT perl_set();
 
85
SELECT * FROM perl_set();
 
86
 
 
87
 
 
88
 
 
89
CREATE OR REPLACE FUNCTION perl_record() RETURNS record AS $$
 
90
    return undef;
 
91
$$ LANGUAGE plperl;
 
92
 
 
93
SELECT perl_record();
 
94
SELECT * FROM perl_record();
 
95
SELECT * FROM perl_record() AS (f1 integer, f2 text, f3 text);
 
96
 
 
97
CREATE OR REPLACE FUNCTION perl_record() RETURNS record AS $$
 
98
    return {f2 => 'hello', f1 => 1, f3 => 'world'};
 
99
$$ LANGUAGE plperl;
 
100
 
 
101
SELECT perl_record();
 
102
SELECT * FROM perl_record();
 
103
SELECT * FROM perl_record() AS (f1 integer, f2 text, f3 text);
 
104
 
 
105
 
 
106
CREATE OR REPLACE FUNCTION perl_record_set() RETURNS SETOF record AS $$
 
107
    return undef;
 
108
$$  LANGUAGE plperl;
 
109
 
 
110
SELECT perl_record_set();
 
111
SELECT * FROM perl_record_set();
 
112
SELECT * FROM perl_record_set() AS (f1 integer, f2 text, f3 text);
 
113
 
 
114
CREATE OR REPLACE FUNCTION perl_record_set() RETURNS SETOF record AS $$
 
115
    return [
 
116
        { f1 => 1, f2 => 'Hello', f3 =>  'World' },
 
117
        undef,
 
118
        { f1 => 3, f2 => 'Hello', f3 =>  'PL/Perl' }
 
119
    ];
 
120
$$  LANGUAGE plperl;
 
121
 
 
122
SELECT perl_record_set();
 
123
SELECT * FROM perl_record_set();
 
124
SELECT * FROM perl_record_set() AS (f1 integer, f2 text, f3 text);
 
125
 
 
126
CREATE OR REPLACE FUNCTION perl_record_set() RETURNS SETOF record AS $$
 
127
    return [
 
128
        { f1 => 1, f2 => 'Hello', f3 =>  'World' },
 
129
        { f1 => 2, f2 => 'Hello', f3 =>  'PostgreSQL' },
 
130
        { f1 => 3, f2 => 'Hello', f3 =>  'PL/Perl' }
 
131
    ];
 
132
$$  LANGUAGE plperl;
 
133
 
 
134
SELECT perl_record_set();
 
135
SELECT * FROM perl_record_set();
 
136
SELECT * FROM perl_record_set() AS (f1 integer, f2 text, f3 text);
 
137
 
 
138
--
 
139
-- Check behavior with erroneous return values
 
140
--
 
141
 
 
142
CREATE TYPE footype AS (x INTEGER, y INTEGER);
 
143
 
 
144
CREATE OR REPLACE FUNCTION foo_good() RETURNS SETOF footype AS $$
 
145
return [
 
146
    {x => 1, y => 2},
 
147
    {x => 3, y => 4}
 
148
];
 
149
$$ LANGUAGE plperl;
 
150
 
 
151
SELECT * FROM foo_good();
 
152
 
 
153
CREATE OR REPLACE FUNCTION foo_bad() RETURNS footype AS $$
 
154
    return {y => 3, z => 4};
 
155
$$ LANGUAGE plperl;
 
156
 
 
157
SELECT * FROM foo_bad();
 
158
 
 
159
CREATE OR REPLACE FUNCTION foo_bad() RETURNS footype AS $$
 
160
return 42;
 
161
$$ LANGUAGE plperl;
 
162
 
 
163
SELECT * FROM foo_bad();
 
164
 
 
165
CREATE OR REPLACE FUNCTION foo_bad() RETURNS footype AS $$
 
166
return [
 
167
    [1, 2],
 
168
    [3, 4]
 
169
];
 
170
$$ LANGUAGE plperl;
 
171
 
 
172
SELECT * FROM foo_bad();
 
173
 
 
174
CREATE OR REPLACE FUNCTION foo_set_bad() RETURNS SETOF footype AS $$
 
175
    return 42;
 
176
$$ LANGUAGE plperl;
 
177
 
 
178
SELECT * FROM foo_set_bad();
 
179
 
 
180
CREATE OR REPLACE FUNCTION foo_set_bad() RETURNS SETOF footype AS $$
 
181
    return {y => 3, z => 4};
 
182
$$ LANGUAGE plperl;
 
183
 
 
184
SELECT * FROM foo_set_bad();
 
185
 
 
186
CREATE OR REPLACE FUNCTION foo_set_bad() RETURNS SETOF footype AS $$
 
187
return [
 
188
    [1, 2],
 
189
    [3, 4]
 
190
];
 
191
$$ LANGUAGE plperl;
 
192
 
 
193
SELECT * FROM foo_set_bad();
 
194
 
 
195
CREATE OR REPLACE FUNCTION foo_set_bad() RETURNS SETOF footype AS $$
 
196
return [
 
197
    {y => 3, z => 4}
 
198
];
 
199
$$ LANGUAGE plperl;
 
200
 
 
201
SELECT * FROM foo_set_bad();
 
202
 
 
203
--
 
204
-- Check passing a tuple argument
 
205
--
 
206
 
 
207
CREATE OR REPLACE FUNCTION perl_get_field(footype, text) RETURNS integer AS $$
 
208
    return $_[0]->{$_[1]};
 
209
$$ LANGUAGE plperl;
 
210
 
 
211
SELECT perl_get_field((11,12), 'x');
 
212
SELECT perl_get_field((11,12), 'y');
 
213
SELECT perl_get_field((11,12), 'z');