summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql/pgsql_statement.c
diff options
context:
space:
mode:
authornikita2206 <inefedor@gmail.com>2014-05-15 16:15:06 +0400
committernikita2206 <inefedor@gmail.com>2014-05-15 16:18:50 +0400
commitb7f6bc51037ed0d9c4b58eddd269255b59768960 (patch)
tree8dad8a14265680c81cebefc55b0070dd0ef1e32a /ext/pdo_pgsql/pgsql_statement.c
parentf2324a3e0ea03667575e59d51c177b383d33d402 (diff)
downloadphp-git-b7f6bc51037ed0d9c4b58eddd269255b59768960.tar.gz
add support for pdo-pgsql in phpng refactoring
Diffstat (limited to 'ext/pdo_pgsql/pgsql_statement.c')
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c47
1 files changed, 22 insertions, 25 deletions
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index c9c9e5c450..6cebb7d9f2 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -255,16 +255,17 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
case PDO_PARAM_EVT_NORMALIZE:
/* decode name from $1, $2 into 0, 1 etc. */
if (param->name) {
- if (param->name[0] == '$') {
- param->paramno = atoi(param->name + 1);
+ if (param->name->val[0] == '$') {
+ param->paramno = atoi(param->name->val + 1);
} else {
/* resolve parameter name to rewritten name */
- char *nameptr;
- if (stmt->bound_param_map && SUCCESS == zend_hash_find(stmt->bound_param_map,
- param->name, param->namelen + 1, (void**)&nameptr)) {
- param->paramno = atoi(nameptr + 1) - 1;
+ zval *namevar;
+
+ if (stmt->bound_param_map && (namevar = zend_hash_find(stmt->bound_param_map,
+ param->name)) != NULL) {
+ param->paramno = atoi(Z_PTR_P(namevar) + 1) - 1;
} else {
- pdo_raise_impl_error(stmt->dbh, stmt, "HY093", param->name TSRMLS_CC);
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", param->name->val TSRMLS_CC);
return 0;
}
}
@@ -303,7 +304,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
}
if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB &&
- Z_TYPE_P(param->parameter) == IS_RESOURCE) {
+ Z_TYPE(param->parameter) == IS_RESOURCE) {
php_stream *stm;
php_stream_from_zval_no_verify(stm, &param->parameter);
if (stm) {
@@ -325,12 +326,10 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
int len;
SEPARATE_ZVAL_IF_NOT_REF(&param->parameter);
- Z_TYPE_P(param->parameter) = IS_STRING;
+ Z_TYPE_INFO(param->parameter) = IS_STRING;
- if ((len = php_stream_copy_to_mem(stm, &Z_STRVAL_P(param->parameter), PHP_STREAM_COPY_ALL, 0)) > 0) {
- Z_STRLEN_P(param->parameter) = len;
- } else {
- ZVAL_EMPTY_STRING(param->parameter);
+ if ((Z_STR(param->parameter) = php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0)) == NULL) {
+ ZVAL_EMPTY_STRING(&param->parameter);
}
}
} else {
@@ -341,18 +340,18 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
}
if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL ||
- Z_TYPE_P(param->parameter) == IS_NULL) {
+ Z_TYPE(param->parameter) == IS_NULL) {
S->param_values[param->paramno] = NULL;
S->param_lengths[param->paramno] = 0;
- } else if (Z_TYPE_P(param->parameter) == IS_BOOL) {
- S->param_values[param->paramno] = Z_BVAL_P(param->parameter) ? "t" : "f";
+ } else if (Z_TYPE(param->parameter) == IS_FALSE || Z_TYPE(param->parameter) == IS_TRUE) {
+ S->param_values[param->paramno] = Z_TYPE(param->parameter) == IS_TRUE ? "t" : "f";
S->param_lengths[param->paramno] = 1;
S->param_formats[param->paramno] = 0;
} else {
SEPARATE_ZVAL_IF_NOT_REF(&param->parameter);
- convert_to_string(param->parameter);
- S->param_values[param->paramno] = Z_STRVAL_P(param->parameter);
- S->param_lengths[param->paramno] = Z_STRLEN_P(param->parameter);
+ convert_to_string_ex(&param->parameter);
+ S->param_values[param->paramno] = Z_STRVAL(param->parameter);
+ S->param_lengths[param->paramno] = Z_STRLEN(param->parameter);
S->param_formats[param->paramno] = 0;
}
@@ -371,7 +370,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
((param->param_type & PDO_PARAM_INPUT_OUTPUT) != PDO_PARAM_INPUT_OUTPUT)) {
SEPARATE_ZVAL(&param->parameter);
param->param_type = PDO_PARAM_STR;
- ZVAL_STRINGL(param->parameter, Z_BVAL_P(param->parameter) ? "t" : "f", 1, 1);
+ ZVAL_STRINGL(&param->parameter, Z_TYPE(param->parameter) == IS_TRUE ? "t" : "f", 1);
}
}
return 1;
@@ -450,11 +449,9 @@ static int pgsql_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC)
case OIDOID:
/* did the user bind the column as a LOB ? */
if (stmt->bound_columns && (
- SUCCESS == zend_hash_index_find(stmt->bound_columns,
- colno, (void**)&param) ||
- SUCCESS == zend_hash_find(stmt->bound_columns,
- cols[colno].name, cols[colno].namelen,
- (void**)&param))) {
+ (param = zend_hash_index_find(stmt->bound_columns, colno)) != NULL ||
+ (param = zend_hash_str_find(stmt->bound_columns, cols[colno].name, cols[colno].namelen)) != NULL)) {
+
if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) {
cols[colno].param_type = PDO_PARAM_LOB;
break;