SQL-ReservedWords-0.8000755000766000024 012017657177 14535 5ustar00chansenstaff000000000000SQL-ReservedWords-0.8/Build.PL000444000766000024 66212017657177 16152 0ustar00chansenstaff000000000000use strict; use Module::Build; my $build = Module::Build->new( license => 'perl', module_name => 'SQL::ReservedWords', requires => { 'Sub::Exporter' => 0, }, build_requires => { 'Test::More' => 0, }, create_makefile_pl => 'traditional', create_readme => 1, script_files => [ 'scripts/sqlrw' ] ); $build->create_build_script; SQL-ReservedWords-0.8/Changes000444000766000024 162412017657177 16170 0ustar00chansenstaff000000000000Revision history for Perl extension SQL::ReservedWords 0.8 2012-08-30 00:00 - Added DB2 version 9 (Colin.Raybould@googlemail.com) RT#55070 - Fixed sqlrw command (olaf@wundersolutions.com) RT#28367 0.7 2006-03-24 00:00 - Added SQL::ReservedWords::Sybase 0.6 2006-03-24 00:00 - Added a script to query for reserved words, sqlrw - Added support for SQL Server 7 and 2005 - API is now stable, consistent and tested. 0.5 2006-03-24 00:00 - Renamed is_reserved_by_sql92 to is_reserved_by_sql1992. - Added DB2, MySQL, ODBC, Oracle, PostgreSQL, SQLite and SQLServer 0.4 2006-03-22 00:00 - Added reserved_by. - Renamed is_reserved_by_sql99 to is_reserved_by_sql1999. 0.3 2006-03-22 00:00 - Removed Exporter.pm from base. 0.2 2006-03-22 00:00 - Impoved tests. - Use Sub::Exporter for exporting, provides more power to user. 0.1 2006-03-22 00:00 - First release. SQL-ReservedWords-0.8/Makefile.PL000444000766000024 66712017657177 16635 0ustar00chansenstaff000000000000# Note: this file was auto-generated by Module::Build::Compat version 0.40 use ExtUtils::MakeMaker; WriteMakefile ( 'NAME' => 'SQL::ReservedWords', 'VERSION_FROM' => 'lib/SQL/ReservedWords.pm', 'PREREQ_PM' => { 'Sub::Exporter' => 0, 'Test::More' => 0 }, 'INSTALLDIRS' => 'site', 'EXE_FILES' => [ 'scripts/sqlrw' ], 'PL_FILES' => {} ) ; SQL-ReservedWords-0.8/MANIFEST000444000766000024 101712017657177 16022 0ustar00chansenstaff000000000000Build.PL Changes lib/SQL/ReservedWords.pm lib/SQL/ReservedWords/DB2.pm lib/SQL/ReservedWords/MySQL.pm lib/SQL/ReservedWords/ODBC.pm lib/SQL/ReservedWords/Oracle.pm lib/SQL/ReservedWords/PostgreSQL.pm lib/SQL/ReservedWords/SQLite.pm lib/SQL/ReservedWords/SQLServer.pm lib/SQL/ReservedWords/Sybase.pm MANIFEST This list of files scripts/sqlrw t/01-use.t t/02-pod.t t/04-sql.t t/05-db2.t t/06-mysql.t t/07-odbc.t t/08-oracle.t t/09-postgresql.t t/10-sqlite.t t/11-sqlserver.t t/12-sybase.t Makefile.PL README META.yml META.json SQL-ReservedWords-0.8/META.json000444000766000024 376612017657177 16327 0ustar00chansenstaff000000000000{ "abstract" : "Reserved SQL words by ANSI/ISO", "author" : [ "Christian Hansen C" ], "dynamic_config" : 1, "generated_by" : "Module::Build version 0.4, CPAN::Meta::Converter version 2.113640", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "SQL-ReservedWords", "prereqs" : { "build" : { "requires" : { "Test::More" : 0 } }, "configure" : { "requires" : { "Module::Build" : "0.4" } }, "runtime" : { "requires" : { "Sub::Exporter" : 0 } } }, "provides" : { "SQL::ReservedWords" : { "file" : "lib/SQL/ReservedWords.pm", "version" : "0.8" }, "SQL::ReservedWords::DB2" : { "file" : "lib/SQL/ReservedWords/DB2.pm", "version" : "0.8" }, "SQL::ReservedWords::MySQL" : { "file" : "lib/SQL/ReservedWords/MySQL.pm", "version" : "0.8" }, "SQL::ReservedWords::ODBC" : { "file" : "lib/SQL/ReservedWords/ODBC.pm", "version" : "0.8" }, "SQL::ReservedWords::Oracle" : { "file" : "lib/SQL/ReservedWords/Oracle.pm", "version" : "0.8" }, "SQL::ReservedWords::PostgreSQL" : { "file" : "lib/SQL/ReservedWords/PostgreSQL.pm", "version" : "0.8" }, "SQL::ReservedWords::SQLServer" : { "file" : "lib/SQL/ReservedWords/SQLServer.pm", "version" : "0.8" }, "SQL::ReservedWords::SQLite" : { "file" : "lib/SQL/ReservedWords/SQLite.pm", "version" : "0.8" }, "SQL::ReservedWords::Sybase" : { "file" : "lib/SQL/ReservedWords/Sybase.pm", "version" : "0.8" } }, "release_status" : "stable", "resources" : { "license" : [ "http://dev.perl.org/licenses/" ] }, "version" : "0.8" } SQL-ReservedWords-0.8/META.yml000444000766000024 241212017657177 16142 0ustar00chansenstaff000000000000--- abstract: 'Reserved SQL words by ANSI/ISO' author: - 'Christian Hansen C' build_requires: Test::More: 0 configure_requires: Module::Build: 0.4 dynamic_config: 1 generated_by: 'Module::Build version 0.4, CPAN::Meta::Converter version 2.113640' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: SQL-ReservedWords provides: SQL::ReservedWords: file: lib/SQL/ReservedWords.pm version: 0.8 SQL::ReservedWords::DB2: file: lib/SQL/ReservedWords/DB2.pm version: 0.8 SQL::ReservedWords::MySQL: file: lib/SQL/ReservedWords/MySQL.pm version: 0.8 SQL::ReservedWords::ODBC: file: lib/SQL/ReservedWords/ODBC.pm version: 0.8 SQL::ReservedWords::Oracle: file: lib/SQL/ReservedWords/Oracle.pm version: 0.8 SQL::ReservedWords::PostgreSQL: file: lib/SQL/ReservedWords/PostgreSQL.pm version: 0.8 SQL::ReservedWords::SQLServer: file: lib/SQL/ReservedWords/SQLServer.pm version: 0.8 SQL::ReservedWords::SQLite: file: lib/SQL/ReservedWords/SQLite.pm version: 0.8 SQL::ReservedWords::Sybase: file: lib/SQL/ReservedWords/Sybase.pm version: 0.8 requires: Sub::Exporter: 0 resources: license: http://dev.perl.org/licenses/ version: 0.8 SQL-ReservedWords-0.8/README000444000766000024 330412017657177 15552 0ustar00chansenstaff000000000000NAME SQL::ReservedWords - Reserved SQL words by ANSI/ISO SYNOPSIS if ( SQL::ReservedWords->is_reserved( $word ) ) { print "$word is a reserved SQL word!"; } DESCRIPTION Determine if words are reserved by ANSI/ISO SQL standard. METHODS is_reserved( $word ) Returns a boolean indicating if $word is reserved by either "SQL:1992", "SQL:1999" or "SQL:2003". is_reserved_by_sql1992( $word ) Returns a boolean indicating if $word is reserved by "SQL:1992". is_reserved_by_sql1999( $word ) Returns a boolean indicating if $word is reserved by "SQL:1999". is_reserved_by_sql2003( $word ) Returns a boolean indicating if $word is reserved by "SQL:2003". reserved_by( $word ) Returns a list with SQL standards that reserves $word. words Returns a list with all reserved words. EXPORTS Nothing by default. Following subroutines can be exported: is_reserved is_reserved_by_sql1992 is_reserved_by_sql1999 is_reserved_by_sql2003 reserved_by words SEE ALSO SQL::ReservedWords::DB2 SQL::ReservedWords::MySQL SQL::ReservedWords::ODBC SQL::ReservedWords::Oracle SQL::ReservedWords::PostgreSQL SQL::ReservedWords::SQLite SQL::ReservedWords::SQLServer ISO/IEC 9075:1992 Database languages -- SQL ISO/IEC 9075-2:1999 Database languages -- SQL -- Part 2: Foundation (SQL/Foundation) ISO/IEC 9075-2:2003 Database languages -- SQL -- Part 2: Foundation (SQL/Foundation) AUTHOR Christian Hansen "chansen@cpan.org" COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. SQL-ReservedWords-0.8/lib000755000766000024 012017657177 15303 5ustar00chansenstaff000000000000SQL-ReservedWords-0.8/lib/SQL000755000766000024 012017657177 15742 5ustar00chansenstaff000000000000SQL-ReservedWords-0.8/lib/SQL/ReservedWords.pm000444000766000024 6421712017657177 21265 0ustar00chansenstaff000000000000package SQL::ReservedWords; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant SQL1992 => 0x01; use constant SQL1999 => 0x02; use constant SQL2003 => 0x04; { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_sql1992 is_reserved_by_sql1999 is_reserved_by_sql2003 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ABSOLUTE => SQL1992 | SQL1999, ACTION => SQL1992 | SQL1999, ADD => SQL1992 | SQL1999 | SQL2003, AFTER => SQL1999, ALL => SQL1992 | SQL1999 | SQL2003, ALLOCATE => SQL1992 | SQL1999 | SQL2003, ALTER => SQL1992 | SQL1999 | SQL2003, AND => SQL1992 | SQL1999 | SQL2003, ANY => SQL1992 | SQL1999 | SQL2003, ARE => SQL1992 | SQL1999 | SQL2003, ARRAY => SQL1999 | SQL2003, AS => SQL1992 | SQL1999 | SQL2003, ASC => SQL1992 | SQL1999, ASENSITIVE => SQL1999 | SQL2003, ASSERTION => SQL1992 | SQL1999, ASYMMETRIC => SQL1999 | SQL2003, AT => SQL1992 | SQL1999 | SQL2003, ATOMIC => SQL1999 | SQL2003, AUTHORIZATION => SQL1992 | SQL1999 | SQL2003, AVG => SQL1992, BEFORE => SQL1999, BEGIN => SQL1992 | SQL1999 | SQL2003, BETWEEN => SQL1992 | SQL1999 | SQL2003, BIGINT => SQL2003, BINARY => SQL1999 | SQL2003, BIT => SQL1992 | SQL1999, BIT_LENGTH => SQL1992, BLOB => SQL1999 | SQL2003, BOOLEAN => SQL1999 | SQL2003, BOTH => SQL1992 | SQL1999 | SQL2003, BREADTH => SQL1999, BY => SQL1992 | SQL1999 | SQL2003, CALL => SQL1992 | SQL1999 | SQL2003, CALLED => SQL1999 | SQL2003, CASCADE => SQL1992 | SQL1999, CASCADED => SQL1992 | SQL1999 | SQL2003, CASE => SQL1992 | SQL1999 | SQL2003, CAST => SQL1992 | SQL1999 | SQL2003, CATALOG => SQL1992 | SQL1999, CHAR => SQL1992 | SQL1999 | SQL2003, CHARACTER => SQL1992 | SQL1999 | SQL2003, CHARACTER_LENGTH => SQL1992, CHAR_LENGTH => SQL1992, CHECK => SQL1992 | SQL1999 | SQL2003, CLOB => SQL1999 | SQL2003, CLOSE => SQL1992 | SQL1999 | SQL2003, COALESCE => SQL1992, COLLATE => SQL1992 | SQL1999 | SQL2003, COLLATION => SQL1992 | SQL1999, COLUMN => SQL1992 | SQL1999 | SQL2003, COMMIT => SQL1992 | SQL1999 | SQL2003, CONDITION => SQL1992 | SQL1999 | SQL2003, CONNECT => SQL1992 | SQL1999 | SQL2003, CONNECTION => SQL1992 | SQL1999, CONSTRAINT => SQL1992 | SQL1999 | SQL2003, CONSTRAINTS => SQL1992 | SQL1999, CONSTRUCTOR => SQL1999, CONTAINS => SQL1992, CONTINUE => SQL1992 | SQL1999 | SQL2003, CONVERT => SQL1992, CORRESPONDING => SQL1992 | SQL1999 | SQL2003, COUNT => SQL1992, CREATE => SQL1992 | SQL1999 | SQL2003, CROSS => SQL1992 | SQL1999 | SQL2003, CUBE => SQL1999 | SQL2003, CURRENT => SQL1992 | SQL1999 | SQL2003, CURRENT_DATE => SQL1992 | SQL1999 | SQL2003, CURRENT_DEFAULT_TRANSFORM_GROUP => SQL1999 | SQL2003, CURRENT_PATH => SQL1992 | SQL1999 | SQL2003, CURRENT_ROLE => SQL1999 | SQL2003, CURRENT_TIME => SQL1992 | SQL1999 | SQL2003, CURRENT_TIMESTAMP => SQL1992 | SQL1999 | SQL2003, CURRENT_TRANSFORM_GROUP_FOR_TYPE => SQL1999 | SQL2003, CURRENT_USER => SQL1992 | SQL1999 | SQL2003, CURSOR => SQL1992 | SQL1999 | SQL2003, CYCLE => SQL1999 | SQL2003, DATA => SQL1999, DATE => SQL1992 | SQL1999 | SQL2003, DAY => SQL1992 | SQL1999 | SQL2003, DEALLOCATE => SQL1992 | SQL1999 | SQL2003, DEC => SQL1992 | SQL1999 | SQL2003, DECIMAL => SQL1992 | SQL1999 | SQL2003, DECLARE => SQL1992 | SQL1999 | SQL2003, DEFAULT => SQL1992 | SQL1999 | SQL2003, DEFERRABLE => SQL1992 | SQL1999, DEFERRED => SQL1992 | SQL1999, DELETE => SQL1992 | SQL1999 | SQL2003, DEPTH => SQL1999, DEREF => SQL1999 | SQL2003, DESC => SQL1992 | SQL1999, DESCRIBE => SQL1992 | SQL1999 | SQL2003, DESCRIPTOR => SQL1992 | SQL1999, DETERMINISTIC => SQL1992 | SQL1999 | SQL2003, DIAGNOSTICS => SQL1992 | SQL1999, DISCONNECT => SQL1992 | SQL1999 | SQL2003, DISTINCT => SQL1992 | SQL1999 | SQL2003, DO => SQL1992 | SQL1999 | SQL2003, DOMAIN => SQL1992 | SQL1999, DOUBLE => SQL1992 | SQL1999 | SQL2003, DROP => SQL1992 | SQL1999 | SQL2003, DYNAMIC => SQL1999 | SQL2003, EACH => SQL1999 | SQL2003, ELEMENT => SQL2003, ELSE => SQL1992 | SQL1999 | SQL2003, ELSEIF => SQL1992 | SQL1999 | SQL2003, END => SQL1992 | SQL1999 | SQL2003, EQUALS => SQL1999, ESCAPE => SQL1992 | SQL1999 | SQL2003, EXCEPT => SQL1992 | SQL1999 | SQL2003, EXCEPTION => SQL1992 | SQL1999, EXEC => SQL1992 | SQL1999 | SQL2003, EXECUTE => SQL1992 | SQL1999 | SQL2003, EXISTS => SQL1992 | SQL1999 | SQL2003, EXIT => SQL1992 | SQL1999 | SQL2003, EXTERNAL => SQL1992 | SQL1999 | SQL2003, EXTRACT => SQL1992, FALSE => SQL1992 | SQL1999 | SQL2003, FETCH => SQL1992 | SQL1999 | SQL2003, FILTER => SQL1999 | SQL2003, FIRST => SQL1992 | SQL1999, FLOAT => SQL1992 | SQL1999 | SQL2003, FOR => SQL1992 | SQL1999 | SQL2003, FOREIGN => SQL1992 | SQL1999 | SQL2003, FOUND => SQL1992 | SQL1999, FREE => SQL1999 | SQL2003, FROM => SQL1992 | SQL1999 | SQL2003, FULL => SQL1992 | SQL1999 | SQL2003, FUNCTION => SQL1992 | SQL1999 | SQL2003, GENERAL => SQL1999, GET => SQL1992 | SQL1999 | SQL2003, GLOBAL => SQL1992 | SQL1999 | SQL2003, GO => SQL1992 | SQL1999, GOTO => SQL1992 | SQL1999, GRANT => SQL1992 | SQL1999 | SQL2003, GROUP => SQL1992 | SQL1999 | SQL2003, GROUPING => SQL1999 | SQL2003, HANDLER => SQL1992 | SQL1999 | SQL2003, HAVING => SQL1992 | SQL1999 | SQL2003, HOLD => SQL1999 | SQL2003, HOUR => SQL1992 | SQL1999 | SQL2003, IDENTITY => SQL1992 | SQL1999 | SQL2003, IF => SQL1992 | SQL1999 | SQL2003, IMMEDIATE => SQL1992 | SQL1999 | SQL2003, IN => SQL1992 | SQL1999 | SQL2003, INDICATOR => SQL1992 | SQL1999 | SQL2003, INITIALLY => SQL1992 | SQL1999, INNER => SQL1992 | SQL1999 | SQL2003, INOUT => SQL1992 | SQL1999 | SQL2003, INPUT => SQL1992 | SQL1999 | SQL2003, INSENSITIVE => SQL1992 | SQL1999 | SQL2003, INSERT => SQL1992 | SQL1999 | SQL2003, INT => SQL1992 | SQL1999 | SQL2003, INTEGER => SQL1992 | SQL1999 | SQL2003, INTERSECT => SQL1992 | SQL1999 | SQL2003, INTERVAL => SQL1992 | SQL1999 | SQL2003, INTO => SQL1992 | SQL1999 | SQL2003, IS => SQL1992 | SQL1999 | SQL2003, ISOLATION => SQL1992 | SQL1999, ITERATE => SQL1999 | SQL2003, JOIN => SQL1992 | SQL1999 | SQL2003, KEY => SQL1992 | SQL1999, LANGUAGE => SQL1992 | SQL1999 | SQL2003, LARGE => SQL1999 | SQL2003, LAST => SQL1992 | SQL1999, LATERAL => SQL1999 | SQL2003, LEADING => SQL1992 | SQL1999 | SQL2003, LEAVE => SQL1992 | SQL1999 | SQL2003, LEFT => SQL1992 | SQL1999 | SQL2003, LEVEL => SQL1992 | SQL1999, LIKE => SQL1992 | SQL1999 | SQL2003, LOCAL => SQL1992 | SQL1999 | SQL2003, LOCALTIME => SQL1999 | SQL2003, LOCALTIMESTAMP => SQL1999 | SQL2003, LOCATOR => SQL1999, LOOP => SQL1992 | SQL1999 | SQL2003, LOWER => SQL1992, MAP => SQL1999, MATCH => SQL1992 | SQL1999 | SQL2003, MAX => SQL1992, MEMBER => SQL2003, MERGE => SQL2003, METHOD => SQL1999 | SQL2003, MIN => SQL1992, MINUTE => SQL1992 | SQL1999 | SQL2003, MODIFIES => SQL1999 | SQL2003, MODULE => SQL1992 | SQL1999 | SQL2003, MONTH => SQL1992 | SQL1999 | SQL2003, MULTISET => SQL2003, NAMES => SQL1992 | SQL1999, NATIONAL => SQL1992 | SQL1999 | SQL2003, NATURAL => SQL1992 | SQL1999 | SQL2003, NCHAR => SQL1992 | SQL1999 | SQL2003, NCLOB => SQL1999 | SQL2003, NEW => SQL1999 | SQL2003, NEXT => SQL1992 | SQL1999, NO => SQL1992 | SQL1999 | SQL2003, NONE => SQL1999 | SQL2003, NOT => SQL1992 | SQL1999 | SQL2003, NULL => SQL1992 | SQL1999 | SQL2003, NULLIF => SQL1992, NUMERIC => SQL1992 | SQL1999 | SQL2003, OBJECT => SQL1999, OCTET_LENGTH => SQL1992, OF => SQL1992 | SQL1999 | SQL2003, OLD => SQL1999 | SQL2003, ON => SQL1992 | SQL1999 | SQL2003, ONLY => SQL1992 | SQL1999 | SQL2003, OPEN => SQL1992 | SQL1999 | SQL2003, OPTION => SQL1992 | SQL1999, OR => SQL1992 | SQL1999 | SQL2003, ORDER => SQL1992 | SQL1999 | SQL2003, ORDINALITY => SQL1999, OUT => SQL1992 | SQL1999 | SQL2003, OUTER => SQL1992 | SQL1999 | SQL2003, OUTPUT => SQL1992 | SQL1999 | SQL2003, OVER => SQL1999 | SQL2003, OVERLAPS => SQL1992 | SQL1999 | SQL2003, PAD => SQL1992 | SQL1999, PARAMETER => SQL1992 | SQL1999 | SQL2003, PARTIAL => SQL1992 | SQL1999, PARTITION => SQL1999 | SQL2003, PATH => SQL1992 | SQL1999, POSITION => SQL1992, PRECISION => SQL1992 | SQL1999 | SQL2003, PREPARE => SQL1992 | SQL1999 | SQL2003, PRESERVE => SQL1992 | SQL1999, PRIMARY => SQL1992 | SQL1999 | SQL2003, PRIOR => SQL1992 | SQL1999, PRIVILEGES => SQL1992 | SQL1999, PROCEDURE => SQL1992 | SQL1999 | SQL2003, PUBLIC => SQL1992 | SQL1999, RANGE => SQL1999 | SQL2003, READ => SQL1992 | SQL1999, READS => SQL1999 | SQL2003, REAL => SQL1992 | SQL1999 | SQL2003, RECURSIVE => SQL1999 | SQL2003, REF => SQL1999 | SQL2003, REFERENCES => SQL1992 | SQL1999 | SQL2003, REFERENCING => SQL1999 | SQL2003, RELATIVE => SQL1992 | SQL1999, RELEASE => SQL1999 | SQL2003, REPEAT => SQL1992 | SQL1999 | SQL2003, RESIGNAL => SQL1992 | SQL1999 | SQL2003, RESTRICT => SQL1992 | SQL1999, RESULT => SQL1999 | SQL2003, RETURN => SQL1992 | SQL1999 | SQL2003, RETURNS => SQL1992 | SQL1999 | SQL2003, REVOKE => SQL1992 | SQL1999 | SQL2003, RIGHT => SQL1992 | SQL1999 | SQL2003, ROLE => SQL1999, ROLLBACK => SQL1992 | SQL1999 | SQL2003, ROLLUP => SQL1999 | SQL2003, ROUTINE => SQL1992 | SQL1999, ROW => SQL1999 | SQL2003, ROWS => SQL1992 | SQL1999 | SQL2003, SAVEPOINT => SQL1999 | SQL2003, SCHEMA => SQL1992 | SQL1999, SCOPE => SQL1999 | SQL2003, SCROLL => SQL1992 | SQL1999 | SQL2003, SEARCH => SQL1999 | SQL2003, SECOND => SQL1992 | SQL1999 | SQL2003, SECTION => SQL1992 | SQL1999, SELECT => SQL1992 | SQL1999 | SQL2003, SENSITIVE => SQL1999 | SQL2003, SESSION => SQL1992 | SQL1999, SESSION_USER => SQL1992 | SQL1999 | SQL2003, SET => SQL1992 | SQL1999 | SQL2003, SETS => SQL1999, SIGNAL => SQL1992 | SQL1999 | SQL2003, SIMILAR => SQL1999 | SQL2003, SIZE => SQL1992 | SQL1999, SMALLINT => SQL1992 | SQL1999 | SQL2003, SOME => SQL1992 | SQL1999 | SQL2003, SPACE => SQL1992 | SQL1999, SPECIFIC => SQL1992 | SQL1999 | SQL2003, SPECIFICTYPE => SQL1999 | SQL2003, SQL => SQL1992 | SQL1999 | SQL2003, SQLCODE => SQL1992, SQLERROR => SQL1992, SQLEXCEPTION => SQL1992 | SQL1999 | SQL2003, SQLSTATE => SQL1992 | SQL1999 | SQL2003, SQLWARNING => SQL1992 | SQL1999 | SQL2003, START => SQL1999 | SQL2003, STATE => SQL1999, STATIC => SQL1999 | SQL2003, SUBMULTISET => SQL2003, SUBSTRING => SQL1992, SUM => SQL1992, SYMMETRIC => SQL1999 | SQL2003, SYSTEM => SQL1999 | SQL2003, SYSTEM_USER => SQL1992 | SQL1999 | SQL2003, TABLE => SQL1992 | SQL1999 | SQL2003, TABLESAMPLE => SQL2003, TEMPORARY => SQL1992 | SQL1999, THEN => SQL1992 | SQL1999 | SQL2003, TIME => SQL1992 | SQL1999 | SQL2003, TIMESTAMP => SQL1992 | SQL1999 | SQL2003, TIMEZONE_HOUR => SQL1992 | SQL1999 | SQL2003, TIMEZONE_MINUTE => SQL1992 | SQL1999 | SQL2003, TO => SQL1992 | SQL1999 | SQL2003, TRAILING => SQL1992 | SQL1999 | SQL2003, TRANSACTION => SQL1992 | SQL1999, TRANSLATE => SQL1992, TRANSLATION => SQL1992 | SQL1999 | SQL2003, TREAT => SQL1999 | SQL2003, TRIGGER => SQL1999 | SQL2003, TRIM => SQL1992, TRUE => SQL1992 | SQL1999 | SQL2003, UNDER => SQL1999, UNDO => SQL1992 | SQL1999 | SQL2003, UNION => SQL1992 | SQL1999 | SQL2003, UNIQUE => SQL1992 | SQL1999 | SQL2003, UNKNOWN => SQL1992 | SQL1999 | SQL2003, UNNEST => SQL1999 | SQL2003, UNTIL => SQL1992 | SQL1999 | SQL2003, UPDATE => SQL1992 | SQL1999 | SQL2003, UPPER => SQL1992, USAGE => SQL1992 | SQL1999, USER => SQL1992 | SQL1999 | SQL2003, USING => SQL1992 | SQL1999 | SQL2003, VALUE => SQL1992 | SQL1999 | SQL2003, VALUES => SQL1992 | SQL1999 | SQL2003, VARCHAR => SQL1992 | SQL1999 | SQL2003, VARYING => SQL1992 | SQL1999 | SQL2003, VIEW => SQL1992 | SQL1999, WHEN => SQL1992 | SQL1999 | SQL2003, WHENEVER => SQL1992 | SQL1999 | SQL2003, WHERE => SQL1992 | SQL1999 | SQL2003, WHILE => SQL1992 | SQL1999 | SQL2003, WINDOW => SQL1999 | SQL2003, WITH => SQL1992 | SQL1999 | SQL2003, WITHIN => SQL1999 | SQL2003, WITHOUT => SQL1999 | SQL2003, WORK => SQL1992 | SQL1999, WRITE => SQL1992 | SQL1999, YEAR => SQL1992 | SQL1999 | SQL2003, ZONE => SQL1992 | SQL1999 ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_sql1992 { return &is_reserved & SQL1992; } sub is_reserved_by_sql1999 { return &is_reserved & SQL1999; } sub is_reserved_by_sql2003 { return &is_reserved & SQL2003; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'SQL:1992' if $flags & SQL1992; push @reserved_by, 'SQL:1999' if $flags & SQL1999; push @reserved_by, 'SQL:2003' if $flags & SQL2003; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords - Reserved SQL words by ANSI/ISO =head1 SYNOPSIS if ( SQL::ReservedWords->is_reserved( $word ) ) { print "$word is a reserved SQL word!"; } =head1 DESCRIPTION Determine if words are reserved by ANSI/ISO SQL standard. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by either C, C or C. =item is_reserved_by_sql1992( $word ) Returns a boolean indicating if C<$word> is reserved by C. =item is_reserved_by_sql1999( $word ) Returns a boolean indicating if C<$word> is reserved by C. =item is_reserved_by_sql2003( $word ) Returns a boolean indicating if C<$word> is reserved by C. =item reserved_by( $word ) Returns a list with SQL standards that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_sql1992 =item is_reserved_by_sql1999 =item is_reserved_by_sql2003 =item reserved_by =item words =back =head1 SEE ALSO L L L L L L L ISO/IEC 9075:1992 Database languages -- SQL ISO/IEC 9075-2:1999 Database languages -- SQL -- Part 2: Foundation (SQL/Foundation) ISO/IEC 9075-2:2003 Database languages -- SQL -- Part 2: Foundation (SQL/Foundation) =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/lib/SQL/ReservedWords000755000766000024 012017657177 20540 5ustar00chansenstaff000000000000SQL-ReservedWords-0.8/lib/SQL/ReservedWords/DB2.pm000444000766000024 7504712017657177 21637 0ustar00chansenstaff000000000000package SQL::ReservedWords::DB2; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant DB2V5 => 0x01; use constant DB2V6 => 0x02; use constant DB2V7 => 0x04; use constant DB2V8 => 0x08; use constant DB2V9 => 0x10; { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_db2v5 is_reserved_by_db2v6 is_reserved_by_db2v7 is_reserved_by_db2v8 is_reserved_by_db2v9 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ACTIVATE => DB2V9, ADD => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, AFTER => DB2V6 | DB2V7 | DB2V8 | DB2V9, ALIAS => DB2V9, ALL => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ALLOCATE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ALLOW => DB2V6 | DB2V7 | DB2V8 | DB2V9, ALTER => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, AND => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ANY => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, AS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ASENSITIVE => DB2V8 | DB2V9, ASSOCIATE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ASUTIME => DB2V6 | DB2V7 | DB2V8 | DB2V9, AT => DB2V9, ATTRIBUTES => DB2V9, AUDIT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, AUTHORIZATION => DB2V9, AUX => DB2V6 | DB2V7 | DB2V8 | DB2V9, AUXILIARY => DB2V6 | DB2V7 | DB2V8 | DB2V9, BEFORE => DB2V6 | DB2V7 | DB2V8 | DB2V9, BEGIN => DB2V6 | DB2V7 | DB2V8 | DB2V9, BETWEEN => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, BINARY => DB2V9, BUFFERPOOL => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, BY => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CACHE => DB2V9, CALL => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CALLED => DB2V9, CAPTURE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CARDINALITY => DB2V9, CASCADED => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CASE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CAST => DB2V6 | DB2V7 | DB2V8 | DB2V9, CCSID => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CHAR => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CHARACTER => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CHECK => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CLONE => DB2V9, CLOSE => DB2V6 | DB2V7 | DB2V8 | DB2V9, CLUSTER => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, COLLECTION => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, COLLID => DB2V6 | DB2V7 | DB2V8 | DB2V9, COLUMN => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, COMMENT => DB2V6 | DB2V7 | DB2V8 | DB2V9, COMMIT => DB2V6 | DB2V7 | DB2V8 | DB2V9, CONCAT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CONDITION => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CONNECT => DB2V6 | DB2V7 | DB2V8 | DB2V9, CONNECTION => DB2V6 | DB2V7 | DB2V8 | DB2V9, CONSTRAINT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CONTAINS => DB2V6 | DB2V7 | DB2V8 | DB2V9, CONTINUE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, COUNT => DB2V5 | DB2V9, COUNT_BIG => DB2V9, CREATE => DB2V6 | DB2V7 | DB2V8 | DB2V9, CROSS => DB2V9, CURRENT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CURRENT_DATE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CURRENT_LC_CTYPE => DB2V6 | DB2V7 | DB2V8 | DB2V9, CURRENT_PATH => DB2V6 | DB2V7 | DB2V8 | DB2V9, CURRENT_SCHEMA => DB2V9, CURRENT_SERVER => DB2V9, CURRENT_TIME => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CURRENT_TIMESTAMP => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CURRENT_TIMEZONE => DB2V9, CURRENT_USER => DB2V9, CURSOR => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, CYCLE => DB2V9, DATA => DB2V6 | DB2V7 | DB2V8 | DB2V9, DATABASE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DATAPARTITIONNAME => DB2V9, DATAPARTITIONNUM => DB2V9, DATE => DB2V9, DAY => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DAYS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DB2GENERAL => DB2V9, DB2GENRL => DB2V9, DB2SQL => DB2V6 | DB2V7 | DB2V9, DBINFO => DB2V6 | DB2V7 | DB2V8 | DB2V9, DBPARTITIONNAME => DB2V9, DBPARTITIONNUM => DB2V9, DEALLOCATE => DB2V9, DECLARE => DB2V6 | DB2V7 | DB2V8 | DB2V9, DEFAULT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DEFAULTS => DB2V9, DEFINITION => DB2V9, DELETE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DENSE_RANK => DB2V9, DENSERANK => DB2V9, DESCRIBE => DB2V9, DESCRIPTOR => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DETERMINISTIC => DB2V6 | DB2V7 | DB2V8 | DB2V9, DIAGNOSTICS => DB2V9, DISABLE => DB2V9, DISALLOW => DB2V6 | DB2V7 | DB2V8 | DB2V9, DISCONNECT => DB2V9, DISTINCT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DO => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DOCUMENT => DB2V9, DOUBLE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DROP => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, DSNHATTR => DB2V7, DSSIZE => DB2V6 | DB2V7 | DB2V8 | DB2V9, DYNAMIC => DB2V6 | DB2V7 | DB2V8 | DB2V9, EACH => DB2V9, EDITPROC => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ELSE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ELSEIF => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ENABLE => DB2V9, ENCODING => DB2V7 | DB2V8 | DB2V9, ENCRYPTION => DB2V8 | DB2V9, END => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ENDING => DB2V8 | DB2V9, ERASE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ESCAPE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, EVERY => DB2V9, EXCEPT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, EXCEPTION => DB2V8 | DB2V9, EXCLUDING => DB2V9, EXCLUSIVE => DB2V9, EXECUTE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, EXISTS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, EXIT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, EXPLAIN => DB2V8 | DB2V9, EXTERNAL => DB2V6 | DB2V7 | DB2V8 | DB2V9, EXTRACT => DB2V9, FENCED => DB2V6 | DB2V7 | DB2V8 | DB2V9, FETCH => DB2V6 | DB2V7 | DB2V8 | DB2V9, FIELDPROC => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, FILE => DB2V9, FINAL => DB2V6 | DB2V7 | DB2V8 | DB2V9, FOR => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, FOREIGN => DB2V9, FREE => DB2V8 | DB2V9, FROM => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, FULL => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, FUNCTION => DB2V6 | DB2V7 | DB2V8 | DB2V9, GENERAL => DB2V6 | DB2V7 | DB2V9, GENERATED => DB2V6 | DB2V7 | DB2V8 | DB2V9, GET => DB2V6 | DB2V7 | DB2V8 | DB2V9, GLOBAL => DB2V6 | DB2V7 | DB2V8 | DB2V9, GO => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, GOTO => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, GRANT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, GRAPHIC => DB2V9, GROUP => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, HANDLER => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, HASH => DB2V9, HASHED_VALUE => DB2V9, HAVING => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, HINT => DB2V9, HOLD => DB2V8 | DB2V9, HOUR => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, HOURS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, IDENTITY => DB2V9, IF => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, IMMEDIATE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, IN => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, INCLUDING => DB2V9, INCLUSIVE => DB2V8 | DB2V9, INCREMENT => DB2V9, INDEX => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, INDICATOR => DB2V9, INF => DB2V9, INFINITY => DB2V9, INHERIT => DB2V7 | DB2V8 | DB2V9, INNER => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, INOUT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, INSENSITIVE => DB2V7 | DB2V8 | DB2V9, INSERT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, INTEGRITY => DB2V9, INTERSECT => DB2V9, INTO => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, IS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ISOBID => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ISOLATION => DB2V9, ITERATE => DB2V8 | DB2V9, JAR => DB2V7 | DB2V8 | DB2V9, JAVA => DB2V6 | DB2V7 | DB2V9, JOIN => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, KEEP => DB2V9, KEY => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LABEL => DB2V6 | DB2V7 | DB2V8 | DB2V9, LANGUAGE => DB2V6 | DB2V7 | DB2V8 | DB2V9, LATERAL => DB2V9, LC_CTYPE => DB2V6 | DB2V7 | DB2V8 | DB2V9, LEAVE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LEFT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LIKE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LINKTYPE => DB2V9, LOCAL => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LOCALDATE => DB2V9, LOCALE => DB2V6 | DB2V7 | DB2V8 | DB2V9, LOCALTIME => DB2V9, LOCALTIMESTAMP => DB2V9, LOCATOR => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LOCATORS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LOCK => DB2V6 | DB2V7 | DB2V8 | DB2V9, LOCKMAX => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LOCKSIZE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, LONG => DB2V6 | DB2V7 | DB2V8 | DB2V9, LOOP => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, MAINTAINED => DB2V8 | DB2V9, MATERIALIZED => DB2V8 | DB2V9, MAXVALUE => DB2V9, MICROSECOND => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, MICROSECONDS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, MINUTE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, MINUTES => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, MINVALUE => DB2V9, MODE => DB2V9, MODIFIES => DB2V6 | DB2V7 | DB2V8 | DB2V9, MONTH => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, MONTHS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, NAN => DB2V9, NEW => DB2V9, NEW_TABLE => DB2V9, NEXTVAL => DB2V8 | DB2V9, NO => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, NOCACHE => DB2V9, NOCYCLE => DB2V9, NODENAME => DB2V9, NODENUMBER => DB2V9, NOMAXVALUE => DB2V9, NOMINVALUE => DB2V9, NONE => DB2V8 | DB2V9, NOORDER => DB2V9, NORMALIZED => DB2V9, NOT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, NULL => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, NULLS => DB2V6 | DB2V7 | DB2V8 | DB2V9, NUMPARTS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, OBID => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, OF => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, OLD => DB2V9, OLD_TABLE => DB2V9, ON => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, OPEN => DB2V6 | DB2V7 | DB2V8 | DB2V9, OPTIMIZATION => DB2V6 | DB2V7 | DB2V8 | DB2V9, OPTIMIZE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, OPTION => DB2V9, OR => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ORDER => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, OUT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, OUTER => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, OVER => DB2V9, OVERRIDING => DB2V9, PACKAGE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PADDED => DB2V8 | DB2V9, PAGESIZE => DB2V9, PARAMETER => DB2V6 | DB2V7 | DB2V8 | DB2V9, PART => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PARTITION => DB2V8 | DB2V9, PARTITIONED => DB2V8 | DB2V9, PARTITIONING => DB2V8 | DB2V9, PARTITIONS => DB2V9, PASSWORD => DB2V9, PATH => DB2V6 | DB2V7 | DB2V8 | DB2V9, PIECESIZE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PLAN => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, POSITION => DB2V9, PRECISION => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PREPARE => DB2V6 | DB2V7 | DB2V8 | DB2V9, PREVVAL => DB2V8 | DB2V9, PRIMARY => DB2V9, PRIQTY => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PRIVILEGES => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PROCEDURE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PROGRAM => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PSID => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, PUBLIC => DB2V9, QUERY => DB2V8 | DB2V9, QUERYNO => DB2V6 | DB2V7 | DB2V8 | DB2V9, RANGE => DB2V9, RANK => DB2V9, READ => DB2V9, READS => DB2V6 | DB2V7 | DB2V8 | DB2V9, RECOVERY => DB2V9, REFERENCES => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, REFERENCING => DB2V9, REFRESH => DB2V8 | DB2V9, RELEASE => DB2V6 | DB2V7 | DB2V8 | DB2V9, RENAME => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, REPEAT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, RESET => DB2V9, RESIGNAL => DB2V8 | DB2V9, RESTART => DB2V9, RESTRICT => DB2V6 | DB2V7 | DB2V8 | DB2V9, RESULT => DB2V6 | DB2V7 | DB2V8 | DB2V9, RESULT_SET_LOCATOR => DB2V6 | DB2V7 | DB2V8 | DB2V9, RETURN => DB2V6 | DB2V7 | DB2V8 | DB2V9, RETURNS => DB2V6 | DB2V7 | DB2V8 | DB2V9, REVOKE => DB2V6 | DB2V7 | DB2V8 | DB2V9, RIGHT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, ROLE => DB2V9, ROLLBACK => DB2V6 | DB2V7 | DB2V8 | DB2V9, ROUND_CEILING => DB2V9, ROUND_DOWN => DB2V9, ROUND_FLOOR => DB2V9, ROUND_HALF_DOWN => DB2V9, ROUND_HALF_EVEN => DB2V9, ROUND_HALF_UP => DB2V9, ROUND_UP => DB2V9, ROUTINE => DB2V9, ROW => DB2V9, ROW_NUMBER => DB2V9, ROWNUMBER => DB2V9, ROWS => DB2V9, ROWSET => DB2V8 | DB2V9, RRN => DB2V9, RUN => DB2V6 | DB2V7 | DB2V8 | DB2V9, SAVEPOINT => DB2V6 | DB2V7 | DB2V8 | DB2V9, SCHEMA => DB2V6 | DB2V7 | DB2V8 | DB2V9, SCRATCHPAD => DB2V6 | DB2V7 | DB2V8 | DB2V9, SCROLL => DB2V9, SEARCH => DB2V9, SECOND => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, SECONDS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, SECQTY => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, SECURITY => DB2V6 | DB2V7 | DB2V8 | DB2V9, SELECT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, SENSITIVE => DB2V7 | DB2V8 | DB2V9, SEQUENCE => DB2V8 | DB2V9, SESSION => DB2V9, SESSION_USER => DB2V9, SET => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, SIGNAL => DB2V8 | DB2V9, SIMPLE => DB2V6 | DB2V7 | DB2V8 | DB2V9, SNAN => DB2V9, SOME => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, SOURCE => DB2V6 | DB2V7 | DB2V8 | DB2V9, SPECIFIC => DB2V6 | DB2V7 | DB2V8 | DB2V9, SQL => DB2V9, SQLID => DB2V9, STACKED => DB2V9, STANDARD => DB2V6 | DB2V7 | DB2V8 | DB2V9, START => DB2V9, STARTING => DB2V9, STATEMENT => DB2V9, STATIC => DB2V7 | DB2V8 | DB2V9, STATMENT => DB2V9, STAY => DB2V6 | DB2V7 | DB2V8 | DB2V9, STOGROUP => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, STORES => DB2V6 | DB2V7 | DB2V8 | DB2V9, STYLE => DB2V6 | DB2V7 | DB2V8 | DB2V9, SUBPAGES => DB2V5 | DB2V6 | DB2V7, SUBSTRING => DB2V9, SUMMARY => DB2V8 | DB2V9, SYNONYM => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, SYSFUN => DB2V6 | DB2V7 | DB2V8 | DB2V9, SYSIBM => DB2V6 | DB2V7 | DB2V8 | DB2V9, SYSPROC => DB2V6 | DB2V7 | DB2V8 | DB2V9, SYSTEM => DB2V6 | DB2V7 | DB2V8 | DB2V9, SYSTEM_USER => DB2V9, TABLE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, TABLESPACE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, THEN => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, TIME => DB2V9, TIMESTAMP => DB2V9, TO => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, TRANSACTION => DB2V9, TRIGGER => DB2V6 | DB2V7 | DB2V8 | DB2V9, TRIM => DB2V9, TRUNCATE => DB2V9, TYPE => DB2V9, UNDO => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, UNION => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, UNIQUE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, UNTIL => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, UPDATE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, USAGE => DB2V9, USER => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, USING => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, VALIDPROC => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, VALUE => DB2V8 | DB2V9, VALUES => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, VARIABLE => DB2V8 | DB2V9, VARIANT => DB2V6 | DB2V7 | DB2V8 | DB2V9, VCAT => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, VERSION => DB2V9, VIEW => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, VOLATILE => DB2V8 | DB2V9, VOLUMES => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, WHEN => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, WHENEVER => DB2V8 | DB2V9, WHERE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, WHILE => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, WITH => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, WITHOUT => DB2V9, WLM => DB2V6 | DB2V7 | DB2V8 | DB2V9, WRITE => DB2V9, XMLELEMENT => DB2V8 | DB2V9, XMLEXISTS => DB2V9, XMLNAMESPACES => DB2V9, YEAR => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9, YEARS => DB2V5 | DB2V6 | DB2V7 | DB2V8 | DB2V9 ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_db2v5 { return &is_reserved & DB2V5; } sub is_reserved_by_db2v6 { return &is_reserved & DB2V6; } sub is_reserved_by_db2v7 { return &is_reserved & DB2V7; } sub is_reserved_by_db2v8 { return &is_reserved & DB2V8; } sub is_reserved_by_db2v9 { return &is_reserved & DB2V9; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'DB2 5' if $flags & DB2V5; push @reserved_by, 'DB2 6' if $flags & DB2V6; push @reserved_by, 'DB2 7' if $flags & DB2V7; push @reserved_by, 'DB2 8' if $flags & DB2V8; push @reserved_by, 'DB2 9' if $flags & DB2V9; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords::DB2 - Reserved SQL words by DB2 =head1 SYNOPSIS if ( SQL::ReservedWords::DB2->is_reserved( $word ) ) { print "$word is a reserved DB2 word!"; } =head1 DESCRIPTION Determine if words are reserved by DB2. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by either DB2 5, 6, 7 or 8. =item is_reserved_by_db2v5( $word ) Returns a boolean indicating if C<$word> is reserved by DB2 5. =item is_reserved_by_db2v6( $word ) Returns a boolean indicating if C<$word> is reserved by DB2 6. =item is_reserved_by_db2v7( $word ) Returns a boolean indicating if C<$word> is reserved by DB2 7. =item is_reserved_by_db2v8( $word ) Returns a boolean indicating if C<$word> is reserved by DB2 8. =item is_reserved_by_db2v9( $word ) Returns a boolean indicating if C<$word> is reserved by DB2 9. =item reserved_by( $word ) Returns a list with DB2 versions that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_db2v5 =item is_reserved_by_db2v6 =item is_reserved_by_db2v7 =item is_reserved_by_db2v8 =item is_reserved_by_db2v9 =item reserved_by =item words =back =head1 SEE ALSO L L =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/lib/SQL/ReservedWords/MySQL.pm000444000766000024 5201012017657177 22216 0ustar00chansenstaff000000000000package SQL::ReservedWords::MySQL; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant MYSQL32 => 0x01; use constant MYSQL40 => 0x02; use constant MYSQL41 => 0x04; use constant MYSQL50 => 0x08; use constant MYSQL51 => 0x10; { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_mysql3 is_reserved_by_mysql4 is_reserved_by_mysql5 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ACCESSIBLE => MYSQL51, ADD => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ALL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ALTER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ANALYZE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, AND => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, AS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ASC => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ASENSITIVE => MYSQL50 | MYSQL51, BEFORE => MYSQL41 | MYSQL50 | MYSQL51, BETWEEN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, BIGINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, BINARY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, BLOB => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, BOTH => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, BY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CALL => MYSQL50 | MYSQL51, CASCADE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CASE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CHANGE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CHAR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CHARACTER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CHECK => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, COLLATE => MYSQL41 | MYSQL50 | MYSQL51, COLUMN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, COLUMNS => MYSQL32 | MYSQL40 | MYSQL41, CONDITION => MYSQL50 | MYSQL51, CONNECTION => MYSQL50 | MYSQL51, CONSTRAINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CONTINUE => MYSQL50 | MYSQL51, CONVERT => MYSQL41 | MYSQL50 | MYSQL51, CREATE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CROSS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CURRENT_DATE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CURRENT_TIME => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CURRENT_TIMESTAMP => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, CURRENT_USER => MYSQL41 | MYSQL50 | MYSQL51, CURSOR => MYSQL50 | MYSQL51, DATABASE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DATABASES => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DAY_HOUR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DAY_MICROSECOND => MYSQL41 | MYSQL50 | MYSQL51, DAY_MINUTE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DAY_SECOND => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DEC => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DECIMAL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DECLARE => MYSQL50 | MYSQL51, DEFAULT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DELAYED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DELETE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DESC => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DESCRIBE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DETERMINISTIC => MYSQL50 | MYSQL51, DISTINCT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DISTINCTROW => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DIV => MYSQL41 | MYSQL50 | MYSQL51, DOUBLE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DROP => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, DUAL => MYSQL41 | MYSQL50 | MYSQL51, EACH => MYSQL50 | MYSQL51, ELSE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ELSEIF => MYSQL50 | MYSQL51, ENCLOSED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ESCAPED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, EXISTS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, EXIT => MYSQL50 | MYSQL51, EXPLAIN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, FALSE => MYSQL41 | MYSQL50 | MYSQL51, FETCH => MYSQL50 | MYSQL51, FIELDS => MYSQL32 | MYSQL40 | MYSQL41, FLOAT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, FLOAT4 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, FLOAT8 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, FOR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, FORCE => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, FOREIGN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, FROM => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, FULLTEXT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, GOTO => MYSQL50 | MYSQL51, GRANT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, GROUP => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, HAVING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, HIGH_PRIORITY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, HOUR_MICROSECOND => MYSQL41 | MYSQL50 | MYSQL51, HOUR_MINUTE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, HOUR_SECOND => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, IF => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, IGNORE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, IN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INDEX => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INFILE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INNER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INOUT => MYSQL50 | MYSQL51, INSENSITIVE => MYSQL50 | MYSQL51, INSERT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INT1 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INT2 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INT3 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INT4 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INT8 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INTEGER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INTERVAL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, INTO => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, IS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ITERATE => MYSQL50 | MYSQL51, JOIN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, KEY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, KEYS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, KILL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LABEL => MYSQL50 | MYSQL51, LEADING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LEAVE => MYSQL50 | MYSQL51, LEFT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LIKE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LIMIT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LINEAR => MYSQL51, LINES => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LOAD => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LOCALTIME => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LOCALTIMESTAMP => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LOCK => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LONG => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LONGBLOB => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LONGTEXT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, LOOP => MYSQL50 | MYSQL51, LOW_PRIORITY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, MATCH => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, MEDIUMBLOB => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, MEDIUMINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, MEDIUMTEXT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, MIDDLEINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, MINUTE_MICROSECOND => MYSQL41 | MYSQL50 | MYSQL51, MINUTE_SECOND => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, MOD => MYSQL41 | MYSQL50 | MYSQL51, MODIFIES => MYSQL50 | MYSQL51, NATURAL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, NOT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, NO_WRITE_TO_BINLOG => MYSQL41 | MYSQL50 | MYSQL51, NULL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, NUMERIC => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ON => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, OPTIMIZE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, OPTION => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, OPTIONALLY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, OR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ORDER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, OUT => MYSQL50 | MYSQL51, OUTER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, OUTFILE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, PRECISION => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, PRIMARY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, PRIVILEGES => MYSQL32 | MYSQL40 | MYSQL41, PROCEDURE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, PURGE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, RAID0 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50, RANGE => MYSQL51, READ => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, READS => MYSQL50 | MYSQL51, READ_ONLY => MYSQL51, READ_WRITE => MYSQL51, REAL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, REFERENCES => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, REGEXP => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, RELEASE => MYSQL50 | MYSQL51, RENAME => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, REPEAT => MYSQL50 | MYSQL51, REPLACE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, REQUIRE => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, RESTRICT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, RETURN => MYSQL50 | MYSQL51, REVOKE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, RIGHT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, RLIKE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, SCHEMA => MYSQL50 | MYSQL51, SCHEMAS => MYSQL50 | MYSQL51, SECOND_MICROSECOND => MYSQL41 | MYSQL50 | MYSQL51, SELECT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, SENSITIVE => MYSQL50 | MYSQL51, SEPARATOR => MYSQL41 | MYSQL50 | MYSQL51, SET => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, SHOW => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, SMALLINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, SONAME => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50, SPATIAL => MYSQL41 | MYSQL50 | MYSQL51, SPECIFIC => MYSQL50 | MYSQL51, SQL => MYSQL50 | MYSQL51, SQLEXCEPTION => MYSQL50 | MYSQL51, SQLSTATE => MYSQL50 | MYSQL51, SQLWARNING => MYSQL50 | MYSQL51, SQL_BIG_RESULT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, SQL_CALC_FOUND_ROWS => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, SQL_SMALL_RESULT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, SSL => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, STARTING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, STRAIGHT_JOIN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, TABLE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, TABLES => MYSQL32 | MYSQL40 | MYSQL41, TERMINATED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, THEN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, TINYBLOB => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, TINYINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, TINYTEXT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, TO => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, TRAILING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, TRIGGER => MYSQL50 | MYSQL51, TRUE => MYSQL41 | MYSQL50 | MYSQL51, UNDO => MYSQL50 | MYSQL51, UNION => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, UNIQUE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, UNLOCK => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, UNSIGNED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, UPDATE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, UPGRADE => MYSQL50 | MYSQL51, USAGE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, USE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, USING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, UTC_DATE => MYSQL41 | MYSQL50 | MYSQL51, UTC_TIME => MYSQL41 | MYSQL50 | MYSQL51, UTC_TIMESTAMP => MYSQL41 | MYSQL50 | MYSQL51, VALUES => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, VARBINARY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, VARCHAR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, VARCHARACTER => MYSQL41 | MYSQL50 | MYSQL51, VARYING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, WHEN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, WHERE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, WHILE => MYSQL50 | MYSQL51, WITH => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, WRITE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, X509 => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, XOR => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, YEAR_MONTH => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ZEROFILL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51, ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_mysql3 { return &is_reserved & MYSQL32; } sub is_reserved_by_mysql4 { my $flags = &is_reserved; return $flags & MYSQL40 || $flags & MYSQL41; } sub is_reserved_by_mysql5 { my $flags = &is_reserved; return $flags & MYSQL50 || $flags & MYSQL51; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'MySQL 3.2' if $flags & MYSQL32; push @reserved_by, 'MySQL 4.0' if $flags & MYSQL40; push @reserved_by, 'MySQL 4.1' if $flags & MYSQL41; push @reserved_by, 'MySQL 5.0' if $flags & MYSQL50; push @reserved_by, 'MySQL 5.1' if $flags & MYSQL51; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords::MySQL - Reserved SQL words by MySQL =head1 SYNOPSIS if ( SQL::ReservedWords::MySQL->is_reserved( $word ) ) { print "$word is a reserved MySQL word!"; } =head1 DESCRIPTION Determine if words are reserved by MySQL. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by either MySQL 3.2, 4.0, 4.1, 5.0 or 5.1. =item is_reserved_by_mysql3( $word ) Returns a boolean indicating if C<$word> is reserved by MySQL 3.2. =item is_reserved_by_mysql4( $word ) Returns a boolean indicating if C<$word> is reserved by either MySQL 4.0 or 4.1. =item is_reserved_by_mysql5( $word ) Returns a boolean indicating if C<$word> is reserved by either MySQL 5.0 or 5.1. =item reserved_by( $word ) Returns a list with MySQL versions that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_mysql3 =item is_reserved_by_mysql4 =item is_reserved_by_mysql5 =item reserved_by =item words =back =head1 SEE ALSO L L =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/lib/SQL/ReservedWords/ODBC.pm000444000766000024 2601312017657177 21764 0ustar00chansenstaff000000000000package SQL::ReservedWords::ODBC; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant ODBC30 => 0x01; { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_odbc3 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ABSOLUTE => ODBC30, ACTION => ODBC30, ADA => ODBC30, ADD => ODBC30, ALL => ODBC30, ALLOCATE => ODBC30, ALTER => ODBC30, AND => ODBC30, ANY => ODBC30, ARE => ODBC30, AS => ODBC30, ASC => ODBC30, ASSERTION => ODBC30, AT => ODBC30, AUTHORIZATION => ODBC30, AVG => ODBC30, BEGIN => ODBC30, BETWEEN => ODBC30, BIT => ODBC30, BIT_LENGTH => ODBC30, BOTH => ODBC30, BY => ODBC30, CASCADE => ODBC30, CASCADED => ODBC30, CASE => ODBC30, CAST => ODBC30, CATALOG => ODBC30, CHAR => ODBC30, CHARACTER => ODBC30, CHARACTER_LENGTH => ODBC30, CHAR_LENGTH => ODBC30, CHECK => ODBC30, CLOSE => ODBC30, COALESCE => ODBC30, COLLATE => ODBC30, COLLATION => ODBC30, COLUMN => ODBC30, COMMIT => ODBC30, CONNECT => ODBC30, CONNECTION => ODBC30, CONSTRAINT => ODBC30, CONSTRAINTS => ODBC30, CONTINUE => ODBC30, CONVERT => ODBC30, CORRESPONDING => ODBC30, COUNT => ODBC30, CREATE => ODBC30, CROSS => ODBC30, CURRENT => ODBC30, CURRENT_DATE => ODBC30, CURRENT_TIME => ODBC30, CURRENT_TIMESTAMP => ODBC30, CURRENT_USER => ODBC30, CURSOR => ODBC30, DATE => ODBC30, DAY => ODBC30, DEALLOCATE => ODBC30, DEC => ODBC30, DECIMAL => ODBC30, DECLARE => ODBC30, DEFAULT => ODBC30, DEFERRABLE => ODBC30, DEFERRED => ODBC30, DELETE => ODBC30, DESC => ODBC30, DESCRIBE => ODBC30, DESCRIPTOR => ODBC30, DIAGNOSTICS => ODBC30, DISCONNECT => ODBC30, DISTINCT => ODBC30, DOMAIN => ODBC30, DOUBLE => ODBC30, DROP => ODBC30, ELSE => ODBC30, END => ODBC30, 'END-EXEC' => ODBC30, ESCAPE => ODBC30, EXCEPT => ODBC30, EXCEPTION => ODBC30, EXEC => ODBC30, EXECUTE => ODBC30, EXISTS => ODBC30, EXTERNAL => ODBC30, EXTRACT => ODBC30, FALSE => ODBC30, FETCH => ODBC30, FIRST => ODBC30, FLOAT => ODBC30, FOR => ODBC30, FOREIGN => ODBC30, FORTRAN => ODBC30, FOUND => ODBC30, FROM => ODBC30, FULL => ODBC30, GET => ODBC30, GLOBAL => ODBC30, GO => ODBC30, GOTO => ODBC30, GRANT => ODBC30, GROUP => ODBC30, HAVING => ODBC30, HOUR => ODBC30, IDENTITY => ODBC30, IMMEDIATE => ODBC30, IN => ODBC30, INCLUDE => ODBC30, INDEX => ODBC30, INDICATOR => ODBC30, INITIALLY => ODBC30, INNER => ODBC30, INPUT => ODBC30, INSENSITIVE => ODBC30, INSERT => ODBC30, INT => ODBC30, INTEGER => ODBC30, INTERSECT => ODBC30, INTERVAL => ODBC30, INTO => ODBC30, IS => ODBC30, ISOLATION => ODBC30, JOIN => ODBC30, KEY => ODBC30, LANGUAGE => ODBC30, LAST => ODBC30, LEADING => ODBC30, LEFT => ODBC30, LEVEL => ODBC30, LIKE => ODBC30, LOCAL => ODBC30, LOWER => ODBC30, MATCH => ODBC30, MAX => ODBC30, MIN => ODBC30, MINUTE => ODBC30, MODULE => ODBC30, MONTH => ODBC30, NAMES => ODBC30, NATIONAL => ODBC30, NATURAL => ODBC30, NCHAR => ODBC30, NEXT => ODBC30, NO => ODBC30, NONE => ODBC30, NOT => ODBC30, NULL => ODBC30, NULLIF => ODBC30, NUMERIC => ODBC30, OCTET_LENGTH => ODBC30, OF => ODBC30, ON => ODBC30, ONLY => ODBC30, OPEN => ODBC30, OPTION => ODBC30, OR => ODBC30, ORDER => ODBC30, OUTER => ODBC30, OUTPUT => ODBC30, OVERLAPS => ODBC30, PAD => ODBC30, PARTIAL => ODBC30, PASCAL => ODBC30, POSITION => ODBC30, PRECISION => ODBC30, PREPARE => ODBC30, PRESERVE => ODBC30, PRIMARY => ODBC30, PRIOR => ODBC30, PRIVILEGES => ODBC30, PROCEDURE => ODBC30, PUBLIC => ODBC30, READ => ODBC30, REAL => ODBC30, REFERENCES => ODBC30, RELATIVE => ODBC30, RESTRICT => ODBC30, REVOKE => ODBC30, RIGHT => ODBC30, ROLLBACK => ODBC30, ROWS => ODBC30, SCHEMA => ODBC30, SCROLL => ODBC30, SECOND => ODBC30, SECTION => ODBC30, SELECT => ODBC30, SESSION => ODBC30, SESSION_USER => ODBC30, SET => ODBC30, SIZE => ODBC30, SMALLINT => ODBC30, SOME => ODBC30, SPACE => ODBC30, SQL => ODBC30, SQLCA => ODBC30, SQLCODE => ODBC30, SQLERROR => ODBC30, SQLSTATE => ODBC30, SQLWARNING => ODBC30, SUBSTRING => ODBC30, SUM => ODBC30, SYSTEM_USER => ODBC30, TABLE => ODBC30, TEMPORARY => ODBC30, THEN => ODBC30, TIME => ODBC30, TIMESTAMP => ODBC30, TIMEZONE_HOUR => ODBC30, TIMEZONE_MINUTE => ODBC30, TO => ODBC30, TRAILING => ODBC30, TRANSACTION => ODBC30, TRANSLATE => ODBC30, TRANSLATION => ODBC30, TRIM => ODBC30, TRUE => ODBC30, UNION => ODBC30, UNIQUE => ODBC30, UNKNOWN => ODBC30, UPDATE => ODBC30, UPPER => ODBC30, USAGE => ODBC30, USER => ODBC30, USING => ODBC30, VALUE => ODBC30, VALUES => ODBC30, VARCHAR => ODBC30, VARYING => ODBC30, VIEW => ODBC30, WHEN => ODBC30, WHENEVER => ODBC30, WHERE => ODBC30, WITH => ODBC30, WORK => ODBC30, WRITE => ODBC30, YEAR => ODBC30, ZONE => ODBC30, ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_odbc3 { return &is_reserved & ODBC30; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'ODBC 3.0' if $flags & ODBC30; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords::ODBC - Reserved SQL words by ODBC =head1 SYNOPSIS if ( SQL::ReservedWords::ODBC->is_reserved( $word ) ) { print "$word is a reserved ODBC word!"; } =head1 DESCRIPTION Determine if words are reserved by ODBC. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by ODBC 3.0. =item is_reserved_by_odbc3( $word ) Returns a boolean indicating if C<$word> is reserved by ODBC 3.0. =item reserved_by( $word ) Returns a list with ODBC versions that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_odbc3 =item reserved_by =item words =back =head1 SEE ALSO L. Microsoft ODBC 3.0 Programmer's Reference, Volume 2, Appendix C. =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/lib/SQL/ReservedWords/Oracle.pm000444000766000024 2335512017657177 22470 0ustar00chansenstaff000000000000package SQL::ReservedWords::Oracle; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant ORACLE7 => 0x01; use constant ORACLE8 => 0x02; use constant ORACLE9 => 0x04; use constant ORACLE10 => 0x08; { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_oracle7 is_reserved_by_oracle8 is_reserved_by_oracle9 is_reserved_by_oracle10 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ACCESS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ADD => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ALL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ALTER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, AND => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ANY => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, AS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ASC => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, AUDIT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, BETWEEN => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, BY => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, CHAR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, CHECK => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, CLUSTER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, COLUMN => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, COMMENT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, COMPRESS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, CONNECT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, CREATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, CURRENT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, DATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, DECIMAL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, DEFAULT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, DELETE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, DESC => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, DISTINCT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, DROP => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ELSE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, EXCLUSIVE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, EXISTS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, FILE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, FLOAT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, FOR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, FROM => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, GRANT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, GROUP => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, HAVING => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, IDENTIFIED => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, IMMEDIATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, IN => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, INCREMENT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, INDEX => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, INITIAL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, INSERT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, INTEGER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, INTERSECT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, INTO => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, IS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, LEVEL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, LIKE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, LOCK => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, LONG => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, MAXEXTENTS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, MINUS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, MLSLABEL => ORACLE8 | ORACLE9 | ORACLE10, MODE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, MODIFY => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, NOAUDIT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, NOCOMPRESS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, NOT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, NOWAIT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, NULL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, NUMBER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, OF => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, OFFLINE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ON => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ONLINE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, OPTION => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, OR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ORDER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, PCTFREE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, PRIOR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, PRIVILEGES => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, PUBLIC => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, RAW => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, RENAME => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, RESOURCE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, REVOKE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ROW => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ROWID => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ROWLABEL => ORACLE7, ROWNUM => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, ROWS => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SELECT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SESSION => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SET => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SHARE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SIZE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SMALLINT => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, START => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SUCCESSFUL => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SYNONYM => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, SYSDATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, TABLE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, THEN => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, TO => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, TRIGGER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, UID => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, UNION => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, UNIQUE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, UPDATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, USER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, VALIDATE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, VALUES => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, VARCHAR => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, VARCHAR2 => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, VIEW => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, WHENEVER => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, WHERE => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10, WITH => ORACLE7 | ORACLE8 | ORACLE9 | ORACLE10 ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_oracle7 { return &is_reserved & ORACLE7; } sub is_reserved_by_oracle8 { return &is_reserved & ORACLE8; } sub is_reserved_by_oracle9 { return &is_reserved & ORACLE9; } sub is_reserved_by_oracle10 { return &is_reserved & ORACLE10; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'Oracle 7' if $flags & ORACLE7; push @reserved_by, 'Oracle 8i' if $flags & ORACLE8; push @reserved_by, 'Oracle 9i' if $flags & ORACLE9; push @reserved_by, 'Oracle 10g' if $flags & ORACLE10; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords::Oracle - Reserved SQL words by Oracle =head1 SYNOPSIS if ( SQL::ReservedWords::Oracle->is_reserved( $word ) ) { print "$word is a reserved Oracle word!"; } =head1 DESCRIPTION Determine if words are reserved by Oracle Database. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by either Oracle7, Oracle8i, Oracle9i or Oracle10g. =item is_reserved_by_oracle7( $word ) Returns a boolean indicating if C<$word> is reserved by Oracle7. =item is_reserved_by_oracle8( $word ) Returns a boolean indicating if C<$word> is reserved by Oracle8i. =item is_reserved_by_oracle9( $word ) Returns a boolean indicating if C<$word> is reserved by Oracle9i. =item is_reserved_by_oracle10( $word ) Returns a boolean indicating if C<$word> is reserved by Oracle10g. =item reserved_by( $word ) Returns a list with Oracle versions that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_oracle7 =item is_reserved_by_oracle8 =item is_reserved_by_oracle9 =item is_reserved_by_oracle10 =item reserved_by =item words =back =head1 SEE ALSO L L =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/lib/SQL/ReservedWords/PostgreSQL.pm000444000766000024 2547612017657177 23274 0ustar00chansenstaff000000000000package SQL::ReservedWords::PostgreSQL; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant POSTGRESQL73 => 0x01; use constant POSTGRESQL74 => 0x02; use constant POSTGRESQL80 => 0x04; use constant POSTGRESQL81 => 0x08; { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_postgresql7 is_reserved_by_postgresql8 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ALL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ANALYSE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ANALYZE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, AND => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ANY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ARRAY => POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, AS => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ASC => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ASYMMETRIC => POSTGRESQL81, AUTHORIZATION => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, BETWEEN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, BINARY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, BOTH => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CASE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CAST => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CHECK => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, COLLATE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, COLUMN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CONSTRAINT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CREATE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CROSS => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CURRENT_DATE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CURRENT_ROLE => POSTGRESQL81, CURRENT_TIME => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CURRENT_TIMESTAMP => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, CURRENT_USER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, DEFAULT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, DEFERRABLE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, DESC => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, DISTINCT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, DO => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ELSE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, END => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, EXCEPT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, FALSE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, FOR => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, FOREIGN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, FREEZE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, FROM => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, FULL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, GRANT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, GROUP => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, HAVING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ILIKE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, IN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, INITIALLY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, INNER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, INTERSECT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, INTO => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, IS => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ISNULL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, JOIN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, LEADING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, LEFT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, LIKE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, LIMIT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, LOCALTIME => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, LOCALTIMESTAMP => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, NATURAL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, NEW => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, NOT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, NOTNULL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, NULL => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, OFF => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, OFFSET => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, OLD => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ON => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ONLY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, OR => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ORDER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, OUTER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, OVERLAPS => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, PLACING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, PRIMARY => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, REFERENCES => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, RIGHT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, SELECT => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, SESSION_USER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, SIMILAR => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, SOME => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, SYMMETRIC => POSTGRESQL81, TABLE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, THEN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, TO => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, TRAILING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, TRUE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, UNION => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, UNIQUE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, USER => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, USING => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, VERBOSE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, WHEN => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, WHERE => POSTGRESQL73 | POSTGRESQL74 | POSTGRESQL80 | POSTGRESQL81, ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_postgresql7 { my $flags = &is_reserved; return $flags & POSTGRESQL73 || $flags & POSTGRESQL74; } sub is_reserved_by_postgresql8 { my $flags = &is_reserved; return $flags & POSTGRESQL80 || $flags & POSTGRESQL81; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'PostgreSQL 7.3' if $flags & POSTGRESQL73; push @reserved_by, 'PostgreSQL 7.4' if $flags & POSTGRESQL74; push @reserved_by, 'PostgreSQL 8.0' if $flags & POSTGRESQL80; push @reserved_by, 'PostgreSQL 8.1' if $flags & POSTGRESQL81; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords::PostgreSQL - Reserved SQL words by PostgreSQL =head1 SYNOPSIS if ( SQL::ReservedWords::PostgreSQL->is_reserved( $word ) ) { print "$word is a reserved PostgreSQL word!"; } =head1 DESCRIPTION Determine if words are reserved by PostgreSQL. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by either PostgreSQL 7.3, 7.4, 8.0 or 8.1. =item is_reserved_by_postgresql7( $word ) Returns a boolean indicating if C<$word> is reserved by either PostgreSQL 7.3 or 7.4. =item is_reserved_by_postgresql8( $word ) Returns a boolean indicating if C<$word> is reserved by either PostgreSQL 8.0 or 8.1. =item reserved_by( $word ) Returns a list with PostgreSQL versions that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_postgresql7 =item is_reserved_by_postgresql8 =item reserved_by =item words =back =head1 SEE ALSO L L =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/lib/SQL/ReservedWords/SQLite.pm000444000766000024 1263012017657177 22416 0ustar00chansenstaff000000000000package SQL::ReservedWords::SQLite; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant SQLITE2 => 0x01; # 2.8.17 use constant SQLITE3 => 0x02; # 3.3.4 { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_sqlite2 is_reserved_by_sqlite3 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ALL => SQLITE2 | SQLITE3, ALTER => SQLITE3, AND => SQLITE2 | SQLITE3, AS => SQLITE2 | SQLITE3, AUTOINCREMENT => SQLITE3, BETWEEN => SQLITE2 | SQLITE3, BY => SQLITE2 | SQLITE3, CASE => SQLITE2 | SQLITE3, CHECK => SQLITE2 | SQLITE3, COLLATE => SQLITE2 | SQLITE3, COMMIT => SQLITE2 | SQLITE3, CONSTRAINT => SQLITE2 | SQLITE3, CREATE => SQLITE2 | SQLITE3, CROSS => SQLITE3, DEFAULT => SQLITE2 | SQLITE3, DEFERRABLE => SQLITE2 | SQLITE3, DELETE => SQLITE2 | SQLITE3, DISTINCT => SQLITE2 | SQLITE3, DROP => SQLITE2 | SQLITE3, ELSE => SQLITE2 | SQLITE3, ESCAPE => SQLITE3, EXCEPT => SQLITE2 | SQLITE3, FOREIGN => SQLITE2 | SQLITE3, FROM => SQLITE2 | SQLITE3, FULL => SQLITE3, GLOB => SQLITE2, GROUP => SQLITE2 | SQLITE3, HAVING => SQLITE2 | SQLITE3, IN => SQLITE2 | SQLITE3, INDEX => SQLITE2 | SQLITE3, INNER => SQLITE3, INSERT => SQLITE2 | SQLITE3, INTERSECT => SQLITE2 | SQLITE3, INTO => SQLITE2 | SQLITE3, IS => SQLITE2 | SQLITE3, ISNULL => SQLITE2 | SQLITE3, JOIN => SQLITE2 | SQLITE3, LEFT => SQLITE3, LIKE => SQLITE2, LIMIT => SQLITE2 | SQLITE3, NATURAL => SQLITE3, NOT => SQLITE2 | SQLITE3, NOTNULL => SQLITE2 | SQLITE3, NULL => SQLITE2 | SQLITE3, ON => SQLITE2 | SQLITE3, OR => SQLITE2 | SQLITE3, ORDER => SQLITE2 | SQLITE3, OUTER => SQLITE3, PRIMARY => SQLITE2 | SQLITE3, REFERENCES => SQLITE2 | SQLITE3, RIGHT => SQLITE3, ROLLBACK => SQLITE2 | SQLITE3, SELECT => SQLITE2 | SQLITE3, SET => SQLITE2 | SQLITE3, TABLE => SQLITE2 | SQLITE3, THEN => SQLITE2 | SQLITE3, TO => SQLITE3, TRANSACTION => SQLITE2 | SQLITE3, UNION => SQLITE2 | SQLITE3, UNIQUE => SQLITE2 | SQLITE3, UPDATE => SQLITE2 | SQLITE3, USING => SQLITE2 | SQLITE3, VALUES => SQLITE2 | SQLITE3, WHEN => SQLITE2 | SQLITE3, WHERE => SQLITE2 | SQLITE3, ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_sqlite2 { return &is_reserved & SQLITE2; } sub is_reserved_by_sqlite3 { return &is_reserved & SQLITE3; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'SQLite 2' if $flags & SQLITE2; push @reserved_by, 'SQLite 3' if $flags & SQLITE3; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords::SQLite - Reserved SQL words by SQLite =head1 SYNOPSIS if ( SQL::ReservedWords::SQLite->is_reserved( $word ) ) { print "$word is a reserved SQLite word!"; } =head1 DESCRIPTION Determine if words are reserved by SQLite. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by either SQLite 2 or 3. =item is_reserved_by_sqlite2( $word ) Returns a boolean indicating if C<$word> is reserved by SQLite 2. =item is_reserved_by_sqlite3( $word ) Returns a boolean indicating if C<$word> is reserved by SQLite 3. =item reserved_by( $word ) Returns a list with SQLite versions that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_sqlite2 =item is_reserved_by_sqlite3 =item reserved_by =item words =back =head1 SEE ALSO L L =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/lib/SQL/ReservedWords/SQLServer.pm000444000766000024 4145612017657177 23113 0ustar00chansenstaff000000000000package SQL::ReservedWords::SQLServer; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant SQLSERVER7 => 0x01; use constant SQLSERVER2000 => 0x02; use constant SQLSERVER2005 => 0x04; { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_sqlserver7 is_reserved_by_sqlserver2000 is_reserved_by_sqlserver2005 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ADD => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ALL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ALTER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, AND => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ANY => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, AS => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ASC => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, AUTHORIZATION => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, AVG => SQLSERVER7, BACKUP => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, BEGIN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, BETWEEN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, BREAK => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, BROWSE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, BULK => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, BY => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CASCADE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CASE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CHECK => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CHECKPOINT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CLOSE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CLUSTERED => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, COALESCE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, COLLATE => SQLSERVER2000 | SQLSERVER2005, COLUMN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, COMMIT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, COMMITTED => SQLSERVER7, COMPUTE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CONFIRM => SQLSERVER7, CONSTRAINT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CONTAINS => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CONTAINSTABLE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CONTINUE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CONTROLROW => SQLSERVER7, CONVERT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, COUNT => SQLSERVER7, CREATE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CROSS => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CURRENT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CURRENT_DATE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CURRENT_TIME => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CURRENT_TIMESTAMP => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CURRENT_USER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, CURSOR => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DATABASE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DBCC => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DEALLOCATE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DECLARE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DEFAULT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DELETE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DENY => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DESC => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DISK => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DISTINCT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DISTRIBUTED => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DOUBLE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DROP => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DUMMY => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, DUMP => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ELSE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, END => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ERRLVL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ERROREXIT => SQLSERVER7, ESCAPE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, EXCEPT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, EXEC => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, EXECUTE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, EXISTS => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, EXIT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FETCH => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FILE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FILLFACTOR => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FLOPPY => SQLSERVER7, FOR => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FOREIGN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FREETEXT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FREETEXTTABLE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FROM => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FULL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, FUNCTION => SQLSERVER2000 | SQLSERVER2005, GOTO => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, GRANT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, GROUP => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, HAVING => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, HOLDLOCK => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, IDENTITY => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, IDENTITYCOL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, IDENTITY_INSERT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, IF => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, IN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, INDEX => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, INNER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, INSERT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, INTERSECT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, INTO => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, IS => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ISOLATION => SQLSERVER7, JOIN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, KEY => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, KILL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, LEFT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, LEVEL => SQLSERVER7, LIKE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, LINENO => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, LOAD => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, MAX => SQLSERVER7, MIN => SQLSERVER7, MIRROREXIT => SQLSERVER7, NATIONAL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, NOCHECK => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, NONCLUSTERED => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, NOT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, NULL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, NULLIF => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OF => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OFF => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OFFSETS => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ON => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ONCE => SQLSERVER7, ONLY => SQLSERVER7, OPEN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OPENDATASOURCE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OPENQUERY => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OPENROWSET => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OPENXML => SQLSERVER2000 | SQLSERVER2005, OPTION => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OR => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ORDER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OUTER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, OVER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, PERCENT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, PERM => SQLSERVER7, PERMANENT => SQLSERVER7, PIPE => SQLSERVER7, PLAN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, PRECISION => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, PREPARE => SQLSERVER7, PRIMARY => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, PRINT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, PRIVILEGES => SQLSERVER7, PROC => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, PROCEDURE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, PROCESSEXIT => SQLSERVER7, PUBLIC => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, RAISERROR => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, READ => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, READTEXT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, RECONFIGURE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, REFERENCES => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, REPEATABLE => SQLSERVER7, REPLICATION => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, RESTORE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, RESTRICT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, RETURN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, REVOKE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, RIGHT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ROLLBACK => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ROWCOUNT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ROWGUIDCOL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, RULE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SAVE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SCHEMA => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SELECT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SERIALIZABLE => SQLSERVER7, SESSION_USER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SET => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SETUSER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SHUTDOWN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SOME => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, STATISTICS => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, SUM => SQLSERVER7, SYSTEM_USER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TABLE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TAPE => SQLSERVER7, TEMP => SQLSERVER7, TEMPORARY => SQLSERVER7, TEXTSIZE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, THEN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TO => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TOP => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TRAN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TRANSACTION => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TRIGGER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TRUNCATE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, TSEQUAL => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, UNCOMMITTED => SQLSERVER7, UNION => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, UNIQUE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, UPDATE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, UPDATETEXT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, USE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, USER => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, VALUES => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, VARYING => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, VIEW => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, WAITFOR => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, WHEN => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, WHERE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, WHILE => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, WITH => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, WORK => SQLSERVER7, WRITETEXT => SQLSERVER7 | SQLSERVER2000 | SQLSERVER2005, ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_sqlserver7 { return &is_reserved & SQLSERVER7; } sub is_reserved_by_sqlserver2000 { return &is_reserved & SQLSERVER2000; } sub is_reserved_by_sqlserver2005 { return &is_reserved & SQLSERVER2005; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'SQL Server 7' if $flags & SQLSERVER7; push @reserved_by, 'SQL Server 2000' if $flags & SQLSERVER2000; push @reserved_by, 'SQL Server 2005' if $flags & SQLSERVER2005; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords::SQLServer - Reserved SQL words by SQL Server =head1 SYNOPSIS if ( SQL::ReservedWords::SQLServer->is_reserved( $word ) ) { print "$word is a reserved SQL Server word!"; } =head1 DESCRIPTION Determine if words are reserved by SQL Server. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by SQL Server 7, 2000 or 2005. =item is_reserved_by_sqlserver7( $word ) Returns a boolean indicating if C<$word> is reserved by SQL Server 7. =item is_reserved_by_sqlserver2000( $word ) Returns a boolean indicating if C<$word> is reserved by SQL Server 2000. =item is_reserved_by_sqlserver2005( $word ) Returns a boolean indicating if C<$word> is reserved by SQL Server 2005. =item reserved_by( $word ) Returns a list with SQL Server versions that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_sqlserver7 =item is_reserved_by_sqlserver2000 =item is_reserved_by_sqlserver2005 =item reserved_by =item words =back =head1 SEE ALSO http://msdn2.microsoft.com/en-us/library/ms130214.aspx =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/lib/SQL/ReservedWords/Sybase.pm000444000766000024 3551112017657177 22506 0ustar00chansenstaff000000000000package SQL::ReservedWords::Sybase; use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use constant SYBASEASE12 => 0x01; use constant SYBASEASE15 => 0x02; { require Sub::Exporter; my @exports = qw[ is_reserved is_reserved_by_ase12 is_reserved_by_ase15 reserved_by words ]; Sub::Exporter->import( -setup => { exports => \@exports } ); } { my %WORDS = ( ADD => SYBASEASE12 | SYBASEASE15, ALL => SYBASEASE12 | SYBASEASE15, ALTER => SYBASEASE12 | SYBASEASE15, AND => SYBASEASE12 | SYBASEASE15, ANY => SYBASEASE12 | SYBASEASE15, ARITH_OVERFLOW => SYBASEASE12 | SYBASEASE15, AS => SYBASEASE12 | SYBASEASE15, ASC => SYBASEASE12 | SYBASEASE15, AT => SYBASEASE12 | SYBASEASE15, AUTHORIZATION => SYBASEASE12 | SYBASEASE15, AVG => SYBASEASE12 | SYBASEASE15, BEGIN => SYBASEASE12 | SYBASEASE15, BETWEEN => SYBASEASE12 | SYBASEASE15, BREAK => SYBASEASE12 | SYBASEASE15, BROWSE => SYBASEASE12 | SYBASEASE15, BULK => SYBASEASE12 | SYBASEASE15, BY => SYBASEASE12 | SYBASEASE15, CASCADE => SYBASEASE12 | SYBASEASE15, CASE => SYBASEASE12 | SYBASEASE15, CHAR_CONVERT => SYBASEASE12 | SYBASEASE15, CHECK => SYBASEASE12 | SYBASEASE15, CHECKPOINT => SYBASEASE12 | SYBASEASE15, CLOSE => SYBASEASE12 | SYBASEASE15, CLUSTERED => SYBASEASE12 | SYBASEASE15, COALESCE => SYBASEASE12 | SYBASEASE15, COMMIT => SYBASEASE12 | SYBASEASE15, COMPUTE => SYBASEASE12 | SYBASEASE15, CONFIRM => SYBASEASE12 | SYBASEASE15, CONNECT => SYBASEASE12 | SYBASEASE15, CONSTRAINT => SYBASEASE12 | SYBASEASE15, CONTINUE => SYBASEASE12 | SYBASEASE15, CONTROLROW => SYBASEASE12 | SYBASEASE15, CONVERT => SYBASEASE12 | SYBASEASE15, COUNT => SYBASEASE12 | SYBASEASE15, COUNT_BIG => SYBASEASE15, CREATE => SYBASEASE12 | SYBASEASE15, CURRENT => SYBASEASE12 | SYBASEASE15, CURSOR => SYBASEASE12 | SYBASEASE15, DATABASE => SYBASEASE12 | SYBASEASE15, DBCC => SYBASEASE12 | SYBASEASE15, DEALLOCATE => SYBASEASE12 | SYBASEASE15, DECLARE => SYBASEASE12 | SYBASEASE15, DECRYPT => SYBASEASE15, DEFAULT => SYBASEASE12 | SYBASEASE15, DELETE => SYBASEASE12 | SYBASEASE15, DESC => SYBASEASE12 | SYBASEASE15, DETERMINISTIC => SYBASEASE12 | SYBASEASE15, DISK => SYBASEASE12 | SYBASEASE15, DISTINCT => SYBASEASE12 | SYBASEASE15, DOUBLE => SYBASEASE12, DROP => SYBASEASE12 | SYBASEASE15, DUMMY => SYBASEASE12 | SYBASEASE15, DUMP => SYBASEASE12 | SYBASEASE15, ELSE => SYBASEASE12 | SYBASEASE15, ENCRYPT => SYBASEASE15, END => SYBASEASE12 | SYBASEASE15, ENDTRAN => SYBASEASE12 | SYBASEASE15, ERRLVL => SYBASEASE12 | SYBASEASE15, ERRORDATA => SYBASEASE12 | SYBASEASE15, ERROREXIT => SYBASEASE12 | SYBASEASE15, ESCAPE => SYBASEASE12 | SYBASEASE15, EXCEPT => SYBASEASE12 | SYBASEASE15, EXCLUSIVE => SYBASEASE12 | SYBASEASE15, EXEC => SYBASEASE12 | SYBASEASE15, EXECUTE => SYBASEASE12 | SYBASEASE15, EXISTS => SYBASEASE12 | SYBASEASE15, EXIT => SYBASEASE12 | SYBASEASE15, EXP_ROW_SIZE => SYBASEASE12 | SYBASEASE15, EXTERNAL => SYBASEASE12 | SYBASEASE15, FETCH => SYBASEASE12 | SYBASEASE15, FILLFACTOR => SYBASEASE12 | SYBASEASE15, FOR => SYBASEASE12 | SYBASEASE15, FOREIGN => SYBASEASE12 | SYBASEASE15, FROM => SYBASEASE12 | SYBASEASE15, FUNC => SYBASEASE12, GOTO => SYBASEASE12 | SYBASEASE15, GRANT => SYBASEASE12 | SYBASEASE15, GROUP => SYBASEASE12 | SYBASEASE15, HAVING => SYBASEASE12 | SYBASEASE15, HOLDLOCK => SYBASEASE12 | SYBASEASE15, IDENTITY => SYBASEASE12 | SYBASEASE15, IDENTITY_GAP => SYBASEASE12 | SYBASEASE15, IDENTITY_INSERT => SYBASEASE12, IDENTITY_START => SYBASEASE12 | SYBASEASE15, IF => SYBASEASE12 | SYBASEASE15, IN => SYBASEASE12 | SYBASEASE15, INDEX => SYBASEASE12 | SYBASEASE15, INOUT => SYBASEASE12 | SYBASEASE15, INSENSITIVE => SYBASEASE15, INSERT => SYBASEASE12 | SYBASEASE15, INSTALL => SYBASEASE12 | SYBASEASE15, INTERSECT => SYBASEASE12 | SYBASEASE15, INTO => SYBASEASE12 | SYBASEASE15, IS => SYBASEASE12 | SYBASEASE15, ISOLATION => SYBASEASE12 | SYBASEASE15, JAR => SYBASEASE12 | SYBASEASE15, JOIN => SYBASEASE12 | SYBASEASE15, KEY => SYBASEASE12 | SYBASEASE15, KILL => SYBASEASE12 | SYBASEASE15, LEVEL => SYBASEASE12 | SYBASEASE15, LIKE => SYBASEASE12 | SYBASEASE15, LINENO => SYBASEASE12 | SYBASEASE15, LOAD => SYBASEASE12 | SYBASEASE15, LOCK => SYBASEASE12 | SYBASEASE15, MATERIALIZED => SYBASEASE15, MAX => SYBASEASE12 | SYBASEASE15, MAX_ROWS_PER_PAGE => SYBASEASE12 | SYBASEASE15, MIN => SYBASEASE12 | SYBASEASE15, MIRROR => SYBASEASE12 | SYBASEASE15, MIRROREXIT => SYBASEASE12 | SYBASEASE15, MODIFY => SYBASEASE12 | SYBASEASE15, NATIONAL => SYBASEASE12 | SYBASEASE15, NEW => SYBASEASE12 | SYBASEASE15, NOHOLDLOCK => SYBASEASE12 | SYBASEASE15, NONCLUSTERED => SYBASEASE12 | SYBASEASE15, NONSCROLLABLE => SYBASEASE15, NON_SENSITIVE => SYBASEASE15, NOT => SYBASEASE12 | SYBASEASE15, NULL => SYBASEASE12 | SYBASEASE15, NULLIF => SYBASEASE12 | SYBASEASE15, NUMERIC_TRUNCATION => SYBASEASE12 | SYBASEASE15, OF => SYBASEASE12 | SYBASEASE15, OFF => SYBASEASE12 | SYBASEASE15, OFFSETS => SYBASEASE12 | SYBASEASE15, ON => SYBASEASE12 | SYBASEASE15, ONCE => SYBASEASE12 | SYBASEASE15, ONLINE => SYBASEASE12 | SYBASEASE15, ONLY => SYBASEASE12 | SYBASEASE15, OPEN => SYBASEASE12 | SYBASEASE15, OPTION => SYBASEASE12 | SYBASEASE15, OR => SYBASEASE12 | SYBASEASE15, ORDER => SYBASEASE12 | SYBASEASE15, OUT => SYBASEASE12 | SYBASEASE15, OUTPUT => SYBASEASE12 | SYBASEASE15, OVER => SYBASEASE12 | SYBASEASE15, PARTITION => SYBASEASE12 | SYBASEASE15, PERM => SYBASEASE12 | SYBASEASE15, PERMANENT => SYBASEASE12 | SYBASEASE15, PLAN => SYBASEASE12 | SYBASEASE15, PRECISION => SYBASEASE12, PREPARE => SYBASEASE12 | SYBASEASE15, PRIMARY => SYBASEASE12 | SYBASEASE15, PRINT => SYBASEASE12 | SYBASEASE15, PRIVILEGES => SYBASEASE12 | SYBASEASE15, PROC => SYBASEASE12 | SYBASEASE15, PROCEDURE => SYBASEASE12 | SYBASEASE15, PROCESSEXIT => SYBASEASE12 | SYBASEASE15, PROXY_TABLE => SYBASEASE12 | SYBASEASE15, PUBLIC => SYBASEASE12 | SYBASEASE15, QUIESCE => SYBASEASE12 | SYBASEASE15, RAISERROR => SYBASEASE12 | SYBASEASE15, READ => SYBASEASE12 | SYBASEASE15, READPAST => SYBASEASE12 | SYBASEASE15, READTEXT => SYBASEASE12 | SYBASEASE15, RECONFIGURE => SYBASEASE12 | SYBASEASE15, REFERENCES => SYBASEASE12 | SYBASEASE15, REMOVE => SYBASEASE12 | SYBASEASE15, REORG => SYBASEASE12 | SYBASEASE15, REPLACE => SYBASEASE12 | SYBASEASE15, REPLICATION => SYBASEASE12 | SYBASEASE15, RESERVEPAGEGAP => SYBASEASE12 | SYBASEASE15, RETURN => SYBASEASE12 | SYBASEASE15, RETURNS => SYBASEASE12 | SYBASEASE15, REVOKE => SYBASEASE12 | SYBASEASE15, ROLE => SYBASEASE12 | SYBASEASE15, ROLLBACK => SYBASEASE12 | SYBASEASE15, ROWCOUNT => SYBASEASE12 | SYBASEASE15, ROWS => SYBASEASE12 | SYBASEASE15, RULE => SYBASEASE12 | SYBASEASE15, SAVE => SYBASEASE12 | SYBASEASE15, SCHEMA => SYBASEASE12 | SYBASEASE15, SCROLL => SYBASEASE15, SCROLLABLE => SYBASEASE15, SELECT => SYBASEASE12 | SYBASEASE15, SEMI_SENSITIVE => SYBASEASE15, SET => SYBASEASE12 | SYBASEASE15, SETUSER => SYBASEASE12 | SYBASEASE15, SHARED => SYBASEASE12 | SYBASEASE15, SHUTDOWN => SYBASEASE12 | SYBASEASE15, SOME => SYBASEASE12 | SYBASEASE15, STATISTICS => SYBASEASE12 | SYBASEASE15, STRINGSIZE => SYBASEASE12 | SYBASEASE15, STRIPE => SYBASEASE12 | SYBASEASE15, SUM => SYBASEASE12 | SYBASEASE15, SYB_IDENTITY => SYBASEASE12 | SYBASEASE15, SYB_RESTREE => SYBASEASE12 | SYBASEASE15, SYB_TERMINATE => SYBASEASE12 | SYBASEASE15, TABLE => SYBASEASE12 | SYBASEASE15, TEMP => SYBASEASE12 | SYBASEASE15, TEMPORARY => SYBASEASE12 | SYBASEASE15, TEXTSIZE => SYBASEASE12 | SYBASEASE15, TO => SYBASEASE12 | SYBASEASE15, TRACEFILE => SYBASEASE15, TRAN => SYBASEASE12 | SYBASEASE15, TRANSACTION => SYBASEASE12 | SYBASEASE15, TRIGGER => SYBASEASE12 | SYBASEASE15, TRUNCATE => SYBASEASE12 | SYBASEASE15, TSEQUAL => SYBASEASE12 | SYBASEASE15, UNION => SYBASEASE12 | SYBASEASE15, UNIQUE => SYBASEASE12 | SYBASEASE15, UNPARTITION => SYBASEASE12 | SYBASEASE15, UPDATE => SYBASEASE12 | SYBASEASE15, USE => SYBASEASE12 | SYBASEASE15, USER => SYBASEASE12 | SYBASEASE15, USER_OPTION => SYBASEASE12 | SYBASEASE15, USING => SYBASEASE12 | SYBASEASE15, VALUES => SYBASEASE12 | SYBASEASE15, VARYING => SYBASEASE12 | SYBASEASE15, VIEW => SYBASEASE12 | SYBASEASE15, WAITFOR => SYBASEASE12 | SYBASEASE15, WHEN => SYBASEASE12 | SYBASEASE15, WHERE => SYBASEASE12 | SYBASEASE15, WHILE => SYBASEASE12 | SYBASEASE15, WITH => SYBASEASE12 | SYBASEASE15, WORK => SYBASEASE12 | SYBASEASE15, WRITETEXT => SYBASEASE12 | SYBASEASE15, XMLEXTRACT => SYBASEASE15, XMLPARSE => SYBASEASE15, XMLTEST => SYBASEASE15, XMLVALIDATE => SYBASEASE15, ); sub is_reserved { return $WORDS{ uc(pop || '') } || 0; } sub is_reserved_by_ase12 { return &is_reserved & SYBASEASE12; } sub is_reserved_by_ase15 { return &is_reserved & SYBASEASE15; } sub reserved_by { my $flags = &is_reserved; my @reserved_by = (); push @reserved_by, 'Sybase ASE 12' if $flags & SYBASEASE12; push @reserved_by, 'Sybase ASE 15' if $flags & SYBASEASE15; return @reserved_by; } sub words { return sort keys %WORDS; } } 1; __END__ =head1 NAME SQL::ReservedWords::Sybase - Reserved SQL words by Sybase =head1 SYNOPSIS if ( SQL::ReservedWords::Sybase->is_reserved( $word ) ) { print "$word is a reserved Sybase word!"; } =head1 DESCRIPTION Determine if words are reserved by Sybase. =head1 METHODS =over 4 =item is_reserved( $word ) Returns a boolean indicating if C<$word> is reserved by either Sybase ASE 12 or 15. =item is_reserved_by_ase12( $word ) Returns a boolean indicating if C<$word> is reserved by Sybase ASE 12. =item is_reserved_by_ase15( $word ) Returns a boolean indicating if C<$word> is reserved by Sybase ASE 15. =item reserved_by( $word ) Returns a list with Sybase versions that reserves C<$word>. =item words Returns a list with all reserved words. =back =head1 EXPORTS Nothing by default. Following subroutines can be exported: =over 4 =item is_reserved =item is_reserved_by_ase12 =item is_reserved_by_ase15 =item reserved_by =item words =back =head1 SEE ALSO L L =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/scripts000755000766000024 012017657177 16224 5ustar00chansenstaff000000000000SQL-ReservedWords-0.8/scripts/sqlrw000444000766000024 371012017657177 17455 0ustar00chansenstaff000000000000#!/usr/bin/perl use strict; use warnings; use vars '$VERSION'; $VERSION = '0.8'; use Getopt::Long qw[]; Getopt::Long::Configure( "no_ignore_case" ); Getopt::Long::Configure( "bundling" ); Getopt::Long::GetOptions( 'v|verbose' => \( my $verbose = 0 ), 'h|help|?' => sub { usage( -verbose => 1 ); exit; }, 'H|man' => sub { usage( -verbose => 2 ); exit; }, 'V|version' => sub { version(); exit; }, ) or exit 1; my $word = shift(@ARGV) or usage( "$0: missing word\n" ); my @check = ( 'ANSI/ISO SQL' => 'SQL::ReservedWords', 'DB2' => 'SQL::ReservedWords::DB2', 'MySQL' => 'SQL::ReservedWords::MySQL', 'ODBC' => 'SQL::ReservedWords::ODBC', 'Oracle' => 'SQL::ReservedWords::Oracle', 'PostgreSQL' => 'SQL::ReservedWords::PostgreSQL', 'SQLite' => 'SQL::ReservedWords::SQLite', 'SQL Server' => 'SQL::ReservedWords::SQLServer', 'Sybase' => 'SQL::ReservedWords::Sybase' ); my @reserved_by = (); while ( my ( $name, $package ) = splice( @check, 0, 2 ) ) { eval "require $package;"; die $@ if $@; if ( $package->is_reserved( $word ) ) { push @reserved_by, $verbose ? $package->reserved_by($word) : $name; } } my $reserved_by = join "\n ", @reserved_by; print < =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut SQL-ReservedWords-0.8/t000755000766000024 012017657177 15000 5ustar00chansenstaff000000000000SQL-ReservedWords-0.8/t/01-use.t000444000766000024 55712017657177 16323 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 8; use_ok('SQL::ReservedWords'); use_ok('SQL::ReservedWords::DB2'); use_ok('SQL::ReservedWords::MySQL'); use_ok('SQL::ReservedWords::ODBC'); use_ok('SQL::ReservedWords::Oracle'); use_ok('SQL::ReservedWords::PostgreSQL'); use_ok('SQL::ReservedWords::SQLite'); use_ok('SQL::ReservedWords::SQLServer'); SQL-ReservedWords-0.8/t/02-pod.t000444000766000024 34112017657177 16301 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; eval "use Test::Pod 1.14"; plan skip_all => 'Test::Pod 1.14 required' if $@; plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; all_pod_files_ok(); SQL-ReservedWords-0.8/t/04-sql.t000444000766000024 664412017657177 16354 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 43; use_ok( 'SQL::ReservedWords' ); my @methods = qw[ is_reserved is_reserved_by_sql1992 is_reserved_by_sql1999 is_reserved_by_sql2003 reserved_by words ]; can_ok( 'SQL::ReservedWords', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords->words, 'Got words'; cmp_ok @words, '==', 337, 'Got 337 words'; ok SQL::ReservedWords->is_reserved('user'), 'USER is reserved'; ok SQL::ReservedWords->is_reserved_by_sql1992('user'), 'USER is reserved by SQL:1992'; ok SQL::ReservedWords->is_reserved_by_sql1999('user'), 'USER is reserved by SQL:1999'; ok SQL::ReservedWords->is_reserved_by_sql2003('user'), 'USER is reserved by SQL:2003'; ok SQL::ReservedWords->is_reserved('tablesample'), 'TABLESAMPLE is reserved'; ok ! SQL::ReservedWords->is_reserved_by_sql1992('tablesample'), 'TABLESAMPLE is not reserved by SQL:1992'; ok ! SQL::ReservedWords->is_reserved_by_sql1999('tablesample'), 'TABLESAMPLE is not reserved by SQL:1999'; ok SQL::ReservedWords->is_reserved_by_sql2003('tablesample'), 'TABLESAMPLE is reserved by SQL:2003'; ok SQL::ReservedWords->is_reserved('binary'), 'BINARY is reserved'; ok ! SQL::ReservedWords->is_reserved_by_sql1992('binary'), 'BINARY is not reserved by SQL:1992'; ok SQL::ReservedWords->is_reserved_by_sql1999('binary'), 'BINARY is reserved by SQL:1999'; ok SQL::ReservedWords->is_reserved_by_sql2003('binary'), 'BINARY is reserved by SQL:2003'; ok ! SQL::ReservedWords->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords->is_reserved_by_sql1992('bogus'), 'BOGUS is not reserved by SQL:1992'; ok ! SQL::ReservedWords->is_reserved_by_sql1999('bougus'), 'BOGUS is not reserved by SQL:1999'; ok ! SQL::ReservedWords->is_reserved_by_sql2003('bogus'), 'BOGUS is not reserved by SQL:2003'; ok ! SQL::ReservedWords->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords->reserved_by('user') ], [ 'SQL:1992', 'SQL:1999', 'SQL:2003' ], 'Got right reserved by for USER'; is_deeply [ SQL::ReservedWords->reserved_by('tablesample') ], [ 'SQL:2003' ], 'Got right reserved by for TABLESAMPLE'; is_deeply [ SQL::ReservedWords->reserved_by('binary') ], [ 'SQL:1999', 'SQL:2003' ], 'Got right reserved by for BINARY'; is_deeply [ SQL::ReservedWords->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('user'), 'USER is reserved'; ok is_reserved_by_sql1992('user'), 'USER is reserved by SQL:1992'; ok is_reserved_by_sql1999('user'), 'USER is reserved by SQL:1999'; ok is_reserved_by_sql2003('user'), 'USER is reserved by SQL:2003'; SQL-ReservedWords-0.8/t/05-db2.t000444000766000024 1126012017657177 16233 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 58; use_ok( 'SQL::ReservedWords::DB2' ); my @methods = qw[ is_reserved is_reserved_by_db2v5 is_reserved_by_db2v6 is_reserved_by_db2v7 is_reserved_by_db2v8 is_reserved_by_db2v9 reserved_by words ]; can_ok( 'SQL::ReservedWords::DB2', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords::DB2->words, 'Got words'; cmp_ok @words, '==', 397, 'Got 397 words'; ok SQL::ReservedWords::DB2->is_reserved('user'), 'USER is reserved'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v5('user'), 'USER is reserved by DB2 5'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v6('user'), 'USER is reserved by DB2 6'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v7('user'), 'USER is reserved by DB2 7'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v8('user'), 'USER is reserved by DB2 8'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v9('user'), 'USER is reserved by DB2 9'; ok SQL::ReservedWords::DB2->is_reserved('jar'), 'JAR is reserved'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v5('jar'), 'JAR is not reserved DB2 5'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v6('jar'), 'JAR is not reserved DB2 6'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v7('jar'), 'JAR is reserved by DB2 7'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v8('jar'), 'JAR is reserved by DB2 8'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v9('jar'), 'JAR is reserved by DB2 9'; ok SQL::ReservedWords::DB2->is_reserved('count'), 'COUNT is reserved'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v5('count'), 'COUNT is reserved by DB2 5'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v6('count'), 'COUNT is not reserved by DB2 6'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v7('count'), 'COUNT is not reserved by DB2 7'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v8('count'), 'COUNT is not reserved by DB2 8'; ok SQL::ReservedWords::DB2->is_reserved_by_db2v9('count'), 'COUNT is reserved by DB2 9'; ok ! SQL::ReservedWords::DB2->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v5('bogus'), 'BOGUS is not reserved by DB2 5'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v6('bogus'), 'BOGUS is not reserved by DB2 6'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v7('bogus'), 'BOGUS is not reserved by DB2 7'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v8('bogus'), 'BOGUS is not reserved by DB2 8'; ok ! SQL::ReservedWords::DB2->is_reserved_by_db2v9('bogus'), 'BOGUS is not reserved by DB2 9'; ok ! SQL::ReservedWords::DB2->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords::DB2->reserved_by('user') ], [ 'DB2 5', 'DB2 6', 'DB2 7', 'DB2 8', 'DB2 9' ], 'Got right reserved by for USER'; is_deeply [ SQL::ReservedWords::DB2->reserved_by('jar') ], [ 'DB2 7', 'DB2 8', 'DB2 9' ], 'Got right reserved by for ACCESSIBLE'; is_deeply [ SQL::ReservedWords::DB2->reserved_by('count') ], [ 'DB2 5', 'DB2 9' ], 'Got right reserved by for COUNT'; is_deeply [ SQL::ReservedWords::DB2->reserved_by('java') ], [ 'DB2 6', 'DB2 7', 'DB2 9' ], 'Got right reserved by for JAVA'; is_deeply [ SQL::ReservedWords::DB2->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords::DB2', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords::DB2->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('user'), 'USER is reserved'; ok is_reserved_by_db2v5('user'), 'USER is reserved by DB2 5'; ok is_reserved_by_db2v6('user'), 'USER is reserved by DB2 6'; ok is_reserved_by_db2v7('user'), 'USER is reserved by DB2 7'; ok is_reserved_by_db2v8('user'), 'USER is reserved by DB2 8'; ok is_reserved_by_db2v9('user'), 'USER is reserved by DB2 9'; SQL-ReservedWords-0.8/t/06-mysql.t000444000766000024 772712017657177 16727 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 44; use_ok( 'SQL::ReservedWords::MySQL' ); my @methods = qw[ is_reserved is_reserved_by_mysql3 is_reserved_by_mysql4 is_reserved_by_mysql5 reserved_by words ]; can_ok( 'SQL::ReservedWords::MySQL', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords::MySQL->words, 'Got words'; cmp_ok @words, '==', 234, 'Got 234 words'; ok SQL::ReservedWords::MySQL->is_reserved('zerofill'), 'ZEROFILL is reserved'; ok SQL::ReservedWords::MySQL->is_reserved_by_mysql3('zerofill'), 'ZEROFILL is reserved by MySQL 3'; ok SQL::ReservedWords::MySQL->is_reserved_by_mysql4('zerofill'), 'ZEROFILL is reserved by MySQL 4'; ok SQL::ReservedWords::MySQL->is_reserved_by_mysql5('zerofill'), 'ZEROFILL is reserved by MySQL 5'; ok SQL::ReservedWords::MySQL->is_reserved('accessible'), 'ACCESSIBLE is reserved'; ok ! SQL::ReservedWords::MySQL->is_reserved_by_mysql3('accessible'), 'ACCESSIBLE is not reserved MySQL 3'; ok ! SQL::ReservedWords::MySQL->is_reserved_by_mysql4('accessible'), 'ACCESSIBLE is not reserved MySQL 4'; ok SQL::ReservedWords::MySQL->is_reserved_by_mysql5('accessible'), 'ACCESSIBLE is reserved by MySQL 5'; ok SQL::ReservedWords::MySQL->is_reserved('true'), 'TRUE is reserved'; ok ! SQL::ReservedWords::MySQL->is_reserved_by_mysql3('true'), 'TRUE is not reserved by MySQL 3'; ok SQL::ReservedWords::MySQL->is_reserved_by_mysql4('true'), 'TRUE is reserved by MySQL 4'; ok SQL::ReservedWords::MySQL->is_reserved_by_mysql5('true'), 'TRUE is reserved by MySQL 5'; ok ! SQL::ReservedWords::MySQL->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::MySQL->is_reserved_by_mysql3('bogus'), 'BOGUS is not reserved by MySQL 3'; ok ! SQL::ReservedWords::MySQL->is_reserved_by_mysql4('bougus'), 'BOGUS is not reserved by MySQL 4'; ok ! SQL::ReservedWords::MySQL->is_reserved_by_mysql5('bogus'), 'BOGUS is not reserved by MySQL 5'; ok ! SQL::ReservedWords::MySQL->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords::MySQL->reserved_by('zerofill') ], [ 'MySQL 3.2', 'MySQL 4.0', 'MySQL 4.1', 'MySQL 5.0', 'MySQL 5.1' ], 'Got right reserved by for ZEROFILL'; is_deeply [ SQL::ReservedWords::MySQL->reserved_by('accessible') ], [ 'MySQL 5.1' ], 'Got right reserved by for ACCESSIBLE'; is_deeply [ SQL::ReservedWords::MySQL->reserved_by('reads') ], [ 'MySQL 5.0', 'MySQL 5.1' ], 'Got right reserved by for READS'; is_deeply [ SQL::ReservedWords::MySQL->reserved_by('true') ], [ 'MySQL 4.1', 'MySQL 5.0', 'MySQL 5.1' ], 'Got right reserved by for TRUE'; is_deeply [ SQL::ReservedWords::MySQL->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords::MySQL', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords::MySQL->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('zerofill'), 'ZEROFILL is reserved'; ok is_reserved_by_mysql3('zerofill'), 'ZEROFILL is reserved by MySQL 3'; ok is_reserved_by_mysql4('zerofill'), 'ZEROFILL is reserved by MySQL 4'; ok is_reserved_by_mysql5('zerofill'), 'ZEROFILL is reserved by MySQL 5'; SQL-ReservedWords-0.8/t/07-odbc.t000444000766000024 326512017657177 16463 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 22; use_ok( 'SQL::ReservedWords::ODBC' ); my @methods = qw[ is_reserved is_reserved_by_odbc3 reserved_by words ]; can_ok( 'SQL::ReservedWords::ODBC', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords::ODBC->words, 'Got words'; cmp_ok @words, '==', 235, 'Got 235 words'; ok SQL::ReservedWords::ODBC->is_reserved('user'), 'USER is reserved'; ok SQL::ReservedWords::ODBC->is_reserved_by_odbc3('user'), 'USER is reserved by ODBC 3.0'; ok ! SQL::ReservedWords::ODBC->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::ODBC->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords::ODBC->reserved_by('user') ], [ 'ODBC 3.0' ], 'Got right reserved by for USER'; is_deeply [ SQL::ReservedWords::ODBC->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords::ODBC', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords::ODBC->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('user'), 'USER is reserved'; ok is_reserved_by_odbc3('user'), 'USER is reserved by ODBC 3.0'; SQL-ReservedWords-0.8/t/08-oracle.t000444000766000024 1057012017657177 17037 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 50; use_ok( 'SQL::ReservedWords::Oracle' ); my @methods = qw[ is_reserved is_reserved_by_oracle7 is_reserved_by_oracle8 is_reserved_by_oracle9 is_reserved_by_oracle10 reserved_by words ]; can_ok( 'SQL::ReservedWords::Oracle', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords::Oracle->words, 'Got words'; cmp_ok @words, '==', 110, 'Got 110 words'; ok SQL::ReservedWords::Oracle->is_reserved('access'), 'ACCESS is reserved'; ok SQL::ReservedWords::Oracle->is_reserved_by_oracle7('access'), 'ACCESS is reserved by Oracle 7'; ok SQL::ReservedWords::Oracle->is_reserved_by_oracle8('access'), 'ACCESS is reserved by Oracle 8i'; ok SQL::ReservedWords::Oracle->is_reserved_by_oracle9('access'), 'ACCESS is reserved by Oracle 9i'; ok SQL::ReservedWords::Oracle->is_reserved_by_oracle10('access'), 'ACCESS is reserved by Oracle 10g'; ok SQL::ReservedWords::Oracle->is_reserved('mlslabel'), 'MLSLABEL is reserved'; ok ! SQL::ReservedWords::Oracle->is_reserved_by_oracle7('mlslabel'), 'MLSLABEL is not reserved Oracle 7'; ok SQL::ReservedWords::Oracle->is_reserved_by_oracle8('mlslabel'), 'MLSLABEL is reserved Oracle 8i'; ok SQL::ReservedWords::Oracle->is_reserved_by_oracle9('mlslabel'), 'MLSLABEL is reserved Oracle 9i'; ok SQL::ReservedWords::Oracle->is_reserved_by_oracle10('mlslabel'), 'MLSLABEL is reserved Oracle 10g'; ok SQL::ReservedWords::Oracle->is_reserved('rowlabel'), 'ROWLABEL is reserved'; ok SQL::ReservedWords::Oracle->is_reserved_by_oracle7('rowlabel'), 'ROWLABEL is reserved by Oracle 7'; ok ! SQL::ReservedWords::Oracle->is_reserved_by_oracle8('rowlabel'), 'ROWLABEL is not reserved by Oracle 8i'; ok ! SQL::ReservedWords::Oracle->is_reserved_by_oracle9('rowlabel'), 'ROWLABEL is not reserved by Oracle 9i'; ok ! SQL::ReservedWords::Oracle->is_reserved_by_oracle10('rowlabel'), 'ROWLABEL is not reserved by Oracle 10g'; ok ! SQL::ReservedWords::Oracle->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::Oracle->is_reserved_by_oracle7('bogus'), 'BOGUS is not reserved by Oracle 7'; ok ! SQL::ReservedWords::Oracle->is_reserved_by_oracle8('bougus'), 'BOGUS is not reserved by Oracle 8i'; ok ! SQL::ReservedWords::Oracle->is_reserved_by_oracle9('bogus'), 'BOGUS is not reserved by Oracle 9i'; ok ! SQL::ReservedWords::Oracle->is_reserved_by_oracle10('bogus'), 'BOGUS is not reserved by Oracle 10g'; ok ! SQL::ReservedWords::Oracle->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords::Oracle->reserved_by('access') ], [ 'Oracle 7', 'Oracle 8i', 'Oracle 9i', 'Oracle 10g' ], 'Got right reserved by for ACCESS'; is_deeply [ SQL::ReservedWords::Oracle->reserved_by('mlslabel') ], [ 'Oracle 8i', 'Oracle 9i', 'Oracle 10g' ], 'Got right reserved by for MLSLABEL'; is_deeply [ SQL::ReservedWords::Oracle->reserved_by('rowlabel') ], [ 'Oracle 7' ], 'Got right reserved by for ROWLABEL'; is_deeply [ SQL::ReservedWords::Oracle->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords::Oracle', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords::Oracle->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('access'), 'ACCESS is reserved'; ok is_reserved_by_oracle7('access'), 'ACCESS is reserved by Oracle 7'; ok is_reserved_by_oracle8('access'), 'ACCESS is reserved by Oracle 8i'; ok is_reserved_by_oracle9('access'), 'ACCESS is reserved by Oracle 9i'; ok is_reserved_by_oracle10('access'), 'ACCESS is reserved by Oracle 10g'; SQL-ReservedWords-0.8/t/09-postgresql.t000444000766000024 677612017657177 17773 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 36; use_ok( 'SQL::ReservedWords::PostgreSQL' ); my @methods = qw[ is_reserved is_reserved_by_postgresql7 is_reserved_by_postgresql8 reserved_by words ]; can_ok( 'SQL::ReservedWords::PostgreSQL', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords::PostgreSQL->words, 'Got words'; cmp_ok @words, '==', 93, 'Got 93 words'; ok SQL::ReservedWords::PostgreSQL->is_reserved('localtime'), 'LOCALTIME is reserved'; ok SQL::ReservedWords::PostgreSQL->is_reserved_by_postgresql7('localtime'), 'LOCALTIME is reserved by PostgreSQL 7'; ok SQL::ReservedWords::PostgreSQL->is_reserved_by_postgresql8('localtime'), 'LOCALTIME is reserved by PostgreSQL 8'; ok SQL::ReservedWords::PostgreSQL->is_reserved('symmetric'), 'SYMMETRIC is reserved'; ok ! SQL::ReservedWords::PostgreSQL->is_reserved_by_postgresql7('symmetric'), 'SYMMETRIC is not reserved PostgreSQL 7'; ok SQL::ReservedWords::PostgreSQL->is_reserved_by_postgresql8('symmetric'), 'SYMMETRIC is reserved PostgreSQL 8'; ok SQL::ReservedWords::PostgreSQL->is_reserved('array'), 'ARRAY is reserved'; ok SQL::ReservedWords::PostgreSQL->is_reserved_by_postgresql7('array'), 'ARRAY is reserved by PostgreSQL 7'; ok SQL::ReservedWords::PostgreSQL->is_reserved_by_postgresql8('array'), 'ARRAY is reserved by PostgreSQL 8'; ok ! SQL::ReservedWords::PostgreSQL->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::PostgreSQL->is_reserved_by_postgresql7('bogus'), 'BOGUS is not reserved by PostgreSQL 7'; ok ! SQL::ReservedWords::PostgreSQL->is_reserved_by_postgresql8('bougus'), 'BOGUS is not reserved by PostgreSQL 8'; ok ! SQL::ReservedWords::PostgreSQL->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords::PostgreSQL->reserved_by('localtime') ], [ 'PostgreSQL 7.3', 'PostgreSQL 7.4', 'PostgreSQL 8.0', 'PostgreSQL 8.1' ], 'Got right reserved by for LOCALTIME'; is_deeply [ SQL::ReservedWords::PostgreSQL->reserved_by('symmetric') ], [ 'PostgreSQL 8.1' ], 'Got right reserved by for SYMMETRIC'; is_deeply [ SQL::ReservedWords::PostgreSQL->reserved_by('array') ], [ 'PostgreSQL 7.4', 'PostgreSQL 8.0', 'PostgreSQL 8.1' ], 'Got right reserved by for ARRAY'; is_deeply [ SQL::ReservedWords::PostgreSQL->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords::PostgreSQL', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords::PostgreSQL->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('localtime'), 'LOCALTIME is reserved'; ok is_reserved_by_postgresql7('localtime'), 'LOCALTIME is reserved by PostgreSQL 7'; ok is_reserved_by_postgresql8('localtime'), 'LOCALTIME is reserved by PostgreSQL 8'; SQL-ReservedWords-0.8/t/10-sqlite.t000444000766000024 630512017657177 17045 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 36; use_ok( 'SQL::ReservedWords::SQLite' ); my @methods = qw[ is_reserved is_reserved_by_sqlite2 is_reserved_by_sqlite3 reserved_by words ]; can_ok( 'SQL::ReservedWords::SQLite', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords::SQLite->words, 'Got words'; cmp_ok @words, '==', 65, 'Got 65 words'; ok SQL::ReservedWords::SQLite->is_reserved('between'), 'BETWEEN is reserved'; ok SQL::ReservedWords::SQLite->is_reserved_by_sqlite2('between'), 'BETWEEN is reserved by SQLite 2'; ok SQL::ReservedWords::SQLite->is_reserved_by_sqlite3('between'), 'BETWEEN is reserved by SQLite 3'; ok SQL::ReservedWords::SQLite->is_reserved('glob'), 'GLOB is reserved'; ok SQL::ReservedWords::SQLite->is_reserved_by_sqlite2('glob'), 'GLOB is reserved by SQLite 2'; ok ! SQL::ReservedWords::SQLite->is_reserved_by_sqlite3('glob'), 'GLOB is not reserved by SQLite 3'; ok SQL::ReservedWords::SQLite->is_reserved('full'), 'FULL is reserved'; ok ! SQL::ReservedWords::SQLite->is_reserved_by_sqlite2('full'), 'FULL is not reserved by SQLite 2'; ok SQL::ReservedWords::SQLite->is_reserved_by_sqlite3('full'), 'FULL is reserved by SQLite 3'; ok ! SQL::ReservedWords::SQLite->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::SQLite->is_reserved_by_sqlite2('bogus'), 'BOGUS is not reserved by SQLite 2'; ok ! SQL::ReservedWords::SQLite->is_reserved_by_sqlite3('bougus'), 'BOGUS is not reserved by SQLite 3'; ok ! SQL::ReservedWords::SQLite->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords::SQLite->reserved_by('between') ], [ 'SQLite 2', 'SQLite 3' ], 'Got right reserved by for BETWEEN'; is_deeply [ SQL::ReservedWords::SQLite->reserved_by('glob') ], [ 'SQLite 2' ], 'Got right reserved by for GLOB'; is_deeply [ SQL::ReservedWords::SQLite->reserved_by('full') ], [ 'SQLite 3' ], 'Got right reserved by for FULL'; is_deeply [ SQL::ReservedWords::SQLite->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords::SQLite', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords::SQLite->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('between'), 'BETWEEN is reserved'; ok is_reserved_by_sqlite2('between'), 'BETWEEN is reserved by SQLite 2'; ok is_reserved_by_sqlite3('between'), 'BETWEEN is reserved by SQLite 3'; SQL-ReservedWords-0.8/t/11-sqlserver.t000444000766000024 1013112017657177 17603 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 43; use_ok( 'SQL::ReservedWords::SQLServer' ); my @methods = qw[ is_reserved is_reserved_by_sqlserver7 is_reserved_by_sqlserver2000 is_reserved_by_sqlserver2005 reserved_by words ]; can_ok( 'SQL::ReservedWords::SQLServer', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords::SQLServer->words, 'Got words'; cmp_ok @words, '==', 202, 'Got 202 words'; ok SQL::ReservedWords::SQLServer->is_reserved('authorization'), 'AUTHORIZATION is reserved'; ok SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver7('authorization'), 'AUTHORIZATION is reserved by SQL Server 7'; ok SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver2000('authorization'), 'AUTHORIZATION is reserved by SQL Server 2000'; ok SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver2005('authorization'), 'AUTHORIZATION is reserved by SQL Server 2005'; ok SQL::ReservedWords::SQLServer->is_reserved('temporary'), 'TEMPORARY is reserved'; ok SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver7('temporary'), 'TEMPORARY is reserved by SQL Server 7'; ok ! SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver2000('temporary'), 'TEMPORARY is not reserved by SQL Server 2000'; ok ! SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver2005('temporary'), 'TEMPORARY is not reserved by SQL Server 2005'; ok SQL::ReservedWords::SQLServer->is_reserved('collate'), 'COLLATE is reserved'; ok ! SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver7('collate'), 'COLLATE is not reserved by SQL Server 7'; ok SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver2000('collate'), 'COLLATE is reserved by SQL Server 2000'; ok SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver2005('collate'), 'COLLATE is reserved by SQL Server 2005'; ok ! SQL::ReservedWords::SQLServer->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver7('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver2000('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::SQLServer->is_reserved_by_sqlserver2005('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::SQLServer->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords::SQLServer->reserved_by('authorization') ], [ 'SQL Server 7', 'SQL Server 2000', 'SQL Server 2005' ], 'Got right reserved by for AUTHORIZATION'; is_deeply [ SQL::ReservedWords::SQLServer->reserved_by('temporary') ], [ 'SQL Server 7' ], 'Got right reserved by for TEMPORARY'; is_deeply [ SQL::ReservedWords::SQLServer->reserved_by('collate') ], [ 'SQL Server 2000', 'SQL Server 2005' ], 'Got right reserved by for COLLATE'; is_deeply [ SQL::ReservedWords::SQLServer->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords::SQLServer', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords::SQLServer->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('authorization'), 'AUTHORIZATION is reserved'; ok is_reserved_by_sqlserver7('authorization'), 'AUTHORIZATION is reserved by SQL Server 7'; ok is_reserved_by_sqlserver2000('authorization'), 'AUTHORIZATION is reserved by SQL Server 2000'; ok is_reserved_by_sqlserver2005('authorization'), 'AUTHORIZATION is reserved by SQL Server 2005'; SQL-ReservedWords-0.8/t/12-sybase.t000444000766000024 637412017657177 17042 0ustar00chansenstaff000000000000#!perl use strict; use warnings; use Test::More; plan tests => 36; use_ok( 'SQL::ReservedWords::Sybase' ); my @methods = qw[ is_reserved is_reserved_by_ase12 is_reserved_by_ase15 reserved_by words ]; can_ok( 'SQL::ReservedWords::Sybase', @methods ); foreach my $method ( @methods ) { ok ! __PACKAGE__->can($method), "$method was not exported by default"; } ok my @words = SQL::ReservedWords::Sybase->words, 'Got words'; cmp_ok @words, '==', 220, 'Got 220 words'; ok SQL::ReservedWords::Sybase->is_reserved('between'), 'BETWEEN is reserved'; ok SQL::ReservedWords::Sybase->is_reserved_by_ase12('between'), 'BETWEEN is reserved by Sybase ASE 12'; ok SQL::ReservedWords::Sybase->is_reserved_by_ase15('between'), 'BETWEEN is reserved by Sybase ASE 15'; ok SQL::ReservedWords::Sybase->is_reserved('func'), 'FUNC is reserved'; ok SQL::ReservedWords::Sybase->is_reserved_by_ase12('func'), 'FUNC is reserved by Sybase ASE 12'; ok ! SQL::ReservedWords::Sybase->is_reserved_by_ase15('func'), 'FUNC is not reserved by Sybase ASE 15'; ok SQL::ReservedWords::Sybase->is_reserved('scroll'), 'SCROLL is reserved'; ok ! SQL::ReservedWords::Sybase->is_reserved_by_ase12('scroll'), 'SCROLL is not reserved by Sybase ASE 12'; ok SQL::ReservedWords::Sybase->is_reserved_by_ase15('scroll'), 'SCROLL is reserved by Sybase ASE 15'; ok ! SQL::ReservedWords::Sybase->is_reserved('bogus'), 'BOGUS is not reserved'; ok ! SQL::ReservedWords::Sybase->is_reserved_by_ase12('bogus'), 'BOGUS is not reserved by Sybase ASE 12'; ok ! SQL::ReservedWords::Sybase->is_reserved_by_ase15('bougus'), 'BOGUS is not reserved by Sybase ASE 15'; ok ! SQL::ReservedWords::Sybase->is_reserved(undef), 'undef is not reserved'; is_deeply [ SQL::ReservedWords::Sybase->reserved_by('between') ], [ 'Sybase ASE 12', 'Sybase ASE 15' ], 'Got right reserved by for BETWEEN'; is_deeply [ SQL::ReservedWords::Sybase->reserved_by('func') ], [ 'Sybase ASE 12' ], 'Got right reserved by for FUNC'; is_deeply [ SQL::ReservedWords::Sybase->reserved_by('scroll') ], [ 'Sybase ASE 15' ], 'Got right reserved by for SCROLL'; is_deeply [ SQL::ReservedWords::Sybase->reserved_by('bogus') ], [ ], 'Got right reserved by for BOGUS'; use_ok 'SQL::ReservedWords::Sybase', @methods; foreach my $method ( @methods ) { cmp_ok __PACKAGE__->can($method), '==', SQL::ReservedWords::Sybase->can($method), "$method was exported"; } ok @words = words(), 'Got words'; ok is_reserved('between'), 'BETWEEN is reserved'; ok is_reserved_by_ase12('between'), 'BETWEEN is reserved by Sybase ASE 12'; ok is_reserved_by_ase15('between'), 'BETWEEN is reserved by Sybase ASE 15';