From 36e3ea8cb240b1a4c58988c0e4ea47d827f180cf Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 7 Feb 2005 01:12:49 +0000 Subject: [PATCH] add input/output parameter type flag --- ext/pdo/pdo.c | 1 + ext/pdo/pdo_stmt.c | 4 ++-- ext/pdo/php_pdo_driver.h | 8 +++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c index 37ec230803a..d8fa74c411a 100755 --- a/ext/pdo/pdo.c +++ b/ext/pdo/pdo.c @@ -222,6 +222,7 @@ PHP_MINIT_FUNCTION(pdo) REGISTER_LONG_CONSTANT("PDO_PARAM_STR", (long)PDO_PARAM_STR, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PDO_PARAM_LOB", (long)PDO_PARAM_LOB, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PDO_PARAM_STMT", (long)PDO_PARAM_STMT, CONST_CS|CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PDO_PARAM_INPUT_OUTPUT", (long)PDO_PARAM_INPUT_OUTPUT, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PDO_FETCH_LAZY", (long)PDO_FETCH_LAZY, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PDO_FETCH_ASSOC",(long)PDO_FETCH_ASSOC, CONST_CS|CONST_PERSISTENT); diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index b88c43ee061..fe0ea33cd0f 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -214,7 +214,7 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s } } - if (param->param_type == PDO_PARAM_STR && param->max_value_len <= 0) { + if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_STR && param->max_value_len <= 0) { convert_to_string(param->parameter); } @@ -379,7 +379,7 @@ static inline void fetch_value(pdo_stmt_t *stmt, zval *dest, int colno TSRMLS_DC stmt->methods->get_col(stmt, colno, &value, &value_len, &caller_frees TSRMLS_CC); - switch (col->param_type) { + switch (PDO_PARAM_TYPE(col->param_type)) { case PDO_PARAM_INT: if (value && value_len == sizeof(long)) { ZVAL_LONG(dest, *(long*)value); diff --git a/ext/pdo/php_pdo_driver.h b/ext/pdo/php_pdo_driver.h index 4644ff8c630..e5c0a61012d 100755 --- a/ext/pdo/php_pdo_driver.h +++ b/ext/pdo/php_pdo_driver.h @@ -58,9 +58,15 @@ enum pdo_param_type { PDO_PARAM_STMT, /* hierarchical result set */ /* get_col ptr should point to a zend_bool */ - PDO_PARAM_BOOL + PDO_PARAM_BOOL, + + + /* magic flag to denote a parameter as being input/output */ + PDO_PARAM_INPUT_OUTPUT = 0x80000000 }; +#define PDO_PARAM_TYPE(x) ((x) & ~PDO_PARAM_INPUT_OUTPUT) + enum pdo_fetch_type { PDO_FETCH_USE_DEFAULT, PDO_FETCH_LAZY,