summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql
diff options
context:
space:
mode:
authorEdin Kadribasic <edink@php.net>2005-01-23 10:57:11 +0000
committerEdin Kadribasic <edink@php.net>2005-01-23 10:57:11 +0000
commitd8aa131ca088ef9b68e62547f44c3d20355366bd (patch)
treeea9995bd70926cb46372ed2e38de38a655717066 /ext/pdo_pgsql
parent8839b8b3ecfe0120b838aefc4dcf19f87fe9a3ec (diff)
downloadphp-git-d8aa131ca088ef9b68e62547f44c3d20355366bd.tar.gz
Store pgsql_type, intval and boolav per column
Diffstat (limited to 'ext/pdo_pgsql')
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c15
-rw-r--r--ext/pdo_pgsql/php_pdo_pgsql_int.h5
2 files changed, 11 insertions, 9 deletions
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index 86e65e54c2..5f7a40c98e 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -173,8 +173,9 @@ static int pgsql_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC)
cols[colno].namelen = strlen(cols[colno].name);
cols[colno].maxlen = PQfsize(S->result, colno);
cols[colno].precision = PQfmod(S->result, colno);
-
- switch(PQftype(S->result, colno)) {
+ S->cols[colno].pgsql_type = PQftype(S->result, colno);
+
+ switch(S->cols[colno].pgsql_type) {
case BOOLOID:
cols[colno].param_type = PDO_PARAM_BOOL;
@@ -202,8 +203,6 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned
{
pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data;
struct pdo_column_data *cols = stmt->columns;
- long intval;
- zend_bool boolval;
if (!S->result) {
return 0;
@@ -220,14 +219,14 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned
switch(cols[colno].param_type) {
case PDO_PARAM_INT:
- intval = atol(*ptr);
- *ptr = &intval;
+ S->cols[colno].intval = atol(*ptr);
+ *ptr = (char *) &(S->cols[colno].intval);
*len = sizeof(long);
break;
case PDO_PARAM_BOOL:
- boolval = **ptr == 't' ? 1: 0;
- *ptr = &boolval;
+ S->cols[colno].boolval = **ptr == 't' ? 1: 0;
+ *ptr = (char *) &(S->cols[colno].boolval);
*len = sizeof(zend_bool);
break;
}
diff --git a/ext/pdo_pgsql/php_pdo_pgsql_int.h b/ext/pdo_pgsql/php_pdo_pgsql_int.h
index 00a6e0d3b7..ee3e290f83 100644
--- a/ext/pdo_pgsql/php_pdo_pgsql_int.h
+++ b/ext/pdo_pgsql/php_pdo_pgsql_int.h
@@ -42,7 +42,10 @@ typedef struct {
} pdo_pgsql_db_handle;
typedef struct {
- char *def;
+ char *def;
+ Oid pgsql_type;
+ long intval;
+ zend_bool boolval;
} pdo_pgsql_column;
typedef struct {