summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/database/database.inc2
-rw-r--r--includes/database/mysql/database.inc5
-rw-r--r--includes/database/pgsql/database.inc5
-rw-r--r--modules/simpletest/tests/database_test.test38
4 files changed, 41 insertions, 9 deletions
diff --git a/includes/database/database.inc b/includes/database/database.inc
index 2bc67621f..f6f0659c7 100644
--- a/includes/database/database.inc
+++ b/includes/database/database.inc
@@ -683,7 +683,7 @@ abstract class DatabaseConnection extends PDO {
* A database query result resource, or NULL if the query was not executed
* correctly.
*/
- abstract public function queryRange($query, Array $args, $from, $count, Array $options);
+ abstract public function queryRange($query, Array $args, $from, $count, Array $options = array());
/**
* Runs a SELECT query and stores its results in a temporary table.
diff --git a/includes/database/mysql/database.inc b/includes/database/mysql/database.inc
index 24b28db00..60191db0a 100644
--- a/includes/database/mysql/database.inc
+++ b/includes/database/mysql/database.inc
@@ -39,10 +39,7 @@ class DatabaseConnection_mysql extends DatabaseConnection {
$this->exec('SET sql_mode=STRICT_ALL_TABLES');
}
- public function queryRange($query, Array $args, $from, $count, Array $options) {
- // Backward compatibility hack, temporary.
- $query = str_replace(array('%d' , '%f' , '%b' , "'%s'"), '?', $query);
-
+ public function queryRange($query, Array $args, $from, $count, Array $options = array()) {
return $this->query($query . ' LIMIT ' . $from . ', ' . $count, $args, $options);
}
diff --git a/includes/database/pgsql/database.inc b/includes/database/pgsql/database.inc
index 6a65c2cfb..6393eaebe 100644
--- a/includes/database/pgsql/database.inc
+++ b/includes/database/pgsql/database.inc
@@ -75,10 +75,7 @@ class DatabaseConnection_pgsql extends DatabaseConnection {
}
}
- public function queryRange($query, Array $args, $from, $count, Array $options) {
- // Backward compatibility hack, temporary.
- $query = str_replace(array('%d' , '%f' , '%b' , "'%s'"), '?', $query);
-
+ public function queryRange($query, Array $args, $from, $count, Array $options = array()) {
return $this->query($query . ' LIMIT ' . $count . ' OFFSET ' . $from, $args, $options);
}
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index 0aaf88ef4..e99a8c1b1 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -1925,6 +1925,44 @@ class DatabaseLoggingTestCase extends DatabaseTestCase {
}
/**
+ * Range query tests.
+ */
+class DatabaseRangeQueryTestCase extends DrupalWebTestCase {
+
+ /**
+ * Define metadata for this test subclass.
+ */
+ function getInfo() {
+ return array(
+ 'name' => t('Range query test'),
+ 'description' => t('Test the Range query functionality.'),
+ 'group' => t('Database'),
+ );
+ }
+
+ /**
+ * Implementation of setUp().
+ */
+ function setUp() {
+ parent::setUp('database_test');
+ }
+
+ /**
+ * Confirm that range query work and return correct result.
+ */
+ function testRangeQuery() {
+ // Test if return correct number of rows.
+ $range_rows = db_query_range("SELECT name FROM {system} ORDER BY name", array(), 2, 3)->fetchAll();
+ $this->assertEqual(count($range_rows), 3, t('Range query work and return correct number of rows.'));
+
+ // Test if return target data.
+ $raw_rows = db_query("SELECT name FROM {system} ORDER BY name")->fetchAll();
+ $raw_rows = array_slice($raw_rows, 2, 3);
+ $this->assertEqual($range_rows, $raw_rows, t('Range query work and return target data.'));
+ }
+}
+
+/**
* Temporary query tests.
*/
class DatabaseTemporaryQueryTestCase extends DrupalWebTestCase {