diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-07-08 00:09:11 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-07-08 00:09:34 +0300 |
commit | 283349508291d70e6e06f0ed58ab1c174f362775 (patch) | |
tree | adb682104497da623f203f140e6d2b5290af83df /src | |
parent | e58d23067743641529348e4a1cc93cf1c73a85a5 (diff) | |
download | sql-parser-283349508291d70e6e06f0ed58ab1c174f362775.zip sql-parser-283349508291d70e6e06f0ed58ab1c174f362775.tar.gz sql-parser-283349508291d70e6e06f0ed58ab1c174f362775.tar.bz2 |
Fixed the 'CREATE' statement for long queries, where there may be more than one 'END' keyword.
Added 'CHARSET' as synonym for 'CHARACTER SET'.
Updated contexts definitions.
Diffstat (limited to 'src')
-rw-r--r-- | src/Contexts/ContextMySql50000.php | 2 | ||||
-rw-r--r-- | src/Contexts/ContextMySql50100.php | 2 | ||||
-rw-r--r-- | src/Contexts/ContextMySql50500.php | 2 | ||||
-rw-r--r-- | src/Contexts/ContextMySql50600.php | 2 | ||||
-rw-r--r-- | src/Contexts/ContextMySql50700.php | 2 | ||||
-rw-r--r-- | src/Fragments/AlterFragment.php | 1 | ||||
-rw-r--r-- | src/Fragments/KeyFragment.php | 9 | ||||
-rw-r--r-- | src/Statements/CreateStatement.php | 36 |
8 files changed, 29 insertions, 27 deletions
diff --git a/src/Contexts/ContextMySql50000.php b/src/Contexts/ContextMySql50000.php index 7db5fc3..312a53e 100644 --- a/src/Contexts/ContextMySql50000.php +++ b/src/Contexts/ContextMySql50000.php @@ -149,7 +149,7 @@ class ContextMySql50000 extends Context 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, - 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'DEFAULT CHARACTER SET' => 7, 'XML' => 9, diff --git a/src/Contexts/ContextMySql50100.php b/src/Contexts/ContextMySql50100.php index a5c4bef..0e5a574 100644 --- a/src/Contexts/ContextMySql50100.php +++ b/src/Contexts/ContextMySql50100.php @@ -160,7 +160,7 @@ class ContextMySql50100 extends Context 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, - 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'DEFAULT CHARACTER SET' => 7, 'XML' => 9, diff --git a/src/Contexts/ContextMySql50500.php b/src/Contexts/ContextMySql50500.php index 3faf785..426bd52 100644 --- a/src/Contexts/ContextMySql50500.php +++ b/src/Contexts/ContextMySql50500.php @@ -165,7 +165,7 @@ class ContextMySql50500 extends Context 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, - 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'DEFAULT CHARACTER SET' => 7, 'XML' => 9, diff --git a/src/Contexts/ContextMySql50600.php b/src/Contexts/ContextMySql50600.php index 6a1af74..e091314 100644 --- a/src/Contexts/ContextMySql50600.php +++ b/src/Contexts/ContextMySql50600.php @@ -171,7 +171,7 @@ class ContextMySql50600 extends Context 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, - 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'DEFAULT CHARACTER SET' => 7, 'XML' => 9, diff --git a/src/Contexts/ContextMySql50700.php b/src/Contexts/ContextMySql50700.php index ac81e8a..207ffd2 100644 --- a/src/Contexts/ContextMySql50700.php +++ b/src/Contexts/ContextMySql50700.php @@ -179,7 +179,7 @@ class ContextMySql50700 extends Context 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, - 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'DEFAULT CHARACTER SET' => 7, 'XML' => 9, diff --git a/src/Fragments/AlterFragment.php b/src/Fragments/AlterFragment.php index b5c66e8..fbcce4c 100644 --- a/src/Fragments/AlterFragment.php +++ b/src/Fragments/AlterFragment.php @@ -69,6 +69,7 @@ class AlterFragment extends Fragment 'INDEX' => 4, 'DEFAULT CHARACTER SET' => array(5, 'var'), + 'DEFAULT CHARSET' => array(5, 'var'), 'COLLATE' => array(6, 'var'), ); diff --git a/src/Fragments/KeyFragment.php b/src/Fragments/KeyFragment.php index 1964cd2..c27d745 100644 --- a/src/Fragments/KeyFragment.php +++ b/src/Fragments/KeyFragment.php @@ -67,7 +67,14 @@ class KeyFragment extends Fragment */ public $options; - + /** + * Constructor. + * + * @param string $name The name of the key. + * @param array $columns The columns covered by this key. + * @param string $type The type of this key. + * @param OptionsFragment $options The options of this key. + */ public function __construct($name = null, array $columns = array(), $type = null, $options = null ) { diff --git a/src/Statements/CreateStatement.php b/src/Statements/CreateStatement.php index 71557c7..0fb5193 100644 --- a/src/Statements/CreateStatement.php +++ b/src/Statements/CreateStatement.php @@ -40,7 +40,6 @@ class CreateStatement extends Statement // CREATE TABLE 'TEMPORARY' => 1, - 'IF NOT EXISTS' => 2, // CREATE FUNCTION / PROCEDURE and CREATE VIEW 'DEFINER' => array(1, 'var='), @@ -62,6 +61,9 @@ class CreateStatement extends Statement 'TRIGGER' => 6, 'USER' => 6, 'VIEW' => 6, + + // CREATE TABLE + 'IF NOT EXISTS' => 7, ); /** @@ -73,12 +75,14 @@ class CreateStatement extends Statement 'ENGINE' => array(1, 'var='), 'AUTO_INCREMENT' => array(2, 'var='), 'AVG_ROW_LENGTH' => array(3, 'var'), - 'DEFAULT CHARACTER SET' => array(4, 'var'), - 'CHARACTER SET' => array(4, 'var'), + 'CHARACTER SET' => array(4, 'var='), + 'CHARSET' => array(4, 'var='), + 'DEFAULT CHARACTER SET' => array(4, 'var='), + 'DEFAULT CHARSET' => array(4, 'var='), 'CHECKSUM' => array(5, 'var'), - 'DEFAULT COLLATE' => array(5, 'var'), - 'COLLATE' => array(6, 'var'), - 'COMMENT' => array(7, 'var'), + 'DEFAULT COLLATE' => array(5, 'var='), + 'COLLATE' => array(6, 'var='), + 'COMMENT' => array(7, 'var='), 'CONNECTION' => array(8, 'var'), 'DATA DIRECTORY' => array(9, 'var'), 'DELAY_KEY_WRITE' => array(10, 'var'), @@ -101,7 +105,7 @@ class CreateStatement extends Statement * @var array */ public static $FUNC_OPTIONS = array( - 'COMMENT' => array(1, 'var'), + 'COMMENT' => array(1, 'var='), 'LANGUAGE SQL' => 2, 'DETERMINISTIC' => 3, 'NOT DETERMINISTIC' => 3, @@ -257,9 +261,9 @@ class CreateStatement extends Statement $parser, $list, array( - 'skipColumn' => true, - 'noBrackets' => true, 'noAlias' => true, + 'noBrackets' => true, + 'skipColumn' => true, ) ); ++$list->idx; // Skipping field. @@ -304,11 +308,6 @@ class CreateStatement extends Statement for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; $this->body[] = $token; - if (($token->type === Token::TYPE_KEYWORD) - && ($token->value === 'END') - ) { - break; - } } } else if ($this->options->has('VIEW')) { $token = $list->getNext(); // Skipping whitespaces and comments. @@ -342,13 +341,13 @@ class CreateStatement extends Statement ++$list->idx; // Skipping `ON`. // Parsing the name of the table. - $this->fields = FieldFragment::parse( + $this->table = FieldFragment::parse( $parser, $list, array( - 'skipColumn' => true, 'noAlias' => true, 'noBrackets' => true, + 'skipColumn' => true, ) ); ++$list->idx; @@ -359,11 +358,6 @@ class CreateStatement extends Statement for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; $this->body[] = $token; - if (($token->type === Token::TYPE_KEYWORD) - && ($token->value === 'END') - ) { - break; - } } } } |