Commit 2dc589c5 authored by everus's avatar everus Committed by Benjamin Eberlei

Fix OFFSET without LIMIT cause MySQL syntax error.

parent 4b659d32
...@@ -44,6 +44,24 @@ class MySqlPlatform extends AbstractPlatform ...@@ -44,6 +44,24 @@ class MySqlPlatform extends AbstractPlatform
const LENGTH_LIMIT_BLOB = 65535; const LENGTH_LIMIT_BLOB = 65535;
const LENGTH_LIMIT_MEDIUMBLOB = 16777215; const LENGTH_LIMIT_MEDIUMBLOB = 16777215;
/**
* Adds MySQL-specific LIMIT clause to the query
* 18446744073709551615 is 2^64-1 maximum of unsigned BIGINT the biggest limit possible
*/
protected function doModifyLimitQuery($query, $limit, $offset)
{
if ($limit !== null) {
$query .= ' LIMIT ' . $limit;
if ($offset !== null) {
$query .= ' OFFSET ' . $offset;
}
} elseif ($offset !== null) {
$query .= ' LIMIT 18446744073709551615 OFFSET ' . $offset;
}
return $query;
}
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
......
...@@ -17,6 +17,12 @@ class MySqlPlatformTest extends AbstractPlatformTestCase ...@@ -17,6 +17,12 @@ class MySqlPlatformTest extends AbstractPlatformTestCase
return new MysqlPlatform; return new MysqlPlatform;
} }
public function testModifyLimitQueryWitoutLimit()
{
$sql = $this->_platform->modifyLimitQuery('SELECT n FROM Foo', null , 10);
$this->assertEquals('SELECT n FROM Foo LIMIT 18446744073709551615 OFFSET 10',$sql);
}
public function testGenerateMixedCaseTableCreate() public function testGenerateMixedCaseTableCreate()
{ {
$table = new Table("Foo"); $table = new Table("Foo");
......
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