Use a special filter expression for Oracle to filter the prefix - fixes #13220
This commit is contained in:
parent
ddf81c2ed9
commit
1d2bef0a01
|
@ -228,8 +228,9 @@ class ConvertType extends Command {
|
|||
}
|
||||
|
||||
protected function getTables(Connection $db) {
|
||||
$filterExpression = '/^' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
|
||||
$db->getConfiguration()->
|
||||
setFilterSchemaAssetsExpression('/^'.$this->config->getSystemValue('dbtableprefix', 'oc_').'/');
|
||||
setFilterSchemaAssetsExpression($filterExpression);
|
||||
return $db->getSchemaManager()->listTableNames();
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,13 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getPrefix() {
|
||||
return $this->tablePrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes a new instance of the Connection class.
|
||||
*
|
||||
|
|
|
@ -22,8 +22,13 @@ class OC_DB_MDB2SchemaWriter {
|
|||
$xml->addChild('overwrite', 'false');
|
||||
$xml->addChild('charset', 'utf8');
|
||||
|
||||
$conn->getConfiguration()->
|
||||
setFilterSchemaAssetsExpression('/^' . $config->getSystemValue('dbtableprefix', 'oc_') . '/');
|
||||
// FIX ME: bloody work around
|
||||
if ($config->getSystemValue('dbtype', 'sqlite') === 'oci') {
|
||||
$filterExpression = '/^"' . preg_quote($conn->getPrefix()) . '/';
|
||||
} else {
|
||||
$filterExpression = '/^' . preg_quote($conn->getPrefix()) . '/';
|
||||
}
|
||||
$conn->getConfiguration()->setFilterSchemaAssetsExpression($filterExpression);
|
||||
|
||||
foreach ($conn->getSchemaManager()->listTables() as $table) {
|
||||
self::saveTable($table, $xml->addChild('table'));
|
||||
|
|
|
@ -75,9 +75,9 @@ class Migrator {
|
|||
* @var \Doctrine\DBAL\Schema\Table[] $tables
|
||||
*/
|
||||
$tables = $targetSchema->getTables();
|
||||
|
||||
$filterExpression = $this->getFilterExpression();
|
||||
$this->connection->getConfiguration()->
|
||||
setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
|
||||
setFilterSchemaAssetsExpression($filterExpression);
|
||||
$existingTables = $this->connection->getSchemaManager()->listTableNames();
|
||||
|
||||
foreach ($tables as $table) {
|
||||
|
@ -161,8 +161,9 @@ class Migrator {
|
|||
}
|
||||
|
||||
protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) {
|
||||
$connection->getConfiguration()->
|
||||
setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
|
||||
$filterExpression = $this->getFilterExpression();
|
||||
$this->connection->getConfiguration()->
|
||||
setFilterSchemaAssetsExpression($filterExpression);
|
||||
$sourceSchema = $connection->getSchemaManager()->createSchema();
|
||||
|
||||
// remove tables we don't know about
|
||||
|
@ -230,4 +231,8 @@ class Migrator {
|
|||
$script .= PHP_EOL;
|
||||
return $script;
|
||||
}
|
||||
|
||||
protected function getFilterExpression() {
|
||||
return '/^' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,4 +51,9 @@ class OracleMigrator extends NoCheckMigrator {
|
|||
$script .= PHP_EOL;
|
||||
return $script;
|
||||
}
|
||||
|
||||
protected function getFilterExpression() {
|
||||
return '/^"' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -32,9 +32,9 @@ class PgSqlTools {
|
|||
* @return null
|
||||
*/
|
||||
public function resynchronizeDatabaseSequences(Connection $conn) {
|
||||
$filterExpression = '/^' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
|
||||
$databaseName = $conn->getDatabase();
|
||||
$conn->getConfiguration()->
|
||||
setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
|
||||
$conn->getConfiguration()->setFilterSchemaAssetsExpression($filterExpression);
|
||||
|
||||
foreach ($conn->getSchemaManager()->listSequences() as $sequence) {
|
||||
$sequenceName = $sequence->getName();
|
||||
|
|
Loading…
Reference in New Issue