1
package SQL::ReservedWords::PostgreSQL;
9
use constant POSTGRESQL73 => 0x01;
10
use constant POSTGRESQL74 => 0x02;
11
use constant POSTGRESQL80 => 0x04;
12
use constant POSTGRESQL81 => 0x08;
15
require Sub::Exporter;
19
is_reserved_by_postgresql7
20
is_reserved_by_postgresql8
25
Sub::Exporter->import( -setup => { exports => \@exports } );
30
ALL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
31
ANALYSE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
32
ANALYZE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
33
AND => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
34
ANY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
35
ARRAY => POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
36
AS => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
37
ASC => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
38
ASYMMETRIC => POSTGRESQL81,
39
AUTHORIZATION => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
40
BETWEEN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
41
BINARY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
42
BOTH => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
43
CASE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
44
CAST => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
45
CHECK => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
46
COLLATE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
47
COLUMN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
48
CONSTRAINT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
49
CREATE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
50
CROSS => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
51
CURRENT_DATE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
52
CURRENT_ROLE => POSTGRESQL81,
53
CURRENT_TIME => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
54
CURRENT_TIMESTAMP => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
55
CURRENT_USER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
56
DEFAULT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
57
DEFERRABLE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
58
DESC => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
59
DISTINCT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
60
DO => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
61
ELSE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
62
END => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
63
EXCEPT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
64
FALSE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
65
FOR => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
66
FOREIGN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
67
FREEZE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
68
FROM => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
69
FULL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
70
GRANT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
71
GROUP => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
72
HAVING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
73
ILIKE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
74
IN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
75
INITIALLY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
76
INNER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
77
INTERSECT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
78
INTO => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
79
IS => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
80
ISNULL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
81
JOIN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
82
LEADING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
83
LEFT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
84
LIKE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
85
LIMIT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
86
LOCALTIME => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
87
LOCALTIMESTAMP => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
88
NATURAL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
89
NEW => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
90
NOT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
91
NOTNULL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
92
NULL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
93
OFF => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
94
OFFSET => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
95
OLD => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
96
ON => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
97
ONLY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
98
OR => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
99
ORDER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
100
OUTER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
101
OVERLAPS => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
102
PLACING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
103
PRIMARY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
104
REFERENCES => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
105
RIGHT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
106
SELECT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
107
SESSION_USER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
108
SIMILAR => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
109
SOME => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
110
SYMMETRIC => POSTGRESQL81,
111
TABLE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
112
THEN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
113
TO => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
114
TRAILING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
115
TRUE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
116
UNION => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
117
UNIQUE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
118
USER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
119
USING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
120
VERBOSE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
121
WHEN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
122
WHERE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81,
126
return $WORDS{ uc pop } || 0;
129
sub is_reserved_by_postgresql7 {
130
my $flags = &is_reserved;
131
return $flags & POSTGRESQL73 || $flags & POSTGRESQL74;
134
sub is_reserved_by_postgresql8 {
135
my $flags = &is_reserved;
136
return $flags & POSTGRESQL80 || $flags & POSTGRESQL81;
140
my $flags = &is_reserved;
141
my @reserved_by = ();
143
push @reserved_by, 'PostgreSQL 7.3' if $flags & POSTGRESQL73;
144
push @reserved_by, 'PostgreSQL 7.4' if $flags & POSTGRESQL74;
145
push @reserved_by, 'PostgreSQL 8.0' if $flags & POSTGRESQL80;
146
push @reserved_by, 'PostgreSQL 8.1' if $flags & POSTGRESQL81;
152
return sort keys %WORDS;
162
SQL::ReservedWords::PostgreSQL - Reserved SQL words by PostgreSQL
166
if ( SQL::ReservedWords::PostgreSQL->is_reserved( $word ) ) {
167
print "$word is a reserved PostgreSQL word!";
172
Determine if words are reserved by PostgreSQL.
178
=item is_reserved( $word )
180
Returns a boolean indicating if C<$word> is reserved by either PostgreSQL 7.3, 7.4,
183
=item is_reserved_by_postgresql7( $word )
185
Returns a boolean indicating if C<$word> is reserved by either PostgreSQL 7.3 or 7.4.
187
=item is_reserved_by_postgresql8( $word )
189
Returns a boolean indicating if C<$word> is reserved by either PostgreSQL 8.0 or 8.1.
191
=item reserved_by( $word )
193
Returns a list with PostgreSQL versions that reserves C<$word>.
197
Returns a list with all reserved words.
203
Nothing by default. Following subroutines can be exported:
209
=item is_reserved_by_postgresql7
211
=item is_reserved_by_postgresql8
221
L<SQL::ReservedWords>
223
L<http://www.postgresql.org/docs/manuals/>
227
Christian Hansen C<chansen@cpan.org>
231
This program is free software, you can redistribute it and/or modify
232
it under the same terms as Perl itself.