~ubuntu-branches/ubuntu/oneiric/libsql-reservedwords-perl/oneiric

« back to all changes in this revision

Viewing changes to lib/SQL/ReservedWords/SQLite.pm

  • Committer: Bazaar Package Importer
  • Author(s): Krzysztof Krzyżaniak (eloy)
  • Date: 2007-05-23 15:46:51 UTC
  • Revision ID: james.westby@ubuntu.com-20070523154651-yfxf9zx61d147v8c
Tags: upstream-0.7
Import upstream version 0.7

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package SQL::ReservedWords::SQLite;
 
2
 
 
3
use strict;
 
4
use warnings;
 
5
use vars '$VERSION';
 
6
 
 
7
$VERSION = 0.7;
 
8
 
 
9
use constant SQLITE2 => 0x01; # 2.8.17
 
10
use constant SQLITE3 => 0x02; # 3.3.4
 
11
 
 
12
{
 
13
    require Sub::Exporter;
 
14
 
 
15
    my @exports = qw[
 
16
        is_reserved
 
17
        is_reserved_by_sqlite2
 
18
        is_reserved_by_sqlite3
 
19
        reserved_by
 
20
        words
 
21
    ];
 
22
 
 
23
    Sub::Exporter->import( -setup => { exports => \@exports } );
 
24
}
 
25
 
 
26
{
 
27
    my %WORDS = (
 
28
        ALL                  => SQLITE2 | SQLITE3,
 
29
        ALTER                =>           SQLITE3,
 
30
        AND                  => SQLITE2 | SQLITE3,
 
31
        AS                   => SQLITE2 | SQLITE3,
 
32
        AUTOINCREMENT        =>           SQLITE3,
 
33
        BETWEEN              => SQLITE2 | SQLITE3,
 
34
        BY                   => SQLITE2 | SQLITE3,
 
35
        CASE                 => SQLITE2 | SQLITE3,
 
36
        CHECK                => SQLITE2 | SQLITE3,
 
37
        COLLATE              => SQLITE2 | SQLITE3,
 
38
        COMMIT               => SQLITE2 | SQLITE3,
 
39
        CONSTRAINT           => SQLITE2 | SQLITE3,
 
40
        CREATE               => SQLITE2 | SQLITE3,
 
41
        CROSS                =>           SQLITE3,
 
42
        DEFAULT              => SQLITE2 | SQLITE3,
 
43
        DEFERRABLE           => SQLITE2 | SQLITE3,
 
44
        DELETE               => SQLITE2 | SQLITE3,
 
45
        DISTINCT             => SQLITE2 | SQLITE3,
 
46
        DROP                 => SQLITE2 | SQLITE3,
 
47
        ELSE                 => SQLITE2 | SQLITE3,
 
48
        ESCAPE               =>           SQLITE3,
 
49
        EXCEPT               => SQLITE2 | SQLITE3,
 
50
        FOREIGN              => SQLITE2 | SQLITE3,
 
51
        FROM                 => SQLITE2 | SQLITE3,
 
52
        FULL                 =>           SQLITE3,
 
53
        GLOB                 => SQLITE2,
 
54
        GROUP                => SQLITE2 | SQLITE3,
 
55
        HAVING               => SQLITE2 | SQLITE3,
 
56
        IN                   => SQLITE2 | SQLITE3,
 
57
        INDEX                => SQLITE2 | SQLITE3,
 
58
        INNER                =>           SQLITE3,
 
59
        INSERT               => SQLITE2 | SQLITE3,
 
60
        INTERSECT            => SQLITE2 | SQLITE3,
 
61
        INTO                 => SQLITE2 | SQLITE3,
 
62
        IS                   => SQLITE2 | SQLITE3,
 
63
        ISNULL               => SQLITE2 | SQLITE3,
 
64
        JOIN                 => SQLITE2 | SQLITE3,
 
65
        LEFT                 =>           SQLITE3,
 
66
        LIKE                 => SQLITE2,
 
67
        LIMIT                => SQLITE2 | SQLITE3,
 
68
        NATURAL              =>           SQLITE3,
 
69
        NOT                  => SQLITE2 | SQLITE3,
 
70
        NOTNULL              => SQLITE2 | SQLITE3,
 
71
        NULL                 => SQLITE2 | SQLITE3,
 
72
        ON                   => SQLITE2 | SQLITE3,
 
73
        OR                   => SQLITE2 | SQLITE3,
 
74
        ORDER                => SQLITE2 | SQLITE3,
 
75
        OUTER                =>           SQLITE3,
 
76
        PRIMARY              => SQLITE2 | SQLITE3,
 
77
        REFERENCES           => SQLITE2 | SQLITE3,
 
78
        RIGHT                =>           SQLITE3,
 
79
        ROLLBACK             => SQLITE2 | SQLITE3,
 
80
        SELECT               => SQLITE2 | SQLITE3,
 
81
        SET                  => SQLITE2 | SQLITE3,
 
82
        TABLE                => SQLITE2 | SQLITE3,
 
83
        THEN                 => SQLITE2 | SQLITE3,
 
84
        TO                   =>           SQLITE3,
 
85
        TRANSACTION          => SQLITE2 | SQLITE3,
 
86
        UNION                => SQLITE2 | SQLITE3,
 
87
        UNIQUE               => SQLITE2 | SQLITE3,
 
88
        UPDATE               => SQLITE2 | SQLITE3,
 
89
        USING                => SQLITE2 | SQLITE3,
 
90
        VALUES               => SQLITE2 | SQLITE3,
 
91
        WHEN                 => SQLITE2 | SQLITE3,
 
92
        WHERE                => SQLITE2 | SQLITE3,
 
93
    );
 
94
 
 
95
    sub is_reserved {
 
96
        return $WORDS{ uc pop } || 0;
 
97
    }
 
98
 
 
99
    sub is_reserved_by_sqlite2 {
 
100
        return &is_reserved & SQLITE2;
 
101
    }
 
102
 
 
103
    sub is_reserved_by_sqlite3 {
 
104
        return &is_reserved & SQLITE3;
 
105
    }
 
106
 
 
107
    sub reserved_by {
 
108
        my $flags       = &is_reserved;
 
109
        my @reserved_by = ();
 
110
 
 
111
        push @reserved_by, 'SQLite 2' if $flags & SQLITE2;
 
112
        push @reserved_by, 'SQLite 3' if $flags & SQLITE3;
 
113
 
 
114
        return @reserved_by;
 
115
    }
 
116
 
 
117
    sub words {
 
118
        return sort keys %WORDS;
 
119
    }
 
120
}
 
