Fixes #13582: Added tests for all yii\db\QueryBuilder::resetSequence implementations, fixed SQLite implementation

This commit is contained in:
Bob Olde Hampsink
2017-02-20 21:04:04 +01:00
committed by Alexander Makarov
parent 56c65f6079
commit fab53b4a6e
8 changed files with 73 additions and 5 deletions

View File

@@ -134,13 +134,13 @@ class QueryBuilder extends \yii\db\QueryBuilder
$key = reset($table->primaryKey);
$tableName = $db->quoteTableName($tableName);
$value = $this->db->useMaster(function (Connection $db) use ($key, $tableName) {
return $db->createCommand("SELECT MAX('$key') FROM $tableName")->queryScalar();
return $db->createCommand("SELECT MAX($key) FROM $tableName")->queryScalar();
});
} else {
$value = (int) $value - 1;
}
try {
$db->createCommand("UPDATE sqlite_sequence SET seq='$value' WHERE name='{$table->name}'")->execute();
return "UPDATE sqlite_sequence SET seq='$value' WHERE name='{$table->name}'";
} catch (Exception $e) {
// it's possible that sqlite_sequence does not exist
}