Fix obsolete comment regarding FSM truncation.
[PostgreSQL.git] / src / pl / plpython / expected / plpython_test.out
blobddd565bbff5fda0d56a630d0a26d3a4e47d317b1
1 -- first some tests of basic functionality
2 --
3 -- better succeed
4 --
5 select stupid();
6  stupid 
7 --------
8  zarkon
9 (1 row)
11 -- check static and global data
13 SELECT static_test();
14  static_test 
15 -------------
16            1
17 (1 row)
19 SELECT static_test();
20  static_test 
21 -------------
22            2
23 (1 row)
25 SELECT global_test_one();
26                     global_test_one                     
27 --------------------------------------------------------
28  SD: set by global_test_one, GD: set by global_test_one
29 (1 row)
31 SELECT global_test_two();
32                     global_test_two                     
33 --------------------------------------------------------
34  SD: set by global_test_two, GD: set by global_test_one
35 (1 row)
37 -- import python modules
39 SELECT import_fail();
40 NOTICE:  ('import socket failed -- No module named foosocket',)
41     import_fail     
42 --------------------
43  failed as expected
44 (1 row)
46 SELECT import_succeed();
47      import_succeed     
48 ------------------------
49  succeeded, as expected
50 (1 row)
52 -- test import and simple argument handling
54 SELECT import_test_one('sha hash of this string');
55              import_test_one              
56 ------------------------------------------
57  a04e23cb9b1a09cd1051a04a7c571aae0f90346c
58 (1 row)
60 -- test import and tuple argument handling
62 select import_test_two(users) from users where fname = 'willem';
63                           import_test_two                          
64 -------------------------------------------------------------------
65  sha hash of willemdoe is 3cde6b574953b0ca937b4d76ebc40d534d910759
66 (1 row)
68 -- test multiple arguments
70 select argument_test_one(users, fname, lname) from users where lname = 'doe' order by 1;
71                            argument_test_one                           
72 -----------------------------------------------------------------------
73  jane doe => {fname: jane, lname: doe, userid: 1, username: j_doe}
74  john doe => {fname: john, lname: doe, userid: 2, username: johnd}
75  willem doe => {fname: willem, lname: doe, userid: 3, username: w_doe}
76 (3 rows)
78 -- spi and nested calls
80 select nested_call_one('pass this along');
81                          nested_call_one                         
82 -----------------------------------------------------------------
83  {'nested_call_two': "{'nested_call_three': 'pass this along'}"}
84 (1 row)
86 select spi_prepared_plan_test_one('doe');
87  spi_prepared_plan_test_one 
88 ----------------------------
89  there are 3 does
90 (1 row)
92 select spi_prepared_plan_test_one('smith');
93  spi_prepared_plan_test_one 
94 ----------------------------
95  there are 1 smiths
96 (1 row)
98 select spi_prepared_plan_test_nested('smith');
99  spi_prepared_plan_test_nested 
100 -------------------------------
101  there are 1 smiths
102 (1 row)
104 -- quick peek at the table
106 SELECT * FROM users;
107  fname  | lname | username | userid 
108 --------+-------+----------+--------
109  jane   | doe   | j_doe    |      1
110  john   | doe   | johnd    |      2
111  willem | doe   | w_doe    |      3
112  rick   | smith | slash    |      4
113 (4 rows)
115 -- should fail
117 UPDATE users SET fname = 'william' WHERE fname = 'willem';
118 -- should modify william to willem and create username
120 INSERT INTO users (fname, lname) VALUES ('william', 'smith');
121 INSERT INTO users (fname, lname, username) VALUES ('charles', 'darwin', 'beagle');
122 SELECT * FROM users;
123   fname  | lname  | username | userid 
124 ---------+--------+----------+--------
125  jane    | doe    | j_doe    |      1
126  john    | doe    | johnd    |      2
127  willem  | doe    | w_doe    |      3
128  rick    | smith  | slash    |      4
129  willem  | smith  | w_smith  |      5
130  charles | darwin | beagle   |      6
131 (6 rows)
133 SELECT join_sequences(sequences) FROM sequences;
134  join_sequences 
135 ----------------
136  ABCDEFGHIJKL
137  ABCDEF
138  ABCDEF
139  ABCDEF
140  ABCDEF
141  ABCDEF
142 (6 rows)
144 SELECT join_sequences(sequences) FROM sequences
145         WHERE join_sequences(sequences) ~* '^A';
146  join_sequences 
147 ----------------
148  ABCDEFGHIJKL
149  ABCDEF
150  ABCDEF
151  ABCDEF
152  ABCDEF
153  ABCDEF
154 (6 rows)
156 SELECT join_sequences(sequences) FROM sequences
157         WHERE join_sequences(sequences) ~* '^B';
158  join_sequences 
159 ----------------
160 (0 rows)
162 -- error in trigger
165 -- Check Universal Newline Support
167 SELECT newline_lf();
168  newline_lf 
169 ------------
170         123
171 (1 row)
173 SELECT newline_cr();
174  newline_cr 
175 ------------
176         123
177 (1 row)
179 SELECT newline_crlf();
180  newline_crlf 
181 --------------
182           123
183 (1 row)
185 -- Tests for functions returning void
186 SELECT test_void_func1(), test_void_func1() IS NULL AS "is null";
187  test_void_func1 | is null 
188 -----------------+---------
189                  | f
190 (1 row)
192 SELECT test_void_func2(); -- should fail
193 ERROR:  invalid return value from plpython function
194 DETAIL:  Functions returning type "void" must return None.
195 SELECT test_return_none(), test_return_none() IS NULL AS "is null";
196  test_return_none | is null 
197 ------------------+---------
198                   | t
199 (1 row)
201 -- Test for functions with named parameters
202 SELECT test_param_names1(1,'text');
203  test_param_names1 
204 -------------------
206 (1 row)
208 SELECT test_param_names2(users) from users;
209                              test_param_names2                              
210 ----------------------------------------------------------------------------
211  {'lname': 'doe', 'username': 'j_doe', 'userid': 1, 'fname': 'jane'}
212  {'lname': 'doe', 'username': 'johnd', 'userid': 2, 'fname': 'john'}
213  {'lname': 'doe', 'username': 'w_doe', 'userid': 3, 'fname': 'willem'}
214  {'lname': 'smith', 'username': 'slash', 'userid': 4, 'fname': 'rick'}
215  {'lname': 'smith', 'username': 'w_smith', 'userid': 5, 'fname': 'willem'}
216  {'lname': 'darwin', 'username': 'beagle', 'userid': 6, 'fname': 'charles'}
217 (6 rows)
219 SELECT test_param_names3(1);
220  test_param_names3 
221 -------------------
223 (1 row)
225 -- Test set returning functions
226 SELECT test_setof_as_list(0, 'list');
227  test_setof_as_list 
228 --------------------
229 (0 rows)
231 SELECT test_setof_as_list(1, 'list');
232  test_setof_as_list 
233 --------------------
234  list
235 (1 row)
237 SELECT test_setof_as_list(2, 'list');
238  test_setof_as_list 
239 --------------------
240  list
241  list
242 (2 rows)
244 SELECT test_setof_as_list(2, null);
245  test_setof_as_list 
246 --------------------
249 (2 rows)
251 SELECT test_setof_as_tuple(0, 'tuple');
252  test_setof_as_tuple 
253 ---------------------
254 (0 rows)
256 SELECT test_setof_as_tuple(1, 'tuple');
257  test_setof_as_tuple 
258 ---------------------
259  tuple
260 (1 row)
262 SELECT test_setof_as_tuple(2, 'tuple');
263  test_setof_as_tuple 
264 ---------------------
265  tuple
266  tuple
267 (2 rows)
269 SELECT test_setof_as_tuple(2, null);
270  test_setof_as_tuple 
271 ---------------------
274 (2 rows)
276 SELECT test_setof_as_iterator(0, 'list');
277  test_setof_as_iterator 
278 ------------------------
279 (0 rows)
281 SELECT test_setof_as_iterator(1, 'list');
282  test_setof_as_iterator 
283 ------------------------
284  list
285 (1 row)
287 SELECT test_setof_as_iterator(2, 'list');
288  test_setof_as_iterator 
289 ------------------------
290  list
291  list
292 (2 rows)
294 SELECT test_setof_as_iterator(2, null);
295  test_setof_as_iterator 
296 ------------------------
299 (2 rows)
301 -- Test tuple returning functions
302 SELECT * FROM test_table_record_as('dict', null, null, false);
303  first | second 
304 -------+--------
305        |       
306 (1 row)
308 SELECT * FROM test_table_record_as('dict', 'one', null, false);
309  first | second 
310 -------+--------
311  one   |       
312 (1 row)
314 SELECT * FROM test_table_record_as('dict', null, 2, false);
315  first | second 
316 -------+--------
317        |      2
318 (1 row)
320 SELECT * FROM test_table_record_as('dict', 'three', 3, false);
321  first | second 
322 -------+--------
323  three |      3
324 (1 row)
326 SELECT * FROM test_table_record_as('dict', null, null, true);
327  first | second 
328 -------+--------
329        |       
330 (1 row)
332 SELECT * FROM test_table_record_as('tuple', null, null, false);
333  first | second 
334 -------+--------
335        |       
336 (1 row)
338 SELECT * FROM test_table_record_as('tuple', 'one', null, false);
339  first | second 
340 -------+--------
341  one   |       
342 (1 row)
344 SELECT * FROM test_table_record_as('tuple', null, 2, false);
345  first | second 
346 -------+--------
347        |      2
348 (1 row)
350 SELECT * FROM test_table_record_as('tuple', 'three', 3, false);
351  first | second 
352 -------+--------
353  three |      3
354 (1 row)
356 SELECT * FROM test_table_record_as('tuple', null, null, true);
357  first | second 
358 -------+--------
359        |       
360 (1 row)
362 SELECT * FROM test_table_record_as('list', null, null, false);
363  first | second 
364 -------+--------
365        |       
366 (1 row)
368 SELECT * FROM test_table_record_as('list', 'one', null, false);
369  first | second 
370 -------+--------
371  one   |       
372 (1 row)
374 SELECT * FROM test_table_record_as('list', null, 2, false);
375  first | second 
376 -------+--------
377        |      2
378 (1 row)
380 SELECT * FROM test_table_record_as('list', 'three', 3, false);
381  first | second 
382 -------+--------
383  three |      3
384 (1 row)
386 SELECT * FROM test_table_record_as('list', null, null, true);
387  first | second 
388 -------+--------
389        |       
390 (1 row)
392 SELECT * FROM test_table_record_as('obj', null, null, false);
393  first | second 
394 -------+--------
395        |       
396 (1 row)
398 SELECT * FROM test_table_record_as('obj', 'one', null, false);
399  first | second 
400 -------+--------
401  one   |       
402 (1 row)
404 SELECT * FROM test_table_record_as('obj', null, 2, false);
405  first | second 
406 -------+--------
407        |      2
408 (1 row)
410 SELECT * FROM test_table_record_as('obj', 'three', 3, false);
411  first | second 
412 -------+--------
413  three |      3
414 (1 row)
416 SELECT * FROM test_table_record_as('obj', null, null, true);
417  first | second 
418 -------+--------
419        |       
420 (1 row)
422 SELECT * FROM test_type_record_as('dict', null, null, false);
423  first | second 
424 -------+--------
425        |       
426 (1 row)
428 SELECT * FROM test_type_record_as('dict', 'one', null, false);
429  first | second 
430 -------+--------
431  one   |       
432 (1 row)
434 SELECT * FROM test_type_record_as('dict', null, 2, false);
435  first | second 
436 -------+--------
437        |      2
438 (1 row)
440 SELECT * FROM test_type_record_as('dict', 'three', 3, false);
441  first | second 
442 -------+--------
443  three |      3
444 (1 row)
446 SELECT * FROM test_type_record_as('dict', null, null, true);
447  first | second 
448 -------+--------
449        |       
450 (1 row)
452 SELECT * FROM test_type_record_as('tuple', null, null, false);
453  first | second 
454 -------+--------
455        |       
456 (1 row)
458 SELECT * FROM test_type_record_as('tuple', 'one', null, false);
459  first | second 
460 -------+--------
461  one   |       
462 (1 row)
464 SELECT * FROM test_type_record_as('tuple', null, 2, false);
465  first | second 
466 -------+--------
467        |      2
468 (1 row)
470 SELECT * FROM test_type_record_as('tuple', 'three', 3, false);
471  first | second 
472 -------+--------
473  three |      3
474 (1 row)
476 SELECT * FROM test_type_record_as('tuple', null, null, true);
477  first | second 
478 -------+--------
479        |       
480 (1 row)
482 SELECT * FROM test_type_record_as('list', null, null, false);
483  first | second 
484 -------+--------
485        |       
486 (1 row)
488 SELECT * FROM test_type_record_as('list', 'one', null, false);
489  first | second 
490 -------+--------
491  one   |       
492 (1 row)
494 SELECT * FROM test_type_record_as('list', null, 2, false);
495  first | second 
496 -------+--------
497        |      2
498 (1 row)
500 SELECT * FROM test_type_record_as('list', 'three', 3, false);
501  first | second 
502 -------+--------
503  three |      3
504 (1 row)
506 SELECT * FROM test_type_record_as('list', null, null, true);
507  first | second 
508 -------+--------
509        |       
510 (1 row)
512 SELECT * FROM test_type_record_as('obj', null, null, false);
513  first | second 
514 -------+--------
515        |       
516 (1 row)
518 SELECT * FROM test_type_record_as('obj', 'one', null, false);
519  first | second 
520 -------+--------
521  one   |       
522 (1 row)
524 SELECT * FROM test_type_record_as('obj', null, 2, false);
525  first | second 
526 -------+--------
527        |      2
528 (1 row)
530 SELECT * FROM test_type_record_as('obj', 'three', 3, false);
531  first | second 
532 -------+--------
533  three |      3
534 (1 row)
536 SELECT * FROM test_type_record_as('obj', null, null, true);
537  first | second 
538 -------+--------
539        |       
540 (1 row)
542 SELECT * FROM test_in_out_params('test_in');
543       second       
544 -------------------
545  test_in_in_to_out
546 (1 row)
548 -- this doesn't work yet :-(
549 SELECT * FROM test_in_out_params_multi('test_in');
550 ERROR:  plpython functions cannot return type record
551 SELECT * FROM test_inout_params('test_in');
552      first     
553 ---------------
554  test_in_inout
555 (1 row)