Fix xslt_process() to ensure that it inserts a NULL terminator after the
[PostgreSQL.git] / src / pl / plpython / sql / plpython_test.sql
blob633d940e5d40b16de7ee481f340001b3e92bb4eb
1 -- first some tests of basic functionality
2 --
3 -- better succeed
4 --
5 select stupid();
7 -- check static and global data
8 --
9 SELECT static_test();
10 SELECT static_test();
11 SELECT global_test_one();
12 SELECT global_test_two();
14 -- import python modules
16 SELECT import_fail();
17 SELECT import_succeed();
19 -- test import and simple argument handling
21 SELECT import_test_one('sha hash of this string');
23 -- test import and tuple argument handling
25 select import_test_two(users) from users where fname = 'willem';
27 -- test multiple arguments
29 select argument_test_one(users, fname, lname) from users where lname = 'doe' order by 1;
32 -- spi and nested calls
34 select nested_call_one('pass this along');
35 select spi_prepared_plan_test_one('doe');
36 select spi_prepared_plan_test_one('smith');
37 select spi_prepared_plan_test_nested('smith');
39 -- quick peek at the table
41 SELECT * FROM users;
43 -- should fail
45 UPDATE users SET fname = 'william' WHERE fname = 'willem';
47 -- should modify william to willem and create username
49 INSERT INTO users (fname, lname) VALUES ('william', 'smith');
50 INSERT INTO users (fname, lname, username) VALUES ('charles', 'darwin', 'beagle');
52 SELECT * FROM users;
55 SELECT join_sequences(sequences) FROM sequences;
56 SELECT join_sequences(sequences) FROM sequences
57         WHERE join_sequences(sequences) ~* '^A';
58 SELECT join_sequences(sequences) FROM sequences
59         WHERE join_sequences(sequences) ~* '^B';
61 -- error in trigger
65 -- Check Universal Newline Support
68 SELECT newline_lf();
69 SELECT newline_cr();
70 SELECT newline_crlf();
72 -- Tests for functions returning void
73 SELECT test_void_func1(), test_void_func1() IS NULL AS "is null";
74 SELECT test_void_func2(); -- should fail
75 SELECT test_return_none(), test_return_none() IS NULL AS "is null";
77 -- Test for functions with named and nameless parameters
78 SELECT test_param_names0(2,7);
79 SELECT test_param_names1(1,'text');
80 SELECT test_param_names2(users) from users;
81 SELECT test_param_names3(1);
83 -- Test set returning functions
84 SELECT test_setof_as_list(0, 'list');
85 SELECT test_setof_as_list(1, 'list');
86 SELECT test_setof_as_list(2, 'list');
87 SELECT test_setof_as_list(2, null);
89 SELECT test_setof_as_tuple(0, 'tuple');
90 SELECT test_setof_as_tuple(1, 'tuple');
91 SELECT test_setof_as_tuple(2, 'tuple');
92 SELECT test_setof_as_tuple(2, null);
94 SELECT test_setof_as_iterator(0, 'list');
95 SELECT test_setof_as_iterator(1, 'list');
96 SELECT test_setof_as_iterator(2, 'list');
97 SELECT test_setof_as_iterator(2, null);
99 -- Test tuple returning functions
100 SELECT * FROM test_table_record_as('dict', null, null, false);
101 SELECT * FROM test_table_record_as('dict', 'one', null, false);
102 SELECT * FROM test_table_record_as('dict', null, 2, false);
103 SELECT * FROM test_table_record_as('dict', 'three', 3, false);
104 SELECT * FROM test_table_record_as('dict', null, null, true);
106 SELECT * FROM test_table_record_as('tuple', null, null, false);
107 SELECT * FROM test_table_record_as('tuple', 'one', null, false);
108 SELECT * FROM test_table_record_as('tuple', null, 2, false);
109 SELECT * FROM test_table_record_as('tuple', 'three', 3, false);
110 SELECT * FROM test_table_record_as('tuple', null, null, true);
112 SELECT * FROM test_table_record_as('list', null, null, false);
113 SELECT * FROM test_table_record_as('list', 'one', null, false);
114 SELECT * FROM test_table_record_as('list', null, 2, false);
115 SELECT * FROM test_table_record_as('list', 'three', 3, false);
116 SELECT * FROM test_table_record_as('list', null, null, true);
118 SELECT * FROM test_table_record_as('obj', null, null, false);
119 SELECT * FROM test_table_record_as('obj', 'one', null, false);
120 SELECT * FROM test_table_record_as('obj', null, 2, false);
121 SELECT * FROM test_table_record_as('obj', 'three', 3, false);
122 SELECT * FROM test_table_record_as('obj', null, null, true);
124 SELECT * FROM test_type_record_as('dict', null, null, false);
125 SELECT * FROM test_type_record_as('dict', 'one', null, false);
126 SELECT * FROM test_type_record_as('dict', null, 2, false);
127 SELECT * FROM test_type_record_as('dict', 'three', 3, false);
128 SELECT * FROM test_type_record_as('dict', null, null, true);
130 SELECT * FROM test_type_record_as('tuple', null, null, false);
131 SELECT * FROM test_type_record_as('tuple', 'one', null, false);
132 SELECT * FROM test_type_record_as('tuple', null, 2, false);
133 SELECT * FROM test_type_record_as('tuple', 'three', 3, false);
134 SELECT * FROM test_type_record_as('tuple', null, null, true);
136 SELECT * FROM test_type_record_as('list', null, null, false);
137 SELECT * FROM test_type_record_as('list', 'one', null, false);
138 SELECT * FROM test_type_record_as('list', null, 2, false);
139 SELECT * FROM test_type_record_as('list', 'three', 3, false);
140 SELECT * FROM test_type_record_as('list', null, null, true);
142 SELECT * FROM test_type_record_as('obj', null, null, false);
143 SELECT * FROM test_type_record_as('obj', 'one', null, false);
144 SELECT * FROM test_type_record_as('obj', null, 2, false);
145 SELECT * FROM test_type_record_as('obj', 'three', 3, false);
146 SELECT * FROM test_type_record_as('obj', null, null, true);
148 SELECT * FROM test_in_out_params('test_in');
149 -- this doesn't work yet :-(
150 SELECT * FROM test_in_out_params_multi('test_in');
151 SELECT * FROM test_inout_params('test_in');