Provided by: libsql-translator-perl_1.62-1_all bug

NAME

       SQL::Translator::Parser::MySQL - parser for MySQL

SYNOPSIS

         use SQL::Translator;
         use SQL::Translator::Parser::MySQL;

         my $translator = SQL::Translator->new;
         $translator->parser("SQL::Translator::Parser::MySQL");

DESCRIPTION

       The grammar is influenced heavily by Tim Bunce's "mysql2ora" grammar.

       Here's the word from the MySQL site (http://www.mysql.com/doc/en/CREATE_TABLE.html):

         CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
         [table_options] [select_statement]

         or

         CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name LIKE old_table_name;

         create_definition:
           col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
                     [PRIMARY KEY] [reference_definition]
           or    PRIMARY KEY (index_col_name,...)
           or    KEY [index_name] (index_col_name,...)
           or    INDEX [index_name] (index_col_name,...)
           or    UNIQUE [INDEX] [index_name] (index_col_name,...)
           or    FULLTEXT [INDEX] [index_name] (index_col_name,...)
           or    [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
                     [reference_definition]
           or    CHECK (expr)

         type:
                 TINYINT[(length)] [UNSIGNED] [ZEROFILL]
           or    SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
           or    MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
           or    INT[(length)] [UNSIGNED] [ZEROFILL]
           or    INTEGER[(length)] [UNSIGNED] [ZEROFILL]
           or    BIGINT[(length)] [UNSIGNED] [ZEROFILL]
           or    REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
           or    DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
           or    FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
           or    DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
           or    NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
           or    CHAR(length) [BINARY]
           or    VARCHAR(length) [BINARY]
           or    DATE
           or    TIME
           or    TIMESTAMP
           or    DATETIME
           or    TINYBLOB
           or    BLOB
           or    MEDIUMBLOB
           or    LONGBLOB
           or    TINYTEXT
           or    TEXT
           or    MEDIUMTEXT
           or    LONGTEXT
           or    ENUM(value1,value2,value3,...)
           or    SET(value1,value2,value3,...)

         index_col_name:
                 col_name [(length)]

         reference_definition:
                 REFERENCES tbl_name [(index_col_name,...)]
                            [MATCH FULL | MATCH PARTIAL]
                            [ON DELETE reference_option]
                            [ON UPDATE reference_option]

         reference_option:
                 RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

         table_options:
                 TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
         or      ENGINE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
         or      AUTO_INCREMENT = #
         or      AVG_ROW_LENGTH = #
         or      [ DEFAULT ] CHARACTER SET charset_name
         or      CHECKSUM = {0 | 1}
         or      COLLATE collation_name
         or      COMMENT = "string"
         or      MAX_ROWS = #
         or      MIN_ROWS = #
         or      PACK_KEYS = {0 | 1 | DEFAULT}
         or      PASSWORD = "string"
         or      DELAY_KEY_WRITE = {0 | 1}
         or      ROW_FORMAT= { default | dynamic | fixed | compressed }
         or      RAID_TYPE= {1 | STRIPED | RAID0 } RAID_CHUNKS=#  RAID_CHUNKSIZE=#
         or      UNION = (table_name,[table_name...])
         or      INSERT_METHOD= {NO | FIRST | LAST }
         or      DATA DIRECTORY="absolute path to directory"
         or      INDEX DIRECTORY="absolute path to directory"

       A subset of the ALTER TABLE syntax that allows addition of foreign keys:

         ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ...

         alter_specification:
                 ADD [CONSTRAINT [symbol]]
                 FOREIGN KEY [index_name] (index_col_name,...)
                    [reference_definition]

       A subset of INSERT that we ignore:

         INSERT anything

ARGUMENTS

       This parser takes a single optional parser_arg "mysql_parser_version", which provides the
       desired version for the target database. Any statement in the processed dump file, that is
       commented with a version higher than the one supplied, will be stripped.

       The default "mysql_parser_version" is set to the conservative value of 40000 (MySQL 4.0)

       Valid version specifiers for "mysql_parser_version" are listed here

       More information about the MySQL comment-syntax:
       <http://dev.mysql.com/doc/refman/5.0/en/comments.html>

AUTHOR

       Ken Youens-Clark <kclark@cpan.org>, Chris Mungall <cjm@fruitfly.org>.

SEE ALSO

       Parse::RecDescent, SQL::Translator::Schema.