diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-11 17:13:38 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-14 10:43:28 +0100 |
commit | 2d51c203f09551323ed595514e03ab206fd93129 (patch) | |
tree | 5069c1608f092ee57d312d28b1b9d4064abd0c62 /ext/pdo_pgsql/pgsql_statement.c | |
parent | c288b5294bb0e13ad2904a3ec79265f727baaea3 (diff) | |
download | php-git-2d51c203f09551323ed595514e03ab206fd93129.tar.gz |
PDO: Store/pass query_string as zend_string
Rather than storing char* + size_t, use a zend_string*. Also
avoid various copies of the query string.
Diffstat (limited to 'ext/pdo_pgsql/pgsql_statement.c')
-rw-r--r-- | ext/pdo_pgsql/pgsql_statement.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 21f4c83807..89513fe9cc 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -100,7 +100,7 @@ static int pgsql_stmt_dtor(pdo_stmt_t *stmt) S->param_types = NULL; } if (S->query) { - efree(S->query); + zend_string_release(S->query); S->query = NULL; } @@ -151,7 +151,7 @@ static int pgsql_stmt_execute(pdo_stmt_t *stmt) efree(q); } - spprintf(&q, 0, "DECLARE %s SCROLL CURSOR WITH HOLD FOR %s", S->cursor_name, stmt->active_query_string); + spprintf(&q, 0, "DECLARE %s SCROLL CURSOR WITH HOLD FOR %s", S->cursor_name, ZSTR_VAL(stmt->active_query_string)); S->result = PQexec(H->server, q); efree(q); @@ -177,7 +177,7 @@ static int pgsql_stmt_execute(pdo_stmt_t *stmt) stmt_retry: /* we deferred the prepare until now, because we didn't * know anything about the parameter types; now we do */ - S->result = PQprepare(H->server, S->stmt_name, S->query, + S->result = PQprepare(H->server, S->stmt_name, ZSTR_VAL(S->query), stmt->bound_params ? zend_hash_num_elements(stmt->bound_params) : 0, S->param_types); status = PQresultStatus(S->result); @@ -222,7 +222,7 @@ stmt_retry: 0); } else if (stmt->supports_placeholders == PDO_PLACEHOLDER_NAMED) { /* execute query with parameters */ - S->result = PQexecParams(H->server, S->query, + S->result = PQexecParams(H->server, ZSTR_VAL(S->query), stmt->bound_params ? zend_hash_num_elements(stmt->bound_params) : 0, S->param_types, (const char**)S->param_values, @@ -231,7 +231,7 @@ stmt_retry: 0); } else { /* execute plain query (with embedded parameters) */ - S->result = PQexec(H->server, stmt->active_query_string); + S->result = PQexec(H->server, ZSTR_VAL(stmt->active_query_string)); } status = PQresultStatus(S->result); |