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

View File

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