From 494527d465fa7d1497448d24963e2b128bf9efd1 Mon Sep 17 00:00:00 2001 From: David Puglielli Date: Fri, 29 Sep 2017 14:30:29 -0700 Subject: [PATCH] Tweaked tests, added comments per code review comments --- source/pdo_sqlsrv/pdo_stmt.cpp | 3 +++ source/sqlsrv/stmt.cpp | 3 +++ test/functional/pdo_sqlsrv/pdo_empty_result_error.phpt | 7 ++++--- test/functional/sqlsrv/sqlsrv_empty_result_error.phpt | 6 ++++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/source/pdo_sqlsrv/pdo_stmt.cpp b/source/pdo_sqlsrv/pdo_stmt.cpp index e6fe5c44..fe2ff5fa 100644 --- a/source/pdo_sqlsrv/pdo_stmt.cpp +++ b/source/pdo_sqlsrv/pdo_stmt.cpp @@ -1085,6 +1085,9 @@ int pdo_sqlsrv_stmt_next_rowset( _Inout_ pdo_stmt_t *stmt TSRMLS_DC ) // Now make sure the result set is not null. bool has_result = core_sqlsrv_has_any_result( driver_stmt ); + // Note that if fetch_called is false but has_result is true (i.e. the user is calling + // nextRowset() on a non-null result set before calling fetch()), it is handled + // in core_sqlsrv_next_result() below. if(!driver_stmt->fetch_called){ CHECK_CUSTOM_ERROR( !has_result, driver_stmt, SQLSRV_ERROR_NO_FIELDS ) { throw core::CoreException(); diff --git a/source/sqlsrv/stmt.cpp b/source/sqlsrv/stmt.cpp index 33acee7a..8f5abb6c 100644 --- a/source/sqlsrv/stmt.cpp +++ b/source/sqlsrv/stmt.cpp @@ -578,6 +578,9 @@ PHP_FUNCTION( sqlsrv_next_result ) bool has_result = core_sqlsrv_has_any_result( stmt ); + // Note that if fetch_called is false but has_result is true (i.e. the user is calling + // sqlsrv_next_result() on a non-null result set before calling fetch()), it is handled + // in core_sqlsrv_next_result() below. if(!stmt->fetch_called){ CHECK_CUSTOM_ERROR( !has_result, stmt, SQLSRV_ERROR_NO_FIELDS ) { throw core::CoreException(); diff --git a/test/functional/pdo_sqlsrv/pdo_empty_result_error.phpt b/test/functional/pdo_sqlsrv/pdo_empty_result_error.phpt index 660ff506..dda98156 100644 --- a/test/functional/pdo_sqlsrv/pdo_empty_result_error.phpt +++ b/test/functional/pdo_sqlsrv/pdo_empty_result_error.phpt @@ -9,11 +9,12 @@ require_once("MsSetup.inc"); $conn = new PDO( "sqlsrv:Server = $server; Database = $databaseName; ", $uid, $pwd ); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); -$stmt = $conn->query("IF OBJECT_ID('TestEmptySetTable', 'U') IS NOT NULL DROP TABLE TestEmptySetTable"); +DropTable($conn, 'TestEmptySetTable'); $stmt = $conn->query("CREATE TABLE TestEmptySetTable ([c1] nvarchar(10),[c2] nvarchar(10))"); - $stmt = $conn->query("INSERT INTO TestEmptySetTable (c1, c2) VALUES ('a', 'b')"); -$stmt = $conn->query("IF OBJECT_ID('TestEmptySetProc', 'P') IS NOT NULL DROP PROCEDURE TestEmptySetProc"); + +// Create a procedure that can return a result set or can return nothing +DropProc($conn, 'TestEmptySetProc'); $stmt = $conn->query("CREATE PROCEDURE TestEmptySetProc @a nvarchar(10), @b nvarchar(10) AS SET NOCOUNT ON BEGIN diff --git a/test/functional/sqlsrv/sqlsrv_empty_result_error.phpt b/test/functional/sqlsrv/sqlsrv_empty_result_error.phpt index bf43e3b6..ba07801e 100644 --- a/test/functional/sqlsrv/sqlsrv_empty_result_error.phpt +++ b/test/functional/sqlsrv/sqlsrv_empty_result_error.phpt @@ -8,10 +8,12 @@ require_once("MsSetup.inc"); $conn = sqlsrv_connect($server, array("Database"=>$databaseName, "uid"=>$uid, "pwd"=>$pwd)); -$stmt = sqlsrv_query($conn, "IF OBJECT_ID('TestEmptySetTable', 'U') IS NOT NULL DROP TABLE TestEmptySetTable"); +DropTable($conn, 'TestEmptySetTable'); $stmt = sqlsrv_query($conn, "CREATE TABLE TestEmptySetTable ([c1] nvarchar(10),[c2] nvarchar(10))"); $stmt = sqlsrv_query($conn, "INSERT INTO TestEmptySetTable (c1, c2) VALUES ('a', 'b')"); -$stmt = sqlsrv_query($conn, "IF OBJECT_ID('TestEmptySetProc', 'P') IS NOT NULL DROP PROCEDURE TestEmptySetProc"); + +// Create a procedure that can return a result set or can return nothing +DropProc($conn, 'TestEmptySetProc'); $stmt = sqlsrv_query($conn, "CREATE PROCEDURE TestEmptySetProc @a nvarchar(10), @b nvarchar(10) AS SET NOCOUNT ON BEGIN