SQL::ReservedWords::SQLite - Reserved SQL words by SQLite


SQL-ReservedWords documentation Contained in the SQL-ReservedWords distribution.

Index


Code Index:

NAME

Top

SQL::ReservedWords::SQLite - Reserved SQL words by SQLite

SYNOPSIS

Top

   if ( SQL::ReservedWords::SQLite->is_reserved( $word ) ) {
       print "$word is a reserved SQLite word!";
   }

DESCRIPTION

Top

Determine if words are reserved by SQLite.

METHODS

Top

is_reserved( $word )

Returns a boolean indicating if $word is reserved by either SQLite 2 or 3.

is_reserved_by_sqlite2( $word )

Returns a boolean indicating if $word is reserved by SQLite 2.

is_reserved_by_sqlite3( $word )

Returns a boolean indicating if $word is reserved by SQLite 3.

reserved_by( $word )

Returns a list with SQLite versions that reserves $word.

words

Returns a list with all reserved words.

EXPORTS

Top

Nothing by default. Following subroutines can be exported:

is_reserved
is_reserved_by_sqlite2
is_reserved_by_sqlite3
reserved_by
words

SEE ALSO

Top

SQL::ReservedWords

http://www.sqlite.org/docs.html

AUTHOR

Top

Christian Hansen chansen@cpan.org

COPYRIGHT

Top


SQL-ReservedWords documentation Contained in the SQL-ReservedWords distribution.

package SQL::ReservedWords::SQLite;

use strict;
use warnings;
use vars '$VERSION';

$VERSION = 0.7;

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__