Skip to content

Commit 1a1200a

Browse files
committed
fix mssql tests
1 parent 5f74a9b commit 1a1200a

11 files changed

+164
-365
lines changed

api.php

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2178,7 +2178,7 @@ private function getSetColumnPkConstraintSQL(String $tableName, String $columnNa
21782178
return "ALTER TABLE $p1 $p4";
21792179
case 'pgsql':
21802180
case 'sqlsrv':
2181-
$p4 = $newColumn->getPk() ? "ADD PRIMARY KEY ($p2)" : "DROP CONSTRAINT $p3";
2181+
$p4 = $newColumn->getPk() ? "ADD CONSTRAINT $p3 PRIMARY KEY ($p2)" : "DROP CONSTRAINT $p3";
21822182
return "ALTER TABLE $p1 $p4";
21832183
}
21842184
}
@@ -2203,15 +2203,17 @@ private function getSetColumnPkSequenceStartSQL(String $tableName, String $colum
22032203
{
22042204
$p1 = $this->quote($tableName);
22052205
$p2 = $this->quote($columnName);
2206-
$p3 = $this->pdo->quote($tableName . '_' . $columnName . '_seq');
2207-
2206+
22082207
switch ($this->driver) {
22092208
case 'mysql':
22102209
return "select 1";
22112210
case 'pgsql':
2211+
$p3 = $this->pdo->quote($tableName . '_' . $columnName . '_seq');
22122212
return "SELECT setval($p3, (SELECT max($p2)+1 FROM $p1));";
22132213
case 'sqlsrv':
2214-
return "ALTER SEQUENCE $p3 RESTART WITH (SELECT max($p2)+1 FROM $p1)";
2214+
$p3 = $this->quote($tableName . '_' . $columnName . '_seq');
2215+
$p4 = $this->pdo->query("SELECT max($p2)+1 FROM $p1")->fetchColumn();
2216+
return "ALTER SEQUENCE $p3 RESTART WITH $p4";
22152217
}
22162218
}
22172219

@@ -2234,8 +2236,8 @@ private function getSetColumnPkDefaultSQL(String $tableName, String $columnName,
22342236
}
22352237
return "ALTER TABLE $p1 ALTER COLUMN $p2 $p4";
22362238
case 'sqlsrv':
2237-
$p3 = $this->pdo->quote($tableName . '_' . $columnName . '_seq');
2238-
$p4 = $this->quote('DF_' . $tableName . '_' . $columnName);
2239+
$p3 = $this->quote($tableName . '_' . $columnName . '_seq');
2240+
$p4 = $this->quote($tableName . '_' . $columnName . '_def');
22392241
if ($newColumn->getPk()) {
22402242
return "ALTER TABLE $p1 ADD CONSTRAINT $p4 DEFAULT NEXT VALUE FOR $p3 FOR $p2";
22412243
} else {
@@ -2301,22 +2303,40 @@ private function getAddColumnSQL(String $tableName, ReflectedColumn $newColumn):
23012303
$p2 = $this->quote($newColumn->getName());
23022304
$p3 = $this->getColumnType($newColumn, false);
23032305

2304-
return "ALTER TABLE $p1 ADD COLUMN $p2 $p3";
2306+
switch ($this->driver) {
2307+
case 'mysql':
2308+
case 'pgsql':
2309+
return "ALTER TABLE $p1 ADD COLUMN $p2 $p3";
2310+
case 'sqlsrv':
2311+
return "ALTER TABLE $p1 ADD $p2 $p3";
2312+
}
23052313
}
23062314

23072315
private function getRemoveTableSQL(String $tableName): String
23082316
{
23092317
$p1 = $this->quote($tableName);
23102318

2311-
return "DROP TABLE $p1 CASCADE;";
2319+
switch ($this->driver) {
2320+
case 'mysql':
2321+
case 'pgsql':
2322+
return "DROP TABLE $p1 CASCADE;";
2323+
case 'sqlsrv':
2324+
return "DROP TABLE $p1;";
2325+
}
23122326
}
23132327

23142328
private function getRemoveColumnSQL(String $tableName, String $columnName): String
23152329
{
23162330
$p1 = $this->quote($tableName);
23172331
$p2 = $this->quote($columnName);
23182332

2319-
return "ALTER TABLE $p1 DROP COLUMN $p2 CASCADE;";
2333+
switch ($this->driver) {
2334+
case 'mysql':
2335+
case 'pgsql':
2336+
return "ALTER TABLE $p1 DROP COLUMN $p2 CASCADE;";
2337+
case 'sqlsrv':
2338+
return "ALTER TABLE $p1 DROP COLUMN $p2;";
2339+
}
23202340
}
23212341

23222342
public function renameTable(String $tableName, String $newTableName)

src/Tqdev/PhpCrudApi/Database/GenericDefinition.php

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ private function getSetColumnPkConstraintSQL(String $tableName, String $columnNa
163163
return "ALTER TABLE $p1 $p4";
164164
case 'pgsql':
165165
case 'sqlsrv':
166-
$p4 = $newColumn->getPk() ? "ADD PRIMARY KEY ($p2)" : "DROP CONSTRAINT $p3";
166+
$p4 = $newColumn->getPk() ? "ADD CONSTRAINT $p3 PRIMARY KEY ($p2)" : "DROP CONSTRAINT $p3";
167167
return "ALTER TABLE $p1 $p4";
168168
}
169169
}
@@ -188,15 +188,17 @@ private function getSetColumnPkSequenceStartSQL(String $tableName, String $colum
188188
{
189189
$p1 = $this->quote($tableName);
190190
$p2 = $this->quote($columnName);
191-
$p3 = $this->pdo->quote($tableName . '_' . $columnName . '_seq');
192-
191+
193192
switch ($this->driver) {
194193
case 'mysql':
195194
return "select 1";
196195
case 'pgsql':
196+
$p3 = $this->pdo->quote($tableName . '_' . $columnName . '_seq');
197197
return "SELECT setval($p3, (SELECT max($p2)+1 FROM $p1));";
198198
case 'sqlsrv':
199-
return "ALTER SEQUENCE $p3 RESTART WITH (SELECT max($p2)+1 FROM $p1)";
199+
$p3 = $this->quote($tableName . '_' . $columnName . '_seq');
200+
$p4 = $this->pdo->query("SELECT max($p2)+1 FROM $p1")->fetchColumn();
201+
return "ALTER SEQUENCE $p3 RESTART WITH $p4";
200202
}
201203
}
202204

@@ -219,8 +221,8 @@ private function getSetColumnPkDefaultSQL(String $tableName, String $columnName,
219221
}
220222
return "ALTER TABLE $p1 ALTER COLUMN $p2 $p4";
221223
case 'sqlsrv':
222-
$p3 = $this->pdo->quote($tableName . '_' . $columnName . '_seq');
223-
$p4 = $this->quote('DF_' . $tableName . '_' . $columnName);
224+
$p3 = $this->quote($tableName . '_' . $columnName . '_seq');
225+
$p4 = $this->quote($tableName . '_' . $columnName . '_def');
224226
if ($newColumn->getPk()) {
225227
return "ALTER TABLE $p1 ADD CONSTRAINT $p4 DEFAULT NEXT VALUE FOR $p3 FOR $p2";
226228
} else {
@@ -286,22 +288,42 @@ private function getAddColumnSQL(String $tableName, ReflectedColumn $newColumn):
286288
$p2 = $this->quote($newColumn->getName());
287289
$p3 = $this->getColumnType($newColumn, false);
288290

289-
return "ALTER TABLE $p1 ADD COLUMN $p2 $p3";
291+
292+
switch ($this->driver) {
293+
case 'mysql':
294+
case 'pgsql':
295+
return "ALTER TABLE $p1 ADD COLUMN $p2 $p3";
296+
case 'sqlsrv':
297+
return "ALTER TABLE $p1 ADD $p2 $p3";
298+
}
290299
}
291300

292301
private function getRemoveTableSQL(String $tableName): String
293302
{
294303
$p1 = $this->quote($tableName);
295304

296-
return "DROP TABLE $p1 CASCADE;";
305+
switch ($this->driver) {
306+
case 'mysql':
307+
case 'pgsql':
308+
return "DROP TABLE $p1 CASCADE;";
309+
case 'sqlsrv':
310+
return "DROP TABLE $p1;";
311+
}
297312
}
298313

299314
private function getRemoveColumnSQL(String $tableName, String $columnName): String
300315
{
301316
$p1 = $this->quote($tableName);
302317
$p2 = $this->quote($columnName);
303318

304-
return "ALTER TABLE $p1 DROP COLUMN $p2 CASCADE;";
319+
320+
switch ($this->driver) {
321+
case 'mysql':
322+
case 'pgsql':
323+
return "ALTER TABLE $p1 DROP COLUMN $p2 CASCADE;";
324+
case 'sqlsrv':
325+
return "ALTER TABLE $p1 DROP COLUMN $p2;";
326+
}
305327
}
306328

307329
public function renameTable(String $tableName, String $newTableName)

0 commit comments

Comments
 (0)