]> granicus.if.org Git - php/commitdiff
Store pgsql_type, intval and boolav per column
authorEdin Kadribasic <edink@php.net>
Sun, 23 Jan 2005 10:57:11 +0000 (10:57 +0000)
committerEdin Kadribasic <edink@php.net>
Sun, 23 Jan 2005 10:57:11 +0000 (10:57 +0000)
ext/pdo_pgsql/pgsql_statement.c
ext/pdo_pgsql/php_pdo_pgsql_int.h

index 86e65e54c256ca3804cb8c1cc436d68e69b0c2b8..5f7a40c98e57d704b8715ef643c4be56e88165b7 100644 (file)
@@ -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;
                }
index 00a6e0d3b739e3495646778aa3f2eeda6cef5198..ee3e290f83b0e2eec37cee110585ea308ba43b18 100644 (file)
@@ -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 {