@@ -302,7 +302,7 @@ |
||
302 | 302 | ++$list->idx; // Skip 'ORDER BY' |
303 | 303 | $this->order = OrderKeyword::parse($parser, $list); |
304 | 304 | $state = 5; |
305 | - } elseif ($token->type === Token::TYPE_KEYWORD |
|
305 | + } elseif ($token->type === Token::TYPE_KEYWORD |
|
306 | 306 | && $token->value === 'LIMIT' |
307 | 307 | ) { |
308 | 308 | ++$list->idx; // Skip 'LIMIT' |
@@ -71,15 +71,15 @@ |
||
71 | 71 | * @var array |
72 | 72 | */ |
73 | 73 | public static $CLAUSES = array( |
74 | - 'DELETE' => array('DELETE', 2), |
|
74 | + 'DELETE' => array('DELETE', 2), |
|
75 | 75 | // Used for options. |
76 | - '_OPTIONS' => array('_OPTIONS', 1), |
|
77 | - 'FROM' => array('FROM', 3), |
|
78 | - 'PARTITION' => array('PARTITION', 3), |
|
79 | - 'USING' => array('USING', 3), |
|
80 | - 'WHERE' => array('WHERE', 3), |
|
81 | - 'ORDER BY' => array('ORDER BY', 3), |
|
82 | - 'LIMIT' => array('LIMIT', 3), |
|
76 | + '_OPTIONS' => array('_OPTIONS', 1), |
|
77 | + 'FROM' => array('FROM', 3), |
|
78 | + 'PARTITION' => array('PARTITION', 3), |
|
79 | + 'USING' => array('USING', 3), |
|
80 | + 'WHERE' => array('WHERE', 3), |
|
81 | + 'ORDER BY' => array('ORDER BY', 3), |
|
82 | + 'LIMIT' => array('LIMIT', 3), |
|
83 | 83 | ); |
84 | 84 | |
85 | 85 | /** |
@@ -77,7 +77,7 @@ |
||
77 | 77 | * @param Parser $parser The parser that serves as context. |
78 | 78 | * @param TokensList $list The list of tokens that are being parsed. |
79 | 79 | * |
80 | - * @return Expression |
|
80 | + * @return CaseExpression |
|
81 | 81 | */ |
82 | 82 | public static function parse(Parser $parser, TokensList $list) |
83 | 83 | { |
@@ -87,36 +87,36 @@ |
||
87 | 87 | * @var array |
88 | 88 | */ |
89 | 89 | public static $CLAUSES = array( |
90 | - 'SELECT' => array('SELECT', 2), |
|
90 | + 'SELECT' => array('SELECT', 2), |
|
91 | 91 | // Used for options. |
92 | - '_OPTIONS' => array('_OPTIONS', 1), |
|
92 | + '_OPTIONS' => array('_OPTIONS', 1), |
|
93 | 93 | // Used for selected expressions. |
94 | - '_SELECT' => array('SELECT', 1), |
|
95 | - 'INTO' => array('INTO', 3), |
|
96 | - 'FROM' => array('FROM', 3), |
|
97 | - 'PARTITION' => array('PARTITION', 3), |
|
98 | - |
|
99 | - 'JOIN' => array('JOIN', 1), |
|
100 | - 'FULL JOIN' => array('FULL JOIN', 1), |
|
101 | - 'INNER JOIN' => array('INNER JOIN', 1), |
|
102 | - 'LEFT JOIN' => array('LEFT JOIN', 1), |
|
103 | - 'LEFT OUTER JOIN' => array('LEFT OUTER JOIN', 1), |
|
104 | - 'RIGHT JOIN' => array('RIGHT JOIN', 1), |
|
105 | - 'RIGHT OUTER JOIN' => array('RIGHT OUTER JOIN', 1), |
|
106 | - 'NATURAL JOIN' => array('NATURAL JOIN', 1), |
|
107 | - 'NATURAL LEFT JOIN' => array('NATURAL LEFT JOIN', 1), |
|
108 | - 'NATURAL RIGHT JOIN' => array('NATURAL RIGHT JOIN', 1), |
|
94 | + '_SELECT' => array('SELECT', 1), |
|
95 | + 'INTO' => array('INTO', 3), |
|
96 | + 'FROM' => array('FROM', 3), |
|
97 | + 'PARTITION' => array('PARTITION', 3), |
|
98 | + |
|
99 | + 'JOIN' => array('JOIN', 1), |
|
100 | + 'FULL JOIN' => array('FULL JOIN', 1), |
|
101 | + 'INNER JOIN' => array('INNER JOIN', 1), |
|
102 | + 'LEFT JOIN' => array('LEFT JOIN', 1), |
|
103 | + 'LEFT OUTER JOIN' => array('LEFT OUTER JOIN', 1), |
|
104 | + 'RIGHT JOIN' => array('RIGHT JOIN', 1), |
|
105 | + 'RIGHT OUTER JOIN' => array('RIGHT OUTER JOIN', 1), |
|
106 | + 'NATURAL JOIN' => array('NATURAL JOIN', 1), |
|
107 | + 'NATURAL LEFT JOIN' => array('NATURAL LEFT JOIN', 1), |
|
108 | + 'NATURAL RIGHT JOIN' => array('NATURAL RIGHT JOIN', 1), |
|
109 | 109 | 'NATURAL LEFT OUTER JOIN' => array('NATURAL LEFT OUTER JOIN', 1), |
110 | - 'NATURAL RIGHT OUTER JOIN' => array('NATURAL RIGHT JOIN', 1), |
|
111 | - |
|
112 | - 'WHERE' => array('WHERE', 3), |
|
113 | - 'GROUP BY' => array('GROUP BY', 3), |
|
114 | - 'HAVING' => array('HAVING', 3), |
|
115 | - 'ORDER BY' => array('ORDER BY', 3), |
|
116 | - 'LIMIT' => array('LIMIT', 3), |
|
117 | - 'PROCEDURE' => array('PROCEDURE', 3), |
|
118 | - 'UNION' => array('UNION', 1), |
|
119 | - '_END_OPTIONS' => array('_END_OPTIONS', 1) |
|
110 | + 'NATURAL RIGHT OUTER JOIN' => array('NATURAL RIGHT JOIN', 1), |
|
111 | + |
|
112 | + 'WHERE' => array('WHERE', 3), |
|
113 | + 'GROUP BY' => array('GROUP BY', 3), |
|
114 | + 'HAVING' => array('HAVING', 3), |
|
115 | + 'ORDER BY' => array('ORDER BY', 3), |
|
116 | + 'LIMIT' => array('LIMIT', 3), |
|
117 | + 'PROCEDURE' => array('PROCEDURE', 3), |
|
118 | + 'UNION' => array('UNION', 1), |
|
119 | + '_END_OPTIONS' => array('_END_OPTIONS', 1) |
|
120 | 120 | // These are available only when `UNION` is present. |
121 | 121 | // 'ORDER BY' => array('ORDER BY', 3), |
122 | 122 | // 'LIMIT' => array('LIMIT', 3), |
@@ -52,46 +52,46 @@ discard block |
||
52 | 52 | * @var string |
53 | 53 | */ |
54 | 54 | const TEMPLATE = |
55 | - '<?php' . "\n" . |
|
56 | - '' . "\n" . |
|
57 | - '/**' . "\n" . |
|
58 | - ' * Context for %1$s.' . "\n" . |
|
59 | - ' *' . "\n" . |
|
60 | - ' * This file was auto-generated.' . "\n" . |
|
61 | - ' *' . "\n" . |
|
62 | - ' * @package SqlParser' . "\n" . |
|
63 | - ' * @subpackage Contexts' . "\n" . |
|
64 | - ' * @link %3$s' . "\n" . |
|
65 | - ' */' . "\n" . |
|
66 | - 'namespace SqlParser\\Contexts;' . "\n" . |
|
67 | - '' . "\n" . |
|
68 | - 'use SqlParser\\Context;' . "\n" . |
|
69 | - '' . "\n" . |
|
70 | - '/**' . "\n" . |
|
71 | - ' * Context for %1$s.' . "\n" . |
|
72 | - ' *' . "\n" . |
|
73 | - ' * @category Contexts' . "\n" . |
|
74 | - ' * @package SqlParser' . "\n" . |
|
75 | - ' * @subpackage Contexts' . "\n" . |
|
76 | - ' * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+' . "\n" . |
|
77 | - ' */' . "\n" . |
|
78 | - 'class %2$s extends Context' . "\n" . |
|
79 | - '{' . "\n" . |
|
80 | - '' . "\n" . |
|
81 | - ' /**' . "\n" . |
|
82 | - ' * List of keywords.' . "\n" . |
|
83 | - ' *' . "\n" . |
|
84 | - ' * The value associated to each keyword represents its flags.' . "\n" . |
|
85 | - ' *' . "\n" . |
|
86 | - ' * @see Token::FLAG_KEYWORD_*' . "\n" . |
|
87 | - ' *' . "\n" . |
|
88 | - ' * @var array' . "\n" . |
|
89 | - ' */' . "\n" . |
|
90 | - ' public static $KEYWORDS = array(' . "\n" . |
|
91 | - '' . "\n" . |
|
92 | - '%4$s' . |
|
93 | - ' );' . "\n" . |
|
94 | - '}' . "\n"; |
|
55 | + '<?php' . "\n" . |
|
56 | + '' . "\n" . |
|
57 | + '/**' . "\n" . |
|
58 | + ' * Context for %1$s.' . "\n" . |
|
59 | + ' *' . "\n" . |
|
60 | + ' * This file was auto-generated.' . "\n" . |
|
61 | + ' *' . "\n" . |
|
62 | + ' * @package SqlParser' . "\n" . |
|
63 | + ' * @subpackage Contexts' . "\n" . |
|
64 | + ' * @link %3$s' . "\n" . |
|
65 | + ' */' . "\n" . |
|
66 | + 'namespace SqlParser\\Contexts;' . "\n" . |
|
67 | + '' . "\n" . |
|
68 | + 'use SqlParser\\Context;' . "\n" . |
|
69 | + '' . "\n" . |
|
70 | + '/**' . "\n" . |
|
71 | + ' * Context for %1$s.' . "\n" . |
|
72 | + ' *' . "\n" . |
|
73 | + ' * @category Contexts' . "\n" . |
|
74 | + ' * @package SqlParser' . "\n" . |
|
75 | + ' * @subpackage Contexts' . "\n" . |
|
76 | + ' * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+' . "\n" . |
|
77 | + ' */' . "\n" . |
|
78 | + 'class %2$s extends Context' . "\n" . |
|
79 | + '{' . "\n" . |
|
80 | + '' . "\n" . |
|
81 | + ' /**' . "\n" . |
|
82 | + ' * List of keywords.' . "\n" . |
|
83 | + ' *' . "\n" . |
|
84 | + ' * The value associated to each keyword represents its flags.' . "\n" . |
|
85 | + ' *' . "\n" . |
|
86 | + ' * @see Token::FLAG_KEYWORD_*' . "\n" . |
|
87 | + ' *' . "\n" . |
|
88 | + ' * @var array' . "\n" . |
|
89 | + ' */' . "\n" . |
|
90 | + ' public static $KEYWORDS = array(' . "\n" . |
|
91 | + '' . "\n" . |
|
92 | + '%4$s' . |
|
93 | + ' );' . "\n" . |
|
94 | + '}' . "\n"; |
|
95 | 95 | |
96 | 96 | /** |
97 | 97 | * Sorts an array of words. |
@@ -286,8 +286,8 @@ discard block |
||
286 | 286 | * @var string |
287 | 287 | */ |
288 | 288 | $formattedName = str_replace( |
289 | - array('Context', 'MySql', '00', '0'), |
|
290 | - array('', 'MySQL ', '', '.'), |
|
289 | + array('Context', 'MySql', '00', '0'), |
|
290 | + array('', 'MySQL ', '', '.'), |
|
291 | 291 | $class |
292 | 292 | ); |
293 | 293 |
@@ -29,14 +29,14 @@ discard block |
||
29 | 29 | * |
30 | 30 | * @var int |
31 | 31 | */ |
32 | - const TYPE_NONE = 0; |
|
32 | + const TYPE_NONE = 0; |
|
33 | 33 | |
34 | 34 | /** |
35 | 35 | * SQL specific keywords: SELECT, UPDATE, INSERT, etc. |
36 | 36 | * |
37 | 37 | * @var int |
38 | 38 | */ |
39 | - const TYPE_KEYWORD = 1; |
|
39 | + const TYPE_KEYWORD = 1; |
|
40 | 40 | |
41 | 41 | /** |
42 | 42 | * Any type of legal operator. |
@@ -50,14 +50,14 @@ discard block |
||
50 | 50 | * |
51 | 51 | * @var int |
52 | 52 | */ |
53 | - const TYPE_OPERATOR = 2; |
|
53 | + const TYPE_OPERATOR = 2; |
|
54 | 54 | |
55 | 55 | /** |
56 | 56 | * Spaces, tabs, new lines, etc. |
57 | 57 | * |
58 | 58 | * @var int |
59 | 59 | */ |
60 | - const TYPE_WHITESPACE = 3; |
|
60 | + const TYPE_WHITESPACE = 3; |
|
61 | 61 | |
62 | 62 | /** |
63 | 63 | * Any type of legal comment. |
@@ -79,21 +79,21 @@ discard block |
||
79 | 79 | * |
80 | 80 | * @var int |
81 | 81 | */ |
82 | - const TYPE_COMMENT = 4; |
|
82 | + const TYPE_COMMENT = 4; |
|
83 | 83 | |
84 | 84 | /** |
85 | 85 | * Boolean values: true or false. |
86 | 86 | * |
87 | 87 | * @var int |
88 | 88 | */ |
89 | - const TYPE_BOOL = 5; |
|
89 | + const TYPE_BOOL = 5; |
|
90 | 90 | |
91 | 91 | /** |
92 | 92 | * Numbers: 4, 0x8, 15.16, 23e42, etc. |
93 | 93 | * |
94 | 94 | * @var int |
95 | 95 | */ |
96 | - const TYPE_NUMBER = 6; |
|
96 | + const TYPE_NUMBER = 6; |
|
97 | 97 | |
98 | 98 | /** |
99 | 99 | * Literal strings: 'string', "test". |
@@ -101,7 +101,7 @@ discard block |
||
101 | 101 | * |
102 | 102 | * @var int |
103 | 103 | */ |
104 | - const TYPE_STRING = 7; |
|
104 | + const TYPE_STRING = 7; |
|
105 | 105 | |
106 | 106 | /** |
107 | 107 | * Database, table names, variables, etc. |
@@ -109,7 +109,7 @@ discard block |
||
109 | 109 | * |
110 | 110 | * @var int |
111 | 111 | */ |
112 | - const TYPE_SYMBOL = 8; |
|
112 | + const TYPE_SYMBOL = 8; |
|
113 | 113 | |
114 | 114 | /** |
115 | 115 | * Delimits an unknown string. |
@@ -117,7 +117,7 @@ discard block |
||
117 | 117 | * |
118 | 118 | * @var int |
119 | 119 | */ |
120 | - const TYPE_DELIMITER = 9; |
|
120 | + const TYPE_DELIMITER = 9; |
|
121 | 121 | |
122 | 122 | /** |
123 | 123 | * Labels in LOOP statement, ITERATE statement etc. |
@@ -129,46 +129,46 @@ discard block |
||
129 | 129 | * |
130 | 130 | * @var int |
131 | 131 | */ |
132 | - const TYPE_LABEL = 10; |
|
132 | + const TYPE_LABEL = 10; |
|
133 | 133 | |
134 | 134 | // Flags that describe the tokens in more detail. |
135 | 135 | // All keywords must have flag 1 so `Context::isKeyword` method doesn't |
136 | 136 | // require strict comparison. |
137 | - const FLAG_KEYWORD_RESERVED = 2; |
|
138 | - const FLAG_KEYWORD_COMPOSED = 4; |
|
139 | - const FLAG_KEYWORD_DATA_TYPE = 8; |
|
137 | + const FLAG_KEYWORD_RESERVED = 2; |
|
138 | + const FLAG_KEYWORD_COMPOSED = 4; |
|
139 | + const FLAG_KEYWORD_DATA_TYPE = 8; |
|
140 | 140 | const FLAG_KEYWORD_KEY = 16; |
141 | 141 | const FLAG_KEYWORD_FUNCTION = 32; |
142 | 142 | |
143 | 143 | // Numbers related flags. |
144 | - const FLAG_NUMBER_HEX = 1; |
|
145 | - const FLAG_NUMBER_FLOAT = 2; |
|
146 | - const FLAG_NUMBER_APPROXIMATE = 4; |
|
147 | - const FLAG_NUMBER_NEGATIVE = 8; |
|
144 | + const FLAG_NUMBER_HEX = 1; |
|
145 | + const FLAG_NUMBER_FLOAT = 2; |
|
146 | + const FLAG_NUMBER_APPROXIMATE = 4; |
|
147 | + const FLAG_NUMBER_NEGATIVE = 8; |
|
148 | 148 | const FLAG_NUMBER_BINARY = 16; |
149 | 149 | |
150 | 150 | // Strings related flags. |
151 | - const FLAG_STRING_SINGLE_QUOTES = 1; |
|
152 | - const FLAG_STRING_DOUBLE_QUOTES = 2; |
|
151 | + const FLAG_STRING_SINGLE_QUOTES = 1; |
|
152 | + const FLAG_STRING_DOUBLE_QUOTES = 2; |
|
153 | 153 | |
154 | 154 | // Comments related flags. |
155 | - const FLAG_COMMENT_BASH = 1; |
|
156 | - const FLAG_COMMENT_C = 2; |
|
157 | - const FLAG_COMMENT_SQL = 4; |
|
158 | - const FLAG_COMMENT_MYSQL_CMD = 8; |
|
155 | + const FLAG_COMMENT_BASH = 1; |
|
156 | + const FLAG_COMMENT_C = 2; |
|
157 | + const FLAG_COMMENT_SQL = 4; |
|
158 | + const FLAG_COMMENT_MYSQL_CMD = 8; |
|
159 | 159 | |
160 | 160 | // Operators related flags. |
161 | - const FLAG_OPERATOR_ARITHMETIC = 1; |
|
162 | - const FLAG_OPERATOR_LOGICAL = 2; |
|
163 | - const FLAG_OPERATOR_BITWISE = 4; |
|
164 | - const FLAG_OPERATOR_ASSIGNMENT = 8; |
|
161 | + const FLAG_OPERATOR_ARITHMETIC = 1; |
|
162 | + const FLAG_OPERATOR_LOGICAL = 2; |
|
163 | + const FLAG_OPERATOR_BITWISE = 4; |
|
164 | + const FLAG_OPERATOR_ASSIGNMENT = 8; |
|
165 | 165 | const FLAG_OPERATOR_SQL = 16; |
166 | 166 | |
167 | 167 | // Symbols related flags. |
168 | - const FLAG_SYMBOL_VARIABLE = 1; |
|
169 | - const FLAG_SYMBOL_BACKTICK = 2; |
|
170 | - const FLAG_SYMBOL_USER = 4; |
|
171 | - const FLAG_SYMBOL_SYSTEM = 8; |
|
168 | + const FLAG_SYMBOL_VARIABLE = 1; |
|
169 | + const FLAG_SYMBOL_BACKTICK = 2; |
|
170 | + const FLAG_SYMBOL_USER = 4; |
|
171 | + const FLAG_SYMBOL_SYSTEM = 8; |
|
172 | 172 | |
173 | 173 | /** |
174 | 174 | * The token it its raw string representation. |
@@ -227,7 +227,7 @@ discard block |
||
227 | 227 | $ret->subquery = $token->value; |
228 | 228 | } elseif (($token->flags & Token::FLAG_KEYWORD_FUNCTION) |
229 | 229 | && (empty($options['parseField']) |
230 | - && ! $alias) |
|
230 | + && !$alias) |
|
231 | 231 | ) { |
232 | 232 | $isExpr = true; |
233 | 233 | } elseif (($token->flags & Token::FLAG_KEYWORD_RESERVED) |
@@ -261,7 +261,7 @@ discard block |
||
261 | 261 | continue; |
262 | 262 | } |
263 | 263 | $isExpr = true; |
264 | - } elseif ($brackets === 0 && strlen($ret->expr) > 0 && ! $alias) { |
|
264 | + } elseif ($brackets === 0 && strlen($ret->expr) > 0 && !$alias) { |
|
265 | 265 | /* End of expression */ |
266 | 266 | break; |
267 | 267 | } |
@@ -223,7 +223,7 @@ |
||
223 | 223 | // We have reached the end of ALTER operation and suddenly found |
224 | 224 | // a start to new statement, but have not find a delimiter between them |
225 | 225 | |
226 | - if (! ($token->value == 'SET' && $list->tokens[$list->idx - 1]->value == 'CHARACTER')) { |
|
226 | + if (!($token->value == 'SET' && $list->tokens[$list->idx - 1]->value == 'CHARACTER')) { |
|
227 | 227 | $parser->error( |
228 | 228 | 'A new statement was found, but no delimiter between it and the previous one.', |
229 | 229 | $token |
@@ -481,7 +481,7 @@ |
||
481 | 481 | if ($clauseStartIdx != -1) { |
482 | 482 | if ($joinStart == 0 && stripos($clauseType, 'JOIN')) { |
483 | 483 | $joinStart = 1; |
484 | - } elseif ($joinStart == 1 && ! stripos($clauseType, 'JOIN')) { |
|
484 | + } elseif ($joinStart == 1 && !stripos($clauseType, 'JOIN')) { |
|
485 | 485 | $joinStart = 2; |
486 | 486 | } elseif ($joinStart == 2 && stripos($clauseType, 'JOIN')) { |
487 | 487 | $error = 1; |
@@ -349,7 +349,7 @@ discard block |
||
349 | 349 | // pieces only if the clause is not inlined or this fragment |
350 | 350 | // is between brackets that are on new line. |
351 | 351 | if (((empty(self::$INLINE_CLAUSES[$lastClause])) |
352 | - && ! $shortGroup |
|
352 | + && !$shortGroup |
|
353 | 353 | && ($this->options['parts_newline'])) |
354 | 354 | || (end($blocksLineEndings) === true) |
355 | 355 | ) { |
@@ -435,9 +435,9 @@ discard block |
||
435 | 435 | array( |
436 | 436 | "\x00", "\x01", "\x02", "\x03", "\x04", |
437 | 437 | "\x05", "\x06", "\x07", "\x08", "\x09", "\x0A", |
438 | - "\x0B","\x0C","\x0D", "\x0E", "\x0F", "\x10", "\x11", |
|
439 | - "\x12","\x13","\x14","\x15", "\x16", "\x17", "\x18", |
|
440 | - "\x19","\x1A","\x1B","\x1C","\x1D", "\x1E", "\x1F" |
|
438 | + "\x0B", "\x0C", "\x0D", "\x0E", "\x0F", "\x10", "\x11", |
|
439 | + "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", |
|
440 | + "\x19", "\x1A", "\x1B", "\x1C", "\x1D", "\x1E", "\x1F" |
|
441 | 441 | ), |
442 | 442 | array( |
443 | 443 | '\x00', '\x01', '\x02', '\x03', '\x04', |