Commit b959fa3d authored by Fabio B. Silva's avatar Fabio B. Silva

support for bit comparison

parent 23d2950c
...@@ -786,6 +786,30 @@ abstract class AbstractPlatform ...@@ -786,6 +786,30 @@ abstract class AbstractPlatform
throw DBALException::notSupported(__METHOD__); throw DBALException::notSupported(__METHOD__);
} }
/**
* Gets SQL bit and comparison expression
*
* @param string $value1
* @param string $value2
* @return string
*/
public function getBitAndComparisonExpression($value1, $value2)
{
return '(' . $value1 . ' & ' . $value2 . ')';
}
/**
* Gets SQL bit and comparison expression
*
* @param string $value1
* @param string $value2
* @return string
*/
public function getBitOrComparisonExpression($value1, $value2)
{
return '(' . $value1 . ' | ' . $value2 . ')';
}
public function getForUpdateSQL() public function getForUpdateSQL()
{ {
return 'FOR UPDATE'; return 'FOR UPDATE';
......
...@@ -116,25 +116,55 @@ class OraclePlatform extends AbstractPlatform ...@@ -116,25 +116,55 @@ class OraclePlatform extends AbstractPlatform
return "TRUNC(TO_NUMBER(SUBSTR((" . $date1 . "-" . $date2 . "), 1, INSTR(" . $date1 . "-" . $date2 .", ' '))))"; return "TRUNC(TO_NUMBER(SUBSTR((" . $date1 . "-" . $date2 . "), 1, INSTR(" . $date1 . "-" . $date2 .", ' '))))";
} }
/**
* {@inheritdoc}
*/
public function getDateAddDaysExpression($date, $days) public function getDateAddDaysExpression($date, $days)
{ {
return '(' . $date . '+' . $days . ')'; return '(' . $date . '+' . $days . ')';
} }
/**
* {@inheritdoc}
*/
public function getDateSubDaysExpression($date, $days) public function getDateSubDaysExpression($date, $days)
{ {
return '(' . $date . '-' . $days . ')'; return '(' . $date . '-' . $days . ')';
} }
/**
* {@inheritdoc}
*/
public function getDateAddMonthExpression($date, $months) public function getDateAddMonthExpression($date, $months)
{ {
return "ADD_MONTHS(" . $date . ", " . $months . ")"; return "ADD_MONTHS(" . $date . ", " . $months . ")";
} }
/**
* {@inheritdoc}
*/
public function getDateSubMonthExpression($date, $months) public function getDateSubMonthExpression($date, $months)
{ {
return "ADD_MONTHS(" . $date . ", -" . $months . ")"; return "ADD_MONTHS(" . $date . ", -" . $months . ")";
} }
/**
* {@inheritdoc}
*/
public function getBitAndComparisonExpression($value1, $value2)
{
return 'BITAND('.$value1 . ', ' . $value2 . ')';
}
/**
* {@inheritdoc}
*/
public function getBitOrComparisonExpression($value1, $value2)
{
return '(' . $value1 . '-' .
$this->getBitAndComparisonExpression($value1, $value2)
. '+' . $value2 . ')';
}
/** /**
* Gets the SQL used to create a sequence that starts with a given value * Gets the SQL used to create a sequence that starts with a given value
......
...@@ -130,6 +130,34 @@ abstract class AbstractPlatformTestCase extends \Doctrine\Tests\DbalTestCase ...@@ -130,6 +130,34 @@ abstract class AbstractPlatformTestCase extends \Doctrine\Tests\DbalTestCase
$sql = $this->_platform->getCreateConstraintSQL($fk, 'test'); $sql = $this->_platform->getCreateConstraintSQL($fk, 'test');
$this->assertEquals($this->getGenerateConstraintForeignKeySql(), $sql); $this->assertEquals($this->getGenerateConstraintForeignKeySql(), $sql);
} }
protected function getBitAndComparisonExpressionSql($value1, $value2)
{
return '(' . $value1 . ' & ' . $value2 . ')';
}
/**
* @group DDC-1213
*/
public function testGeneratesBitAndComparisonExpressionSql()
{
$sql = $this->_platform->getBitAndComparisonExpression(2, 4);
$this->assertEquals($this->getBitAndComparisonExpressionSql(2, 4), $sql);
}
protected function getBitOrComparisonExpressionSql($value1, $value2)
{
return '(' . $value1 . ' | ' . $value2 . ')';
}
/**
* @group DDC-1213
*/
public function testGeneratesBitOrComparisonExpressionSql()
{
$sql = $this->_platform->getBitOrComparisonExpression(2, 4);
$this->assertEquals($this->getBitOrComparisonExpressionSql(2, 4), $sql);
}
public function getGenerateConstraintUniqueIndexSql() public function getGenerateConstraintUniqueIndexSql()
{ {
......
...@@ -204,4 +204,16 @@ class OraclePlatformTest extends AbstractPlatformTestCase ...@@ -204,4 +204,16 @@ class OraclePlatformTest extends AbstractPlatformTestCase
"COMMENT ON COLUMN mytable.baz IS 'B comment'", "COMMENT ON COLUMN mytable.baz IS 'B comment'",
); );
} }
public function getBitAndComparisonExpressionSql($value1, $value2)
{
return 'BITAND('.$value1 . ', ' . $value2 . ')';
}
public function getBitOrComparisonExpressionSql($value1, $value2)
{
return '(' . $value1 . '-' .
$this->getBitAndComparisonExpressionSql($value1, $value2)
. '+' . $value2 . ')';
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment