File Coverage

blib/lib/SQL/ReservedWords/Oracle.pm
Criterion Covered Total %
statement 34 34 100.0
branch 8 8 100.0
condition 2 2 100.0
subroutine 14 14 100.0
pod 7 7 100.0
total 65 65 100.0


line stmt bran cond sub pod time code
1             package SQL::ReservedWords::Oracle;
2              
3 2     2   2930 use strict;
  2         5  
  2         75  
4 2     2   12 use warnings;
  2         3  
  2         68  
5 2     2   10 use vars '$VERSION';
  2         4  
  2         117  
6              
7             $VERSION = '0.8';
8              
9 2     2   11 use constant ORACLE7 => 0x01;
  2         3  
  2         106  
10 2     2   9 use constant ORACLE8 => 0x02;
  2         3  
  2         78  
11 2     2   9 use constant ORACLE9 => 0x04;
  2         3  
  2         76  
12 2     2   9 use constant ORACLE10 => 0x08;
  2         4  
  2         7335  
13              
14             {
15             require Sub::Exporter;
16              
17             my @exports = qw[
18             is_reserved
19             is_reserved_by_oracle7
20             is_reserved_by_oracle8
21             is_reserved_by_oracle9
22             is_reserved_by_oracle10
23             reserved_by
24             words
25             ];
26              
27             Sub::Exporter->import( -setup => { exports => \@exports } );
28             }
29              
30             {
31             my %WORDS = (
32             ACCESS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
33             ADD => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
34             ALL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
35             ALTER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
36             AND => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
37             ANY => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
38             AS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
39             ASC => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
40             AUDIT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
41             BETWEEN => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
42             BY => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
43             CHAR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
44             CHECK => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
45             CLUSTER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
46             COLUMN => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
47             COMMENT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
48             COMPRESS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
49             CONNECT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
50             CREATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
51             CURRENT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
52             DATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
53             DECIMAL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
54             DEFAULT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
55             DELETE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
56             DESC => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
57             DISTINCT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
58             DROP => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
59             ELSE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
60             EXCLUSIVE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
61             EXISTS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
62             FILE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
63             FLOAT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
64             FOR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
65             FROM => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
66             GRANT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
67             GROUP => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
68             HAVING => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
69             IDENTIFIED => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
70             IMMEDIATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
71             IN => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
72             INCREMENT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
73             INDEX => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
74             INITIAL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
75             INSERT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
76             INTEGER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
77             INTERSECT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
78             INTO => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
79             IS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
80             LEVEL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
81             LIKE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
82             LOCK => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
83             LONG => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
84             MAXEXTENTS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
85             MINUS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
86             MLSLABEL => ORACLE8 | ORACLE9 | ORACLE10,
87             MODE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
88             MODIFY => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
89             NOAUDIT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
90             NOCOMPRESS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
91             NOT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
92             NOWAIT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
93             NULL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
94             NUMBER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
95             OF => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
96             OFFLINE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
97             ON => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
98             ONLINE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
99             OPTION => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
100             OR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
101             ORDER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
102             PCTFREE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
103             PRIOR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
104             PRIVILEGES => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
105             PUBLIC => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
106             RAW => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
107             RENAME => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
108             RESOURCE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
109             REVOKE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
110             ROW => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
111             ROWID => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
112             ROWLABEL => ORACLE7,
113             ROWNUM => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
114             ROWS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
115             SELECT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
116             SESSION => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
117             SET => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
118             SHARE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
119             SIZE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
120             SMALLINT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
121             START => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
122             SUCCESSFUL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
123             SYNONYM => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
124             SYSDATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
125             TABLE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
126             THEN => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
127             TO => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
128             TRIGGER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
129             UID => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
130             UNION => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
131             UNIQUE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
132             UPDATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
133             USER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
134             VALIDATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
135             VALUES => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
136             VARCHAR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
137             VARCHAR2 => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
138             VIEW => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
139             WHENEVER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
140             WHERE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10,
141             WITH => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10
142             );
143              
144             sub is_reserved {
145 30   100 30 1 264 return $WORDS{ uc(pop || '') } || 0;
146             }
147              
148             sub is_reserved_by_oracle7 {
149 5     5 1 11 return &is_reserved & ORACLE7;
150             }
151              
152             sub is_reserved_by_oracle8 {
153 5     5 1 13 return &is_reserved & ORACLE8;
154             }
155              
156             sub is_reserved_by_oracle9 {
157 5     5 1 13 return &is_reserved & ORACLE9;
158             }
159              
160             sub is_reserved_by_oracle10 {
161 5     5 1 14 return &is_reserved & ORACLE10;
162             }
163              
164             sub reserved_by {
165 4     4 1 38 my $flags = &is_reserved;
166 4         9 my @reserved_by = ();
167              
168 4 100       14 push @reserved_by, 'Oracle 7' if $flags & ORACLE7;
169 4 100       11 push @reserved_by, 'Oracle 8i' if $flags & ORACLE8;
170 4 100       11 push @reserved_by, 'Oracle 9i' if $flags & ORACLE9;
171 4 100       10 push @reserved_by, 'Oracle 10g' if $flags & ORACLE10;
172              
173 4         26 return @reserved_by;
174             }
175              
176             sub words {
177 2     2 1 9392 return sort keys %WORDS;
178             }
179             }
180              
181             1;
182              
183             __END__