Skip to content

Commit 6d5983d

Browse files
committed
BaseDriver: fix parsing of SQL with consecutive delimiters [closes #112]
1 parent bfc8b0a commit 6d5983d

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

src/Drivers/BaseDriver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public function loadFile($path)
8686
];
8787

8888
while (TRUE) {
89-
if (preg_match($delimiterRe, $content, $match, 0, $queryOffset)) {
89+
while (preg_match($delimiterRe, $content, $match, 0, $queryOffset)) {
9090
$delimiter = $match[1];
9191
$queryOffset += strlen($match[0]);
9292
$parseOffset += strlen($match[0]);

tests/cases/unit/BaseDriverTest.phpt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,30 @@ class BaseDriverTest extends Tester\TestCase
9595
"\n--\nSELECT 2",
9696
],
9797
],
98+
[
99+
implode("\n", [
100+
'DELIMITER ;;',
101+
'SELECT 1;;',
102+
'DELIMITER ;',
103+
'DELIMITER ;;',
104+
'SELECT 2;;',
105+
'DELIMITER ;',
106+
]),
107+
[
108+
"\nSELECT 1",
109+
"\nSELECT 2",
110+
]
111+
],
112+
[
113+
implode("\n", [
114+
'SELECT 1;',
115+
'DELIMITER ;;',
116+
'DELIMITER ;',
117+
]),
118+
[
119+
"SELECT 1",
120+
]
121+
],
98122
];
99123
}
100124
}

0 commit comments

Comments
 (0)