For "field name or field offset" parameters.
Also make $ctor_params an ?array parameter.
/* {{{ Returns values from a result identifier */
PHP_FUNCTION(pg_fetch_result)
{
- zval *result, *field=NULL;
- zend_long row;
+ zval *result;
+ zend_string *field_name;
+ zend_long row, field_offset;
PGresult *pgsql_result;
pgsql_result_handle *pg_result;
- int field_offset, pgsql_row, argc = ZEND_NUM_ARGS();
+ int pgsql_row, argc = ZEND_NUM_ARGS();
if (argc == 2) {
- if (zend_parse_parameters(argc, "rz", &result, &field) == FAILURE) {
- RETURN_THROWS();
- }
+ ZEND_PARSE_PARAMETERS_START(2, 2)
+ Z_PARAM_RESOURCE(result)
+ Z_PARAM_STR_OR_LONG(field_name, field_offset)
+ ZEND_PARSE_PARAMETERS_END();
} else {
- if (zend_parse_parameters(argc, "rlz", &result, &row, &field) == FAILURE) {
- RETURN_THROWS();
- }
+ ZEND_PARSE_PARAMETERS_START(3, 3)
+ Z_PARAM_RESOURCE(result)
+ Z_PARAM_LONG(row)
+ Z_PARAM_STR_OR_LONG(field_name, field_offset)
+ ZEND_PARSE_PARAMETERS_END();
}
if ((pg_result = (pgsql_result_handle *)zend_fetch_resource(Z_RES_P(result), "PostgreSQL result", le_result)) == NULL) {
}
pgsql_row = (int)row;
}
- switch (Z_TYPE_P(field)) {
- case IS_STRING:
- field_offset = PQfnumber(pgsql_result, Z_STRVAL_P(field));
- if (field_offset < 0 || field_offset >= PQnfields(pgsql_result)) {
- php_error_docref(NULL, E_WARNING, "Bad column offset specified");
- RETURN_FALSE;
- }
- break;
- default:
- convert_to_long_ex(field);
- if (Z_LVAL_P(field) < 0 || Z_LVAL_P(field) >= PQnfields(pgsql_result)) {
- php_error_docref(NULL, E_WARNING, "Bad column offset specified");
- RETURN_FALSE;
- }
- field_offset = (int)Z_LVAL_P(field);
- break;
+ if (field_name) {
+ field_offset = PQfnumber(pgsql_result, ZSTR_VAL(field_name));
+ if (field_offset < 0 || field_offset >= PQnfields(pgsql_result)) {
+ php_error_docref(NULL, E_WARNING, "Bad column offset specified");
+ RETURN_FALSE;
+ }
+ } else {
+ if (field_offset < 0 || field_offset >= PQnfields(pgsql_result)) {
+ php_error_docref(NULL, E_WARNING, "Bad column offset specified");
+ RETURN_FALSE;
+ }
}
if (PQgetisnull(pgsql_result, pgsql_row, field_offset)) {
zend_class_entry *ce = NULL;
if (into_object) {
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l!Cz", &result, &row, &row_is_null, &ce, &ctor_params) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l!Ca!", &result, &row, &row_is_null, &ce, &ctor_params) == FAILURE) {
RETURN_THROWS();
}
if (!ce) {
fci.param_count = 0;
fci.named_params = NULL;
- if (ctor_params && Z_TYPE_P(ctor_params) != IS_NULL) {
+ if (ctor_params) {
if (zend_fcall_info_args(&fci, ctor_params) == FAILURE) {
/* Two problems why we throw exceptions here: PHP is typeless
* and hence passing one argument that's not an array could be
/* {{{ php_pgsql_data_info */
static void php_pgsql_data_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type)
{
- zval *result, *field;
- zend_long row;
+ zval *result;
+ zend_string *field_name;
+ zend_long row, field_offset;
PGresult *pgsql_result;
pgsql_result_handle *pg_result;
- int field_offset, pgsql_row, argc = ZEND_NUM_ARGS();
+ int pgsql_row, argc = ZEND_NUM_ARGS();
if (argc == 2) {
- if (zend_parse_parameters(argc, "rz", &result, &field) == FAILURE) {
- RETURN_THROWS();
- }
+ ZEND_PARSE_PARAMETERS_START(2, 2)
+ Z_PARAM_RESOURCE(result)
+ Z_PARAM_STR_OR_LONG(field_name, field_offset)
+ ZEND_PARSE_PARAMETERS_END();
} else {
- if (zend_parse_parameters(argc, "rlz", &result, &row, &field) == FAILURE) {
- RETURN_THROWS();
- }
+ ZEND_PARSE_PARAMETERS_START(3, 3)
+ Z_PARAM_RESOURCE(result)
+ Z_PARAM_LONG(row)
+ Z_PARAM_STR_OR_LONG(field_name, field_offset)
+ ZEND_PARSE_PARAMETERS_END();
}
if ((pg_result = (pgsql_result_handle *)zend_fetch_resource(Z_RES_P(result), "PostgreSQL result", le_result)) == NULL) {
pgsql_row = (int)row;
}
- switch (Z_TYPE_P(field)) {
- case IS_STRING:
- field_offset = PQfnumber(pgsql_result, Z_STRVAL_P(field));
- if (field_offset < 0 || field_offset >= PQnfields(pgsql_result)) {
- php_error_docref(NULL, E_WARNING, "Bad column offset specified");
- RETURN_FALSE;
- }
- break;
- default:
- convert_to_long_ex(field);
- if (Z_LVAL_P(field) < 0 || Z_LVAL_P(field) >= PQnfields(pgsql_result)) {
- php_error_docref(NULL, E_WARNING, "Bad column offset specified");
- RETURN_FALSE;
- }
- field_offset = (int)Z_LVAL_P(field);
- break;
+ if (field_name) {
+ field_offset = PQfnumber(pgsql_result, ZSTR_VAL(field_name));
+ if (field_offset < 0 || field_offset >= PQnfields(pgsql_result)) {
+ php_error_docref(NULL, E_WARNING, "Bad column offset specified");
+ RETURN_FALSE;
+ }
+ } else {
+ if (field_offset < 0 || field_offset >= PQnfields(pgsql_result)) {
+ php_error_docref(NULL, E_WARNING, "Bad column offset specified");
+ RETURN_FALSE;
+ }
}
switch (entry_type) {
/**
* @param resource $result
* @param string|int $row_number
- * @param string|int $field
*/
-function pg_fetch_result($result, $row_number, $field = UNKNOWN): string|false|null {}
+function pg_fetch_result($result, $row_number, string|int $field = UNKNOWN): string|false|null {}
/**
* @param resource $result
* @param string|int $row_number
- * @param string|int $field
* @alias pg_fetch_result
*/
-function pg_result($result, $row_number, $field = UNKNOWN): string|false|null {}
+function pg_result($result, $row_number, string|int $field = UNKNOWN): string|false|null {}
/**
* @param resource $result
*/
function pg_fetch_array($result, ?int $row_number = null, int $result_type = PGSQL_BOTH): array|false {}
-/**
- * @param resource $result
- * @param array|null $ctor_params
- */
-function pg_fetch_object($result, ?int $row_number = null, string $class_name = "stdClass", $ctor_params = null): object|false {}
+/** @param resource $result */
+function pg_fetch_object($result, ?int $row_number = null, string $class_name = "stdClass", ?array $ctor_params = null): object|false {}
/** @param resource $result */
function pg_fetch_all($result, int $result_type = PGSQL_ASSOC): array|false {}
/**
* @param resource $result
* @param string|int $row_number
- * @param string|int $field
*/
-function pg_field_prtlen($result, $row_number, $field = UNKNOWN): int|false {}
+function pg_field_prtlen($result, $row_number, string|int $field = UNKNOWN): int|false {}
/**
* @param resource $result
* @param string|int $row_number
- * @param string|int $field
* @alias pg_field_prtlen
*/
-function pg_fieldprtlen($result, $row_number, $field = UNKNOWN): int|false {}
+function pg_fieldprtlen($result, $row_number, string|int $field = UNKNOWN): int|false {}
/**
* @param resource $result
* @param string|int $row_number
- * @param string|int $field
*/
-function pg_field_is_null($result, $row_number, $field = UNKNOWN): int|false {}
+function pg_field_is_null($result, $row_number, string|int $field = UNKNOWN): int|false {}
/**
* @param resource $result
* @param string|int $row_number
- * @param string|int $field
* @alias pg_field_is_null
*/
-function pg_fieldisnull($result, $row_number, $field = UNKNOWN): int|false {}
+function pg_fieldisnull($result, $row_number, string|int $field = UNKNOWN): int|false {}
/** @param resource $result */
function pg_free_result($result): bool {}
* @param string|int $filename
* @return resource|false
*/
-function pg_lo_export($connection,$large_object_id = UNKNOWN, $filename = UNKNOWN): bool {}
+function pg_lo_export($connection, $large_object_id = UNKNOWN, $filename = UNKNOWN): bool {}
/**
* @param resource|string|int $connection
* @return resource|false
* @alias pg_lo_export
*/
-function pg_loexport($connection,$large_object_id = UNKNOWN, $filename = UNKNOWN): bool {}
+function pg_loexport($connection, $large_object_id = UNKNOWN, $filename = UNKNOWN): bool {}
/** @param resource $large_object */
function pg_lo_seek($large_object, int $offset, int $whence = SEEK_CUR): bool {}
/* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 2ae99621cf060e986e354587ec34766d12b89d6c */
+ * Stub hash: 38d1c57d8bf23dcd17d4f775cdf4c2df61087331 */
ZEND_BEGIN_ARG_INFO_EX(arginfo_pg_connect, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, connection_string, IS_STRING, 0)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_pg_fetch_result, 0, 2, MAY_BE_STRING|MAY_BE_FALSE|MAY_BE_NULL)
ZEND_ARG_INFO(0, result)
ZEND_ARG_INFO(0, row_number)
- ZEND_ARG_INFO(0, field)
+ ZEND_ARG_TYPE_MASK(0, field, MAY_BE_STRING|MAY_BE_LONG, NULL)
ZEND_END_ARG_INFO()
#define arginfo_pg_result arginfo_pg_fetch_result
ZEND_ARG_INFO(0, result)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, row_number, IS_LONG, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, class_name, IS_STRING, 0, "\"stdClass\"")
- ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, ctor_params, "null")
+ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, ctor_params, IS_ARRAY, 1, "null")
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_pg_fetch_all, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_pg_field_prtlen, 0, 2, MAY_BE_LONG|MAY_BE_FALSE)
ZEND_ARG_INFO(0, result)
ZEND_ARG_INFO(0, row_number)
- ZEND_ARG_INFO(0, field)
+ ZEND_ARG_TYPE_MASK(0, field, MAY_BE_STRING|MAY_BE_LONG, NULL)
ZEND_END_ARG_INFO()
#define arginfo_pg_fieldprtlen arginfo_pg_field_prtlen