121
 
 
122
1;
 
123
 
 
124
__END__
 
125
 
 
126
=head1 NAME
 
127
 
 
128
SQL::ReservedWords::SQLite - Reserved SQL words by SQLite
 
129
 
 
130
=head1 SYNOPSIS
 
131
 
 
132
   if ( SQL::ReservedWords::SQLite->is_reserved( $word ) ) {
 
133
       print "$word is a reserved SQLite word!";
 
134
   }
 
135
 
 
136
=head1 DESCRIPTION
 
137
 
 
138
Determine if words are reserved by SQLite.
 
139
 
 
140
=head1 METHODS
 
141
 
 
142
=over 4
 
143
 
 
144
=item is_reserved( $word )
 
145
 
 
146
Returns a boolean indicating if C<$word> is reserved by either SQLite 2 or 3.
 
147
 
 
148
=item is_reserved_by_sqlite2( $word )
 
149
 
 
150
Returns a boolean indicating if C<$word> is reserved by SQLite 2.
 
151
 
 
152
=item is_reserved_by_sqlite3( $word )
 
153
 
 
154
Returns a boolean indicating if C<$word> is reserved by SQLite 3.
 
155
 
 
156
=item reserved_by( $word )
 
157
 
 
158
Returns a list with SQLite versions that reserves C<$word>.
 
159
 
 
160
=item words
 
161
 
 
162
Returns a list with all reserved words.
 
163
 
 
164
=back
 
165
 
 
166
=head1 EXPORTS
 
167
 
 
168
Nothing by default. Following subroutines can be exported:
 
169
 
 
170
=over 4
 
171
 
 
172
=item is_reserved
 
173
 
 
174
=item is_reserved_by_sqlite2
 
175
 
 
176
=item is_reserved_by_sqlite3
 
177
 
 
178
=item reserved_by
 
179
 
 
180
=item words
 
181
 
 
182
=back
 
183
 
 
184
=head1 SEE ALSO
 
185
 
 
186
L<SQL::ReservedWords>
 
187
 
 
188
L<http://www.sqlite.org/docs.html>
 
189
 
 
190
=head1 AUTHOR
 
191
 
 
192
Christian Hansen C<chansen@cpan.org>
 
193
 
 
194
=head1 COPYRIGHT
 
195
 
 
196
This program is free software, you can redistribute it and/or modify
 
197
it under the same terms as Perl itself.
 
198
 
 
199
=cut