diff options
author | Edin Kadribasic <edink@php.net> | 2005-02-06 22:48:35 +0000 |
---|---|---|
committer | Edin Kadribasic <edink@php.net> | 2005-02-06 22:48:35 +0000 |
commit | 22ff90f7ba88434df470a2b9b5038e225e32cbc3 (patch) | |
tree | bb0d2e470e73c950f96ee991abd848298db1a8c2 /ext/pdo_pgsql/pgsql_statement.c | |
parent | d87c5ec288e584d7af07cc300e0457025d41e31d (diff) | |
download | php-git-22ff90f7ba88434df470a2b9b5038e225e32cbc3.tar.gz |
Adjust for the new get_col api
Diffstat (limited to 'ext/pdo_pgsql/pgsql_statement.c')
-rw-r--r-- | ext/pdo_pgsql/pgsql_statement.c | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 4d535c5517..78d2cf8d93 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -39,20 +39,6 @@ #define OIDOID 26 -static void _pdo_pgsql_free_lobs(pdo_stmt_t *stmt TSRMLS_DC) -{ - pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; - int i; - - for (i=0; i<stmt->column_count; i++) { - if (S->cols[i].lobval) { - free(S->cols[i].lobval); - S->cols[i].lobval = NULL; - S->cols[i].lobval = 0; - } - } -} - static int pgsql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) { pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; @@ -77,7 +63,6 @@ static int pgsql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) } if(S->cols) { - _pdo_pgsql_free_lobs(stmt TSRMLS_CC); efree(S->cols); S->cols = NULL; } @@ -141,9 +126,6 @@ static int pgsql_stmt_fetch(pdo_stmt_t *stmt, { pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; - /* free any allocated lob objects from the previos fetch operation */ - _pdo_pgsql_free_lobs(stmt TSRMLS_CC); - if (S->cursor_name) { char *ori_str = NULL; char *q = NULL; @@ -224,10 +206,12 @@ static int pgsql_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) return 1; } -static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len TSRMLS_DC) +static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len, int *caller_frees TSRMLS_DC) { pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; struct pdo_column_data *cols = stmt->columns; + char *tmp_ptr; + size_t tmp_len; if (!S->result) { return 0; @@ -256,9 +240,11 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned break; case PDO_PARAM_LOB: - S->cols[colno].lobval = PQunescapeBytea(*ptr, &(S->cols[colno].loblen)); - *ptr = S->cols[colno].lobval; - *len = S->cols[colno].loblen; + tmp_ptr = PQunescapeBytea(*ptr, &tmp_len); + *ptr = estrndup(tmp_ptr, tmp_len); + *len = tmp_len; + caller_frees = 1; + free(tmp_ptr); break; } } |