Quote index columns that need it

This commit is contained in:
Bart Visscher 2013-03-17 17:00:07 +01:00
parent 2866376f34
commit 947e03aab5
2 changed files with 10 additions and 4 deletions

View File

@ -9,10 +9,12 @@
class OC_DB_MDB2SchemaReader {
static protected $DBNAME;
static protected $DBTABLEPREFIX;
static protected $platform;
public static function loadSchemaFromFile($file) {
public static function loadSchemaFromFile($file, $platform) {
self::$DBNAME = OC_Config::getValue( "dbname", "owncloud" );
self::$DBTABLEPREFIX = OC_Config::getValue( "dbtableprefix", "oc_" );
self::$platform = $platform;
$schema = new \Doctrine\DBAL\Schema\Schema();
$xml = simplexml_load_file($file);
foreach($xml->children() as $child) {
@ -173,6 +175,10 @@ class OC_DB_MDB2SchemaReader {
switch($field->getName()) {
case 'name':
$field_name = (string)$field;
$keywords = self::$platform->getReservedKeywordsList();
if ($keywords->isKeyword($field_name)) {
$field_name = self::$platform->quoteIdentifier($field_name);
}
$fields[] = $field_name;
break;
case 'sorting':

View File

@ -32,7 +32,7 @@ class OC_DB_Schema {
* TODO: write more documentation
*/
public static function createDbFromStructure( $conn, $file ) {
$toSchema = OC_DB_MDB2SchemaReader::loadSchemaFromFile($file);
$toSchema = OC_DB_MDB2SchemaReader::loadSchemaFromFile($file, $conn->getDatabasePlatform());
return self::executeSchemaChange($conn, $toSchema);
}
@ -45,7 +45,7 @@ class OC_DB_Schema {
$sm = $conn->getSchemaManager();
$fromSchema = $sm->createSchema();
$toSchema = OC_DB_MDB2SchemaReader::loadSchemaFromFile($file);
$toSchema = OC_DB_MDB2SchemaReader::loadSchemaFromFile($file, $conn->getDatabasePlatform());
// remove tables we don't know about
foreach($fromSchema->getTables() as $table) {
@ -84,7 +84,7 @@ class OC_DB_Schema {
* @param string $file the xml file describing the tables
*/
public static function removeDBStructure($conn, $file) {
$fromSchema = OC_DB_MDB2SchemaReader::loadSchemaFromFile($file);
$fromSchema = OC_DB_MDB2SchemaReader::loadSchemaFromFile($file, $conn->getDatabasePlatform());
$toSchema = clone $fromSchema;
foreach($toSchema->getTables() as $table) {
$toSchema->dropTable($table->getName());