Added limit clause to db drivers
This commit is contained in:
parent
dafbdbf4d2
commit
955537cdb7
@ -213,7 +213,6 @@ abstract class DB_SQL {
|
||||
* @param array $columns
|
||||
* @param array $constraints
|
||||
* @param array $indexes
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
abstract public function create_table($name, $columns, $constraints=array(), $indexes=array());
|
||||
@ -222,11 +221,20 @@ abstract class DB_SQL {
|
||||
* Get database-specific sql to drop a table
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
abstract public function delete_table($name);
|
||||
|
||||
/**
|
||||
* Get database specific sql for limit clause
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limiit
|
||||
* @param int $offset
|
||||
* @return string
|
||||
*/
|
||||
abstract public function limit($sql, $limit, $offset);
|
||||
|
||||
|
||||
}
|
||||
// End of db_pdo.php
|
@ -85,5 +85,30 @@ class Firebird_SQL extends DB_SQL {
|
||||
{
|
||||
return 'DROP TABLE "'.$name.'"';
|
||||
}
|
||||
|
||||
/**
|
||||
* Limit clause
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return string
|
||||
*/
|
||||
public function limit($sql, $limit, $offset=FALSE)
|
||||
{
|
||||
// Keep the current sql string safe for a moment
|
||||
$orig_sql = $sql;
|
||||
|
||||
$sql = 'FIRST '. (int) $limit;
|
||||
|
||||
if ($offset > 0)
|
||||
{
|
||||
$sql .= ' SKIP'. (int) $offset;
|
||||
}
|
||||
|
||||
$sql = preg_replace("`SELECT`i", "SELECT {$sql}", $orig_sql);
|
||||
|
||||
return $sql;
|
||||
}
|
||||
}
|
||||
//End of firebird_sql.php
|
@ -41,6 +41,24 @@
|
||||
public function delete_table($name)
|
||||
{
|
||||
return "DROP TABLE `{$name}`";
|
||||
}
|
||||
|
||||
/**
|
||||
* Limit clause
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return string
|
||||
*/
|
||||
public function limit($sql, $limit, $offset=FALSE)
|
||||
{
|
||||
if ( ! is_numeric($offset))
|
||||
{
|
||||
return $sql." LIMIT {$limit}";
|
||||
}
|
||||
|
||||
return $sql." LIMIT {$offset}, {$limit}";
|
||||
}
|
||||
}
|
||||
//End of mysql_sql.php
|
@ -27,5 +27,18 @@ class ODBC_SQL extends DB_SQL {
|
||||
{
|
||||
return "DROP TABLE {$name}";
|
||||
}
|
||||
|
||||
/**
|
||||
* Limit clause
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return string
|
||||
*/
|
||||
public function limit($sql, $limit, $offset=FALSE)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
// End of odbc_sql.php
|
@ -27,5 +27,25 @@ class pgSQL_SQL extends DB_SQL {
|
||||
return 'DROP TABLE "'.$name.'"';
|
||||
}
|
||||
|
||||
/**
|
||||
* Limit clause
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return string
|
||||
*/
|
||||
public function limit($sql, $limit, $offset=FALSE)
|
||||
{
|
||||
$sql .= " LIMIT {$limit}";
|
||||
|
||||
if(is_numeric($offset))
|
||||
{
|
||||
$sql .= " OFFSET {$offset}";
|
||||
}
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
}
|
||||
//End of pgsql_manip.php
|
@ -86,17 +86,21 @@ class SQLite_SQL extends DB_SQL {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an sqlite database file
|
||||
*
|
||||
* @param $path
|
||||
* Limit clause
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return string
|
||||
*/
|
||||
public function create_db($path)
|
||||
public function limit($sql, $limit, $offset=FALSE)
|
||||
{
|
||||
// Create the file if it doesn't exist
|
||||
if( ! file_exists($path))
|
||||
if ( ! is_numeric($offset))
|
||||
{
|
||||
touch($path);
|
||||
return $sql." LIMIT {$limit}";
|
||||
}
|
||||
|
||||
return $sql." LIMIT {$offset}, {$limit}";
|
||||
}
|
||||
}
|
||||
//End of sqlite_sql.php
|
Reference in New Issue
Block a user