Skip to content

Commit 179ff5d

Browse files
authored
Merge pull request #3030 from Majkl578/ticket/2885-rework
Drop PCRE x modifier in SqliteSchemaManager (#2885 rework)
2 parents 684122c + ff0a1d4 commit 179ff5d

File tree

2 files changed

+152
-2
lines changed

2 files changed

+152
-2
lines changed

lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ private function getTableDiffForAlterForeignKey(ForeignKeyConstraint $foreignKey
439439
private function parseColumnCollationFromSQL(string $column, string $sql) : ?string
440440
{
441441
$pattern = '{(?:\W' . preg_quote($column) . '\W|\W' . preg_quote($this->_platform->quoteSingleIdentifier($column))
442-
. '\W)[^,(]+(?:\([^()]+\)[^,]*)?(?:(?:DEFAULT|CHECK)\s*(?:\(.*?\))?[^,]*)*COLLATE\s+["\']?([^\s,"\')]+)}isx';
442+
. '\W)[^,(]+(?:\([^()]+\)[^,]*)?(?:(?:DEFAULT|CHECK)\s*(?:\(.*?\))?[^,]*)*COLLATE\s+["\']?([^\s,"\')]+)}is';
443443

444444
if (preg_match($pattern, $sql, $match) !== 1) {
445445
return null;
@@ -451,7 +451,7 @@ private function parseColumnCollationFromSQL(string $column, string $sql) : ?str
451451
private function parseColumnCommentFromSQL(string $column, string $sql) : ?string
452452
{
453453
$pattern = '{[\s(,](?:\W' . preg_quote($this->_platform->quoteSingleIdentifier($column)) . '\W|\W' . preg_quote($column)
454-
. '\W)(?:\(.*?\)|[^,(])*?,?((?:(?!\n))(?:\s*--[^\n]*\n?)+)}ix';
454+
. '\W)(?:\(.*?\)|[^,(])*?,?((?:(?!\n))(?:\s*--[^\n]*\n?)+)}i';
455455

456456
if (preg_match($pattern, $sql, $match) !== 1) {
457457
return null;

tests/Doctrine/Tests/DBAL/Schema/SqliteSchemaManagerTest.php

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ public function getDataColumnCollation()
3636
['BINARY', 'b', 'CREATE TABLE "a" (bb TEXT COLLATE RTRIM, b VARCHAR(42) NOT NULL COLLATE BINARY)'],
3737
['BINARY', 'b', 'CREATE TABLE "a" (bbb TEXT COLLATE NOCASE, bb TEXT COLLATE RTRIM, b VARCHAR(42) NOT NULL COLLATE BINARY)'],
3838
['BINARY', 'b', 'CREATE TABLE "a" (b VARCHAR(42) NOT NULL COLLATE BINARY, bb TEXT COLLATE RTRIM)'],
39+
['utf-8', 'bar#', 'CREATE TABLE dummy_table (id INTEGER NOT NULL, foo VARCHAR(255) COLLATE "utf-8" NOT NULL, "bar#" VARCHAR(255) COLLATE "utf-8" NOT NULL, baz VARCHAR(255) COLLATE "utf-8" NOT NULL, PRIMARY KEY(id))'],
40+
[null, 'bar#', 'CREATE TABLE dummy_table (id INTEGER NOT NULL, foo VARCHAR(255) NOT NULL, "bar#" VARCHAR(255) NOT NULL, baz VARCHAR(255) NOT NULL, PRIMARY KEY(id))'],
41+
['utf-8', 'baz', 'CREATE TABLE dummy_table (id INTEGER NOT NULL, foo VARCHAR(255) COLLATE "utf-8" NOT NULL, "bar#" INTEGER NOT NULL, baz VARCHAR(255) COLLATE "utf-8" NOT NULL, PRIMARY KEY(id))'],
42+
[null, 'baz', 'CREATE TABLE dummy_table (id INTEGER NOT NULL, foo VARCHAR(255) NOT NULL, "bar#" INTEGER NOT NULL, baz VARCHAR(255) NOT NULL, PRIMARY KEY(id))'],
43+
['utf-8', 'bar/', 'CREATE TABLE dummy_table (id INTEGER NOT NULL, foo VARCHAR(255) COLLATE "utf-8" NOT NULL, "bar/" VARCHAR(255) COLLATE "utf-8" NOT NULL, baz VARCHAR(255) COLLATE "utf-8" NOT NULL, PRIMARY KEY(id))'],
44+
[null, 'bar/', 'CREATE TABLE dummy_table (id INTEGER NOT NULL, foo VARCHAR(255) NOT NULL, "bar/" VARCHAR(255) NOT NULL, baz VARCHAR(255) NOT NULL, PRIMARY KEY(id))'],
45+
['utf-8', 'baz', 'CREATE TABLE dummy_table (id INTEGER NOT NULL, foo VARCHAR(255) COLLATE "utf-8" NOT NULL, "bar/" INTEGER NOT NULL, baz VARCHAR(255) COLLATE "utf-8" NOT NULL, PRIMARY KEY(id))'],
46+
[null, 'baz', 'CREATE TABLE dummy_table (id INTEGER NOT NULL, foo VARCHAR(255) NOT NULL, "bar/" INTEGER NOT NULL, baz VARCHAR(255) NOT NULL, PRIMARY KEY(id))'],
3947
];
4048
}
4149

@@ -97,6 +105,148 @@ public function getDataColumnComment()
97105
, "c" CHAR(36) NOT NULL --(DC2Type:guid)
98106
)',
99107
],
108+
'Column with numeric but no comment 4' => [
109+
'(DC2Type:array)',
110+
'b',
111+
'CREATE TABLE "b" ("a" NUMERIC(10, 0) NOT NULL,
112+
"b" CLOB NOT NULL, --(DC2Type:array)
113+
"c" CHAR(36) NOT NULL --(DC2Type:guid)
114+
)',
115+
],
116+
'Column "bar", select "bar" with no comment' => [
117+
null,
118+
'bar',
119+
'CREATE TABLE dummy_table (
120+
id INTEGER NOT NULL,
121+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
122+
"bar" VARCHAR(255) COLLATE "utf-8" NOT NULL,
123+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL,
124+
PRIMARY KEY(id)
125+
)',
126+
],
127+
'Column "bar", select "bar" with type comment' => [
128+
'(DC2Type:x)',
129+
'bar',
130+
'CREATE TABLE dummy_table (
131+
id INTEGER NOT NULL,
132+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
133+
"bar" VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:x)
134+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:y)
135+
PRIMARY KEY(id)
136+
)',
137+
],
138+
'Column "bar", select "baz" with no comment' => [
139+
null,
140+
'baz',
141+
'CREATE TABLE dummy_table (
142+
id INTEGER NOT NULL,
143+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
144+
"bar" INTEGER NOT NULL,
145+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL,
146+
PRIMARY KEY(id)
147+
)',
148+
],
149+
'Column "bar", select "baz" with type comment' => [
150+
'(DC2Type:y)',
151+
'baz',
152+
'CREATE TABLE dummy_table (
153+
id INTEGER NOT NULL,
154+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
155+
"bar" INTEGER NOT NULL, --(DC2Type:x)
156+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:y)
157+
PRIMARY KEY(id)
158+
)',
159+
],
160+
161+
'Column "bar#", select "bar#" with no comment' => [
162+
null,
163+
'bar#',
164+
'CREATE TABLE dummy_table (
165+
id INTEGER NOT NULL,
166+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
167+
"bar#" VARCHAR(255) COLLATE "utf-8" NOT NULL,
168+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL,
169+
PRIMARY KEY(id)
170+
)',
171+
],
172+
'Column "bar#", select "bar#" with type comment' => [
173+
'(DC2Type:x)',
174+
'bar#',
175+
'CREATE TABLE dummy_table (
176+
id INTEGER NOT NULL,
177+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
178+
"bar#" VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:x)
179+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:y)
180+
PRIMARY KEY(id)
181+
)',
182+
],
183+
'Column "bar#", select "baz" with no comment' => [
184+
null,
185+
'baz',
186+
'CREATE TABLE dummy_table (
187+
id INTEGER NOT NULL,
188+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
189+
"bar#" INTEGER NOT NULL,
190+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL,
191+
PRIMARY KEY(id)
192+
)',
193+
],
194+
'Column "bar#", select "baz" with type comment' => [
195+
'(DC2Type:y)',
196+
'baz',
197+
'CREATE TABLE dummy_table (
198+
id INTEGER NOT NULL,
199+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
200+
"bar#" INTEGER NOT NULL, --(DC2Type:x)
201+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:y)
202+
PRIMARY KEY(id)
203+
)',
204+
],
205+
206+
'Column "bar/", select "bar/" with no comment' => [
207+
null,
208+
'bar/',
209+
'CREATE TABLE dummy_table (
210+
id INTEGER NOT NULL,
211+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
212+
"bar/" VARCHAR(255) COLLATE "utf-8" NOT NULL,
213+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL,
214+
PRIMARY KEY(id)
215+
)',
216+
],
217+
'Column "bar/", select "bar/" with type comment' => [
218+
'(DC2Type:x)',
219+
'bar/',
220+
'CREATE TABLE dummy_table (
221+
id INTEGER NOT NULL,
222+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
223+
"bar/" VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:x)
224+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:y)
225+
PRIMARY KEY(id)
226+
)',
227+
],
228+
'Column "bar/", select "baz" with no comment' => [
229+
null,
230+
'baz',
231+
'CREATE TABLE dummy_table (
232+
id INTEGER NOT NULL,
233+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
234+
"bar/" INTEGER NOT NULL,
235+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL,
236+
PRIMARY KEY(id)
237+
)',
238+
],
239+
'Column "bar/", select "baz" with type comment' => [
240+
'(DC2Type:y)',
241+
'baz',
242+
'CREATE TABLE dummy_table (
243+
id INTEGER NOT NULL,
244+
foo VARCHAR(255) COLLATE "utf-8" NOT NULL,
245+
"bar/" INTEGER COLLATE "utf-8" NOT NULL, --(DC2Type:x)
246+
baz VARCHAR(255) COLLATE "utf-8" NOT NULL, --(DC2Type:y)
247+
PRIMARY KEY(id)
248+
)',
249+
],
100250
];
101251
}
102252
}

0 commit comments

Comments
 (0)