123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <?php
-
- namespace Doctrine\Tests\DBAL\Platforms;
-
- use Doctrine\DBAL\Platforms\OraclePlatform;
- use Doctrine\DBAL\Types\Type;
-
- require_once __DIR__ . '/../../TestInit.php';
-
- class OraclePlatformTest extends AbstractPlatformTestCase
- {
- public function createPlatform()
- {
- return new OraclePlatform;
- }
-
- public function getGenerateTableSql()
- {
- return 'CREATE TABLE test (id NUMBER(10) NOT NULL, test VARCHAR2(255) DEFAULT NULL, PRIMARY KEY(id))';
- }
-
- public function getGenerateTableWithMultiColumnUniqueIndexSql()
- {
- return array(
- 'CREATE TABLE test (foo VARCHAR2(255) DEFAULT NULL, bar VARCHAR2(255) DEFAULT NULL)',
- 'CREATE UNIQUE INDEX UNIQ_D87F7E0C8C73652176FF8CAA ON test (foo, bar)',
- );
- }
-
- public function getGenerateAlterTableSql()
- {
- return array(
- 'ALTER TABLE mytable ADD (quota NUMBER(10) DEFAULT NULL)',
- "ALTER TABLE mytable MODIFY (baz VARCHAR2(255) DEFAULT 'def' NOT NULL)",
- "ALTER TABLE mytable DROP (foo)",
- "ALTER TABLE mytable RENAME TO userlist",
- );
- }
-
- /**
- * @expectedException Doctrine\DBAL\DBALException
- */
- public function testRLike()
- {
- $this->assertEquals('RLIKE', $this->_platform->getRegexpExpression(), 'Regular expression operator is not correct');
- }
-
- public function testGeneratesSqlSnippets()
- {
- $this->assertEquals('"', $this->_platform->getIdentifierQuoteCharacter(), 'Identifier quote character is not correct');
- $this->assertEquals('column1 || column2 || column3', $this->_platform->getConcatExpression('column1', 'column2', 'column3'), 'Concatenation expression is not correct');
- }
-
- public function testGeneratesTransactionsCommands()
- {
- $this->assertEquals(
- 'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED',
- $this->_platform->getSetTransactionIsolationSQL(\Doctrine\DBAL\Connection::TRANSACTION_READ_UNCOMMITTED)
- );
- $this->assertEquals(
- 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED',
- $this->_platform->getSetTransactionIsolationSQL(\Doctrine\DBAL\Connection::TRANSACTION_READ_COMMITTED)
- );
- $this->assertEquals(
- 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE',
- $this->_platform->getSetTransactionIsolationSQL(\Doctrine\DBAL\Connection::TRANSACTION_REPEATABLE_READ)
- );
- $this->assertEquals(
- 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE',
- $this->_platform->getSetTransactionIsolationSQL(\Doctrine\DBAL\Connection::TRANSACTION_SERIALIZABLE)
- );
- }
-
- /**
- * @expectedException Doctrine\DBAL\DBALException
- */
- public function testShowDatabasesThrowsException()
- {
- $this->assertEquals('SHOW DATABASES', $this->_platform->getShowDatabasesSQL());
- }
-
- /**
- * @expectedException Doctrine\DBAL\DBALException
- */
- public function testCreateDatabaseThrowsException()
- {
- $this->assertEquals('CREATE DATABASE foobar', $this->_platform->getCreateDatabaseSQL('foobar'));
- }
-
- public function testDropDatabaseThrowsException()
- {
- $this->assertEquals('DROP USER foobar CASCADE', $this->_platform->getDropDatabaseSQL('foobar'));
- }
-
- public function testDropTable()
- {
- $this->assertEquals('DROP TABLE foobar', $this->_platform->getDropTableSQL('foobar'));
- }
-
- public function testGeneratesTypeDeclarationForIntegers()
- {
- $this->assertEquals(
- 'NUMBER(10)',
- $this->_platform->getIntegerTypeDeclarationSQL(array())
- );
- $this->assertEquals(
- 'NUMBER(10)',
- $this->_platform->getIntegerTypeDeclarationSQL(array('autoincrement' => true)
- ));
- $this->assertEquals(
- 'NUMBER(10)',
- $this->_platform->getIntegerTypeDeclarationSQL(
- array('autoincrement' => true, 'primary' => true)
- ));
- }
-
- public function testGeneratesTypeDeclarationsForStrings()
- {
- $this->assertEquals(
- 'CHAR(10)',
- $this->_platform->getVarcharTypeDeclarationSQL(
- array('length' => 10, 'fixed' => true)
- ));
- $this->assertEquals(
- 'VARCHAR2(50)',
- $this->_platform->getVarcharTypeDeclarationSQL(array('length' => 50)),
- 'Variable string declaration is not correct'
- );
- $this->assertEquals(
- 'VARCHAR2(255)',
- $this->_platform->getVarcharTypeDeclarationSQL(array()),
- 'Long string declaration is not correct'
- );
- }
-
- public function testPrefersIdentityColumns()
- {
- $this->assertFalse($this->_platform->prefersIdentityColumns());
- }
-
- public function testSupportsIdentityColumns()
- {
- $this->assertFalse($this->_platform->supportsIdentityColumns());
- }
-
- public function testSupportsSavePoints()
- {
- $this->assertTrue($this->_platform->supportsSavepoints());
- }
-
- public function getGenerateIndexSql()
- {
- return 'CREATE INDEX my_idx ON mytable (user_name, last_login)';
- }
-
- public function getGenerateUniqueIndexSql()
- {
- return 'CREATE UNIQUE INDEX index_name ON test (test, test2)';
- }
-
- public function getGenerateForeignKeySql()
- {
- return 'ALTER TABLE test ADD FOREIGN KEY (fk_name_id) REFERENCES other_table(id)';
- }
-
- public function testModifyLimitQuery()
- {
- $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user', 10, 0);
- $this->assertEquals('SELECT a.* FROM (SELECT * FROM user) a WHERE ROWNUM <= 10', $sql);
- }
-
- public function testModifyLimitQueryWithEmptyOffset()
- {
- $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user', 10);
- $this->assertEquals('SELECT a.* FROM (SELECT * FROM user) a WHERE ROWNUM <= 10', $sql);
- }
-
- public function testModifyLimitQueryWithAscOrderBy()
- {
- $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user ORDER BY username ASC', 10);
- $this->assertEquals('SELECT a.* FROM (SELECT * FROM user ORDER BY username ASC) a WHERE ROWNUM <= 10', $sql);
- }
-
- public function testModifyLimitQueryWithDescOrderBy()
- {
- $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user ORDER BY username DESC', 10);
- $this->assertEquals('SELECT a.* FROM (SELECT * FROM user ORDER BY username DESC) a WHERE ROWNUM <= 10', $sql);
- }
-
- public function getCreateTableColumnCommentsSQL()
- {
- return array(
- "CREATE TABLE test (id NUMBER(10) NOT NULL, PRIMARY KEY(id))",
- "COMMENT ON COLUMN test.id IS 'This is a comment'",
- );
- }
-
- public function getCreateTableColumnTypeCommentsSQL()
- {
- return array(
- "CREATE TABLE test (id NUMBER(10) NOT NULL, data CLOB NOT NULL, PRIMARY KEY(id))",
- "COMMENT ON COLUMN test.data IS '(DC2Type:array)'"
- );
- }
-
- public function getAlterTableColumnCommentsSQL()
- {
- return array(
- "ALTER TABLE mytable ADD (quota NUMBER(10) NOT NULL)",
- "ALTER TABLE mytable MODIFY (baz VARCHAR2(255) NOT NULL)",
- "COMMENT ON COLUMN mytable.quota IS 'A comment'",
- "COMMENT ON COLUMN mytable.baz IS 'B comment'",
- );
- }
- }
|