Store pgsql_type, intval and boolav per column

This commit is contained in:
Edin Kadribasic 2005-01-23 10:57:11 +00:00
parent 8839b8b3ec
commit d8aa131ca0
2 changed files with 11 additions and 9 deletions

View 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].namelen = strlen(cols[colno].name);
cols[colno].maxlen = PQfsize(S->result, colno); cols[colno].maxlen = PQfsize(S->result, colno);
cols[colno].precision = PQfmod(S->result, colno); cols[colno].precision = PQfmod(S->result, colno);
S->cols[colno].pgsql_type = PQftype(S->result, colno);
switch(PQftype(S->result, colno)) {
switch(S->cols[colno].pgsql_type) {
case BOOLOID: case BOOLOID:
cols[colno].param_type = PDO_PARAM_BOOL; 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; pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data;
struct pdo_column_data *cols = stmt->columns; struct pdo_column_data *cols = stmt->columns;
long intval;
zend_bool boolval;
if (!S->result) { if (!S->result) {
return 0; 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) { switch(cols[colno].param_type) {
case PDO_PARAM_INT: case PDO_PARAM_INT:
intval = atol(*ptr); S->cols[colno].intval = atol(*ptr);
*ptr = &intval; *ptr = (char *) &(S->cols[colno].intval);
*len = sizeof(long); *len = sizeof(long);
break; break;
case PDO_PARAM_BOOL: case PDO_PARAM_BOOL:
boolval = **ptr == 't' ? 1: 0; S->cols[colno].boolval = **ptr == 't' ? 1: 0;
*ptr = &boolval; *ptr = (char *) &(S->cols[colno].boolval);
*len = sizeof(zend_bool); *len = sizeof(zend_bool);
break; break;
} }

View file

@ -42,7 +42,10 @@ typedef struct {
} pdo_pgsql_db_handle; } pdo_pgsql_db_handle;
typedef struct { typedef struct {
char *def; char *def;
Oid pgsql_type;
long intval;
zend_bool boolval;
} pdo_pgsql_column; } pdo_pgsql_column;
typedef struct { typedef struct {