Skip to content

Commit 3096ffa

Browse files
committed
pdo_sqlite: identifier quoting with square brakets
1 parent 01879ec commit 3096ffa

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

ext/pdo_sqlite/sqlite_sql_parser.re

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ int pdo_sqlite_scanner(pdo_scanner_t *s)
2828
/*!re2c
2929
BINDCHR = [:][a-zA-Z0-9_]+;
3030
QUESTION = [?];
31-
COMMENTS = ("/*"([^*]+|[*]+[^/*])*[*]*"*/"|"--"[^\r\n]*);
32-
SPECIALS = [:?"'`/-];
31+
COMMENTS = ("/*"([^*]+|[*]+[^/*])*[*]*"*/"|"--".*);
32+
SPECIALS = [:?"'`/[-];
3333
MULTICHAR = ([:]{2,}|[?]{2,});
3434
ANYNOEOF = [\001-\377];
3535
*/
@@ -38,6 +38,7 @@ int pdo_sqlite_scanner(pdo_scanner_t *s)
3838
(["]((["]["])|ANYNOEOF)*["]) { RET(PDO_PARSER_TEXT); }
3939
(['](([']['])|ANYNOEOF)*[']) { RET(PDO_PARSER_TEXT); }
4040
([`](([`][`])|ANYNOEOF)*[`]) { RET(PDO_PARSER_TEXT); }
41+
("["ANYNOEOF*"]") { RET(PDO_PARSER_TEXT); }
4142
MULTICHAR { RET(PDO_PARSER_TEXT); }
4243
BINDCHR { RET(PDO_PARSER_BIND); }
4344
QUESTION { RET(PDO_PARSER_BIND_POS); }

ext/pdo_sqlite/tests/pdo_sqlite_parser.phpt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@ foreach ($queries as $k => $query) {
3131
// One parameter
3232
$queries = [
3333
"SELECT * FROM {$table} WHERE '1' = ?",
34-
"SELECT * FROM {$table} WHERE \"?\" IN (?, '?')",
34+
"SELECT * FROM {$table} WHERE \"?\" IN (?, \"?\")",
3535
"SELECT * FROM {$table} WHERE `a``?` = ?",
36+
"SELECT * FROM {$table} WHERE \"a`?\" = ?",
37+
"SELECT * FROM {$table} WHERE [a`?] = ?",
3638
];
3739

3840
foreach ($queries as $k => $query) {
@@ -56,3 +58,5 @@ bool(true)
5658
bool(true)
5759
bool(true)
5860
bool(true)
61+
bool(true)
62+
bool(true)

0 commit comments

Comments
 (0)