summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql/pgsql_statement.c
diff options
context:
space:
mode:
authorEdin Kadribasic <edink@php.net>2005-02-06 22:48:35 +0000
committerEdin Kadribasic <edink@php.net>2005-02-06 22:48:35 +0000
commit22ff90f7ba88434df470a2b9b5038e225e32cbc3 (patch)
treebb0d2e470e73c950f96ee991abd848298db1a8c2 /ext/pdo_pgsql/pgsql_statement.c
parentd87c5ec288e584d7af07cc300e0457025d41e31d (diff)
downloadphp-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.c30
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;
}
}