diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-10 16:03:22 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-10 16:04:33 +0100 |
commit | a5527577e7e80dbaf4e0313c1bfc890b2cc5f3b7 (patch) | |
tree | e0fc36e2b30144e04794d53c95300709dc35a47f /ext/pdo_pgsql | |
parent | 15b51a215ac08fa72aa6ea44755f7134710f9004 (diff) | |
download | php-git-a5527577e7e80dbaf4e0313c1bfc890b2cc5f3b7.tar.gz |
Allow drivers to omit error code
And thus generate error messages that match what PDO emulation
would generate.
This fixes the error message regression from the previous commit.
Diffstat (limited to 'ext/pdo_pgsql')
-rw-r--r-- | ext/pdo_pgsql/pgsql_driver.c | 4 | ||||
-rw-r--r-- | ext/pdo_pgsql/pgsql_statement.c | 6 | ||||
-rw-r--r-- | ext/pdo_pgsql/tests/bug36727.phpt | 2 | ||||
-rw-r--r-- | ext/pdo_pgsql/tests/bug69344.phpt | 2 | ||||
-rw-r--r-- | ext/pdo_pgsql/tests/bug71573.phpt | 2 |
5 files changed, 9 insertions, 7 deletions
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index d800d65a2d..a5b0a22f20 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -114,6 +114,10 @@ static int pdo_pgsql_fetch_error_func(pdo_dbh_t *dbh, pdo_stmt_t *stmt, zval *in if (einfo->errcode) { add_next_index_long(info, einfo->errcode); + } else { + add_next_index_null(info); + } + if (einfo->errmsg) { add_next_index_string(info, einfo->errmsg); } diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 149e1e6b51..21f4c83807 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -282,8 +282,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * ZEND_ATOL(param->paramno, namevar + 1); param->paramno--; } else { - pdo_pgsql_error_stmt_msg( - stmt, PGRES_FATAL_ERROR, "HY093", ZSTR_VAL(param->name)); + pdo_pgsql_error_stmt_msg(stmt, 0, "HY093", ZSTR_VAL(param->name)); return 0; } } @@ -295,8 +294,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * return 1; } if (!zend_hash_index_exists(stmt->bound_param_map, param->paramno)) { - pdo_pgsql_error_stmt_msg( - stmt, PGRES_FATAL_ERROR, "HY093", "parameter was not defined"); + pdo_pgsql_error_stmt_msg(stmt, 0, "HY093", "parameter was not defined"); return 0; } case PDO_PARAM_EVT_EXEC_POST: diff --git a/ext/pdo_pgsql/tests/bug36727.phpt b/ext/pdo_pgsql/tests/bug36727.phpt index 4c9716d141..79102ef8bb 100644 --- a/ext/pdo_pgsql/tests/bug36727.phpt +++ b/ext/pdo_pgsql/tests/bug36727.phpt @@ -19,6 +19,6 @@ var_dump($stmt->bindValue(':test', 1, PDO::PARAM_INT)); echo "Done\n"; ?> --EXPECTF-- -Warning: PDOStatement::bindValue(): SQLSTATE[HY093]: Invalid parameter number: 7 :test in %s on line %d +Warning: PDOStatement::bindValue(): SQLSTATE[HY093]: Invalid parameter number: :test in %s on line %d bool(false) Done diff --git a/ext/pdo_pgsql/tests/bug69344.phpt b/ext/pdo_pgsql/tests/bug69344.phpt index e2522653f5..f544518455 100644 --- a/ext/pdo_pgsql/tests/bug69344.phpt +++ b/ext/pdo_pgsql/tests/bug69344.phpt @@ -39,5 +39,5 @@ $test(); ?> --EXPECT-- -SQLSTATE[HY093]: Invalid parameter number: 7 parameter was not defined +SQLSTATE[HY093]: Invalid parameter number: parameter was not defined SQLSTATE[HY093]: Invalid parameter number: parameter was not defined diff --git a/ext/pdo_pgsql/tests/bug71573.phpt b/ext/pdo_pgsql/tests/bug71573.phpt index d9e4fe7514..e8d13ca84e 100644 --- a/ext/pdo_pgsql/tests/bug71573.phpt +++ b/ext/pdo_pgsql/tests/bug71573.phpt @@ -18,4 +18,4 @@ $statement->execute([ 'test', 'test', 'test' ]); ?> --EXPECTF-- -Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: 7 parameter was not defined in %s on line %d +Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in %s on line %d |