Permalink
Browse files

Fix SQL Platform/Schema Manager problems.

  • Loading branch information...
beberlei committed Jan 16, 2012
1 parent b6a4eca commit c878bd033649cda0bcbccd9b5fad8b5d66885931
View
@@ -22,7 +22,7 @@ to SQLServerSchemaManager.
## Cleanup SQLServer Platform version mess
DBAL 2.1 and before were actually only compatible to SQL Server 2008, not earlier versions.
-Still other parts of the platform did use old features instead of newly introced datatypes
+Still other parts of the platform did use old features instead of newly introduced datatypes
in SQL Server 2005. Starting with DBAL 2.2 you can pick the Doctrine abstraction exactly
matching your SQL Server version.
@@ -63,7 +63,7 @@ private function _constructPdoDsn(array $params)
public function getDatabasePlatform()
{
- return new \Doctrine\DBAL\Platforms\SQLServer2005Platform();
+ return new \Doctrine\DBAL\Platforms\SQLServer2008Platform();
}
public function getSchemaManager(\Doctrine\DBAL\Connection $conn)
@@ -35,37 +35,18 @@
*/
class SQLServer2005Platform extends SQLServerPlatform
{
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- // 3 - microseconds precision length
- // http://msdn.microsoft.com/en-us/library/ms187819.aspx
- return 'DATETIME';
- }
-
- /**
- * @override
- */
- public function getDateTimeFormatString()
- {
- return 'Y-m-d H:i:s.000';
- }
-
- /**
- */
- protected function initializeDoctrineTypeMappings()
- {
- parent::initializeDoctrineTypeMappings();
- $this->doctrineTypeMapping = array(
-
- );
- }
-
/**
* @override
*/
public function supportsLimitOffset()
{
return true;
}
+
+ /** @override */
+ public function getClobTypeDeclarationSQL(array $field)
+ {
+ return 'VARCHAR(MAX)';
+ }
}
@@ -52,15 +52,39 @@ public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
{
return 'TIME(0)';
}
+
+ /**
+ * @override
+ */
+ public function getDateTimeFormatString()
+ {
+ return 'Y-m-d H:i:s.u';
+ }
+
+ /**
+ * @override
+ */
+ public function getDateFormatString()
+ {
+ return 'Y-m-d';
+ }
+
+ /**
+ * @override
+ */
+ public function getTimeFormatString()
+ {
+ return 'H:i:s';
+ }
/**
* Adding Datetime2 Type
*/
protected function initializeDoctrineTypeMappings()
{
parent::initializeDoctrineTypeMappings();
- $this->doctrineTypeMapping = array(
- 'datetime2' => 'datetime',
- );
+ $this->doctrineTypeMapping['datetime2'] = 'datetime';
+ $this->doctrineTypeMapping['date'] = 'date';
+ $this->doctrineTypeMapping['time'] = 'time';

This comment has been minimized.

Show comment Hide comment
@stof

stof Jan 16, 2012

Member

broken indentation

@stof

stof Jan 16, 2012

Member

broken indentation

}
}
@@ -710,7 +710,23 @@ public function getTemporaryTableName($tableName)
*/
public function getDateTimeFormatString()
{
- return 'Y-m-d H:i:s.u';
+ return 'Y-m-d H:i:s.000';
+ }
+
+ /**
+ * @override
+ */

This comment has been minimized.

Show comment Hide comment
@stof

stof Jan 16, 2012

Member

broken indentation

@stof

stof Jan 16, 2012

Member

broken indentation

+ public function getDateFormatString()
+ {
+ return 'Y-m-d H:i:s.000';
+ }
+
+ /**
+ * @override
+ */

This comment has been minimized.

Show comment Hide comment
@stof

stof Jan 16, 2012

Member

same here

@stof

stof Jan 16, 2012

Member

same here

+ public function getTimeFormatString()
+ {
+ return 'Y-m-d H:i:s.000';
}
/**
@@ -750,11 +766,9 @@ protected function initializeDoctrineTypeMappings()
'real' => 'float',
'double' => 'float',
'double precision' => 'float',
- 'date' => 'date',
'datetimeoffset' => 'datetimetz',
'smalldatetime' => 'datetime',
'datetime' => 'datetime',
- 'time' => 'time',
'char' => 'string',
'varchar' => 'string',
'text' => 'text',
@@ -56,7 +56,7 @@ protected function _getPortableTableColumnDefinition($tableColumn)
$default = $tableColumn['COLUMN_DEF'];
while ($default != ($default2 = preg_replace("/^\((.*)\)$/", '$1', $default))) {
- $default = $default2;
+ $default = trim($default2, "'");
}
$length = (int) $tableColumn['LENGTH'];
@@ -6,5 +6,8 @@
class SQLServerSchemaManagerTest extends SchemaManagerFunctionalTestCase
{
-
+ protected function getPlatformName()
+ {
+ return "mssql";
+ }
}
@@ -16,18 +16,24 @@ class SchemaManagerFunctionalTestCase extends \Doctrine\Tests\DbalFunctionalTest
* @var \Doctrine\DBAL\Schema\AbstractSchemaManager
*/
protected $_sm;
+
+ protected function getPlatformName()
+ {
+ $class = get_class($this);
+ $e = explode('\\', $class);
+ $testClass = end($e);
+ $dbms = strtolower(str_replace('SchemaManagerTest', null, $testClass));
+ return $dbms;

This comment has been minimized.

Show comment Hide comment
@stof

stof Jan 16, 2012

Member

same here

@stof

stof Jan 16, 2012

Member

same here

+ }
protected function setUp()
{
parent::setUp();
-
- $class = get_class($this);
- $e = explode('\\', $class);
- $testClass = end($e);
- $dbms = strtolower(str_replace('SchemaManagerTest', null, $testClass));
+
+ $dbms = $this->getPlatformName();

This comment has been minimized.

Show comment Hide comment
@stof

stof Jan 16, 2012

Member

and here

@stof

stof Jan 16, 2012

Member

and here

if ($this->_conn->getDatabasePlatform()->getName() !== $dbms) {
- $this->markTestSkipped('The ' . $testClass .' requires the use of ' . $dbms);
+ $this->markTestSkipped(get_class($this) . ' requires the use of ' . $dbms);
}
$this->_sm = $this->_conn->getSchemaManager();

1 comment on commit c878bd0

@beberlei

This comment has been minimized.

Show comment Hide comment
@beberlei

beberlei Jan 16, 2012

Owner

hm, stupid Notepad++

Never change your editor just to do simple stuff ;)

Owner

beberlei commented on c878bd0 Jan 16, 2012

hm, stupid Notepad++

Never change your editor just to do simple stuff ;)

Please sign in to comment.