diff options
author | Adam Baratz <adambaratz@php.net> | 2016-09-13 13:11:34 -0400 |
---|---|---|
committer | Adam Baratz <adambaratz@php.net> | 2016-09-13 16:36:23 -0400 |
commit | 69013f6b2620d2ed9f143373e88124d4a74e4bf7 (patch) | |
tree | b959039145e15d8fdb7b57f03d0378699ccdfdd9 | |
parent | f0a12af65b217c00a89fc8fe11883168e1ea657f (diff) | |
download | php-git-69013f6b2620d2ed9f143373e88124d4a74e4bf7.tar.gz |
Add dblib-specific query
-rw-r--r-- | ext/pdo/tests/bug_65946.phpt | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/ext/pdo/tests/bug_65946.phpt b/ext/pdo/tests/bug_65946.phpt index 13a622ecb8..c636db5204 100644 --- a/ext/pdo/tests/bug_65946.phpt +++ b/ext/pdo/tests/bug_65946.phpt @@ -16,13 +16,22 @@ $db = PDOTest::factory(); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $db->exec('CREATE TABLE test(id int)'); $db->exec('INSERT INTO test VALUES(1)'); -if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'firebird') { - $sql = 'SELECT FIRST :limit * FROM test'; -} else if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') { - //$sql = 'SELECT * FROM test FETCH FIRST :limit ROWS ONLY'; // Oracle 12c syntax - $sql = "select id from (select a.*, rownum rnum from (SELECT * FROM test) a where rownum <= :limit)"; -} else { - $sql = 'SELECT * FROM test LIMIT :limit'; +switch ($db->getAttribute(PDO::ATTR_DRIVER_NAME)) { + case 'dblib': + // if :limit is used, the value will be quoted as '1', which is invalid syntax + // this is a bug, to be addressed separately from adding these tests to pdo_dblib + $sql = 'SELECT TOP 1 * FROM test'; + break; + case 'firebird': + $sql = 'SELECT FIRST :limit * FROM test'; + break; + case 'oci': + //$sql = 'SELECT * FROM test FETCH FIRST :limit ROWS ONLY'; // Oracle 12c syntax + $sql = "select id from (select a.*, rownum rnum from (SELECT * FROM test) a where rownum <= :limit)"; + break; + default: + $sql = 'SELECT * FROM test LIMIT :limit'; + break; } $stmt = $db->prepare($sql); $stmt->bindValue('limit', 1, PDO::PARAM_INT); |