~ubuntu-branches/ubuntu/oneiric/postgresql-9.1/oneiric-security

« back to all changes in this revision

Viewing changes to src/test/regress/sql/prepare.sql

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-05-11 10:41:53 UTC
  • Revision ID: james.westby@ubuntu.com-20110511104153-psbh2o58553fv1m0
Tags: upstream-9.1~beta1
ImportĀ upstreamĀ versionĀ 9.1~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
-- Regression tests for prepareable statements. We query the content
 
2
-- of the pg_prepared_statements view as prepared statements are
 
3
-- created and removed.
 
4
 
 
5
SELECT name, statement, parameter_types FROM pg_prepared_statements;
 
6
 
 
7
PREPARE q1 AS SELECT 1 AS a;
 
8
EXECUTE q1;
 
9
 
 
10
SELECT name, statement, parameter_types FROM pg_prepared_statements;
 
11
 
 
12
-- should fail
 
13
PREPARE q1 AS SELECT 2;
 
14
 
 
15
-- should succeed
 
16
DEALLOCATE q1;
 
17
PREPARE q1 AS SELECT 2;
 
18
EXECUTE q1;
 
19
 
 
20
PREPARE q2 AS SELECT 2 AS b;
 
21
SELECT name, statement, parameter_types FROM pg_prepared_statements;
 
22
 
 
23
-- sql92 syntax
 
24
DEALLOCATE PREPARE q1;
 
25
 
 
26
SELECT name, statement, parameter_types FROM pg_prepared_statements;
 
27
 
 
28
DEALLOCATE PREPARE q2;
 
29
-- the view should return the empty set again
 
30
SELECT name, statement, parameter_types FROM pg_prepared_statements;
 
31
 
 
32
-- parameterized queries
 
33
PREPARE q2(text) AS
 
34
        SELECT datname, datistemplate, datallowconn
 
35
        FROM pg_database WHERE datname = $1;
 
36
 
 
37
EXECUTE q2('postgres');
 
38
 
 
39
PREPARE q3(text, int, float, boolean, oid, smallint) AS
 
40
        SELECT * FROM tenk1 WHERE string4 = $1 AND (four = $2 OR
 
41
        ten = $3::bigint OR true = $4 OR oid = $5 OR odd = $6::int)
 
42
        ORDER BY unique1;
 
43
 
 
44
EXECUTE q3('AAAAxx', 5::smallint, 10.5::float, false, 500::oid, 4::bigint);
 
45
 
 
46
-- too few params
 
47
EXECUTE q3('bool');
 
48
 
 
49
-- too many params
 
50
EXECUTE q3('bytea', 5::smallint, 10.5::float, false, 500::oid, 4::bigint, true);
 
51
 
 
52
-- wrong param types
 
53
EXECUTE q3(5::smallint, 10.5::float, false, 500::oid, 4::bigint, 'bytea');
 
54
 
 
55
-- invalid type
 
56
PREPARE q4(nonexistenttype) AS SELECT $1;
 
57
 
 
58
-- create table as execute
 
59
PREPARE q5(int, text) AS
 
60
        SELECT * FROM tenk1 WHERE unique1 = $1 OR stringu1 = $2
 
61
        ORDER BY unique1;
 
62
CREATE TEMPORARY TABLE q5_prep_results AS EXECUTE q5(200, 'DTAAAA');
 
63
SELECT * FROM q5_prep_results;
 
64
 
 
65
-- unknown or unspecified parameter types: should succeed
 
66
PREPARE q6 AS
 
67
    SELECT * FROM tenk1 WHERE unique1 = $1 AND stringu1 = $2;
 
68
PREPARE q7(unknown) AS
 
69
    SELECT * FROM road WHERE thepath = $1;
 
70
 
 
71
SELECT name, statement, parameter_types FROM pg_prepared_statements
 
72
    ORDER BY name;
 
73
 
 
74
-- test DEALLOCATE ALL;
 
75
DEALLOCATE ALL;
 
76
SELECT name, statement, parameter_types FROM pg_prepared_statements
 
77
    ORDER BY name;