Skip to content
Snippets Groups Projects
Commit 122149b8 authored by Tim van Dijen's avatar Tim van Dijen
Browse files

Rewrite table upgrade for SQLite

parent 89f2aae4
No related branches found
No related tags found
No related merge requests found
......@@ -50,17 +50,40 @@ class LogoutStore
switch ($store->driver) {
case 'pgsql':
// This does not affect the NOT NULL constraint
$query = 'ALTER TABLE '.$store->prefix.
'_saml_LogoutStore ALTER COLUMN _authSource TYPE VARCHAR(255)';
$update = ['ALTER TABLE '.$store->prefix.
'_saml_LogoutStore ALTER COLUMN _authSource TYPE VARCHAR(255)'];
break;
case 'sqlite':
/**
* TableVersion 2 increased the column size to 255 which is the maximum length of a FQDN
* Because SQLite does not support field alterations, the approach is to:
* Create a new table without the proper column size
* Copy the current data to the new table
* Drop the old table
* Rename the new table correctly
* Read the index
*/
$update = [
'CREATE TABLE '.$store->prefix.'_saml_LogoutStore_new (_authSource VARCHAR(255) NOT NULL,'.
'_nameId VARCHAR(40) NOT NULL, _sessionIndex VARCHAR(50) NOT NULL, _expire TIMESTAMP NOT NULL,'.
'_sessionId VARCHAR(50) NOT NULL, UNIQUE (_authSource, _nameID, _sessionIndex))',
'INSERT INTO '.$store->prefix.'_saml_LogoutStore_new SELECT * FROM '.$store->prefix.'_saml_LogoutStore',
'DROP TABLE '.$store->prefix.'_saml_LogoutStore',
'ALTER TABLE '.$store->prefix.'_saml_LogoutStore_new RENAME TO '.$store->prefix.'_saml_LogoutStore',
'CREATE INDEX '.$store->prefix.'_saml_LogoutStore_expire ON '.$store->prefix.'_saml_LogoutStore (_expire)',
'CREATE INDEX '.$store->prefix.'_saml_LogoutStore_nameId ON '.$store->prefix.'_saml_LogoutStore (_authSource, _nameId)'
];
break;
default:
$query = 'ALTER TABLE '.$store->prefix.
'_saml_LogoutStore MODIFY _authSource VARCHAR(255) NOT NULL';
$update = ['ALTER TABLE '.$store->prefix.
'_saml_LogoutStore MODIFY _authSource VARCHAR(255) NOT NULL'];
break;
}
try {
$store->pdo->exec($query);
foreach ($update as $query) {
$store->pdo->exec($query);
}
} catch (\Exception $e) {
Logger::warning('Database error: '.var_export($store->pdo->errorInfo(), true));
return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment