summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql/pgsql_driver.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-12-11 17:13:38 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-12-14 10:43:28 +0100
commit2d51c203f09551323ed595514e03ab206fd93129 (patch)
tree5069c1608f092ee57d312d28b1b9d4064abd0c62 /ext/pdo_pgsql/pgsql_driver.c
parentc288b5294bb0e13ad2904a3ec79265f727baaea3 (diff)
downloadphp-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_driver.c')
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index 6c3375557b..3ae15e7511 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -222,14 +222,13 @@ static int pgsql_handle_closer(pdo_dbh_t *dbh) /* {{{ */
}
/* }}} */
-static int pgsql_handle_preparer(pdo_dbh_t *dbh, const char *sql, size_t sql_len, pdo_stmt_t *stmt, zval *driver_options)
+static int pgsql_handle_preparer(pdo_dbh_t *dbh, zend_string *sql, pdo_stmt_t *stmt, zval *driver_options)
{
pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
pdo_pgsql_stmt *S = ecalloc(1, sizeof(pdo_pgsql_stmt));
int scrollable;
int ret;
- char *nsql = NULL;
- size_t nsql_len = 0;
+ zend_string *nsql = NULL;
int emulate = 0;
int execute_only = 0;
@@ -269,7 +268,7 @@ static int pgsql_handle_preparer(pdo_dbh_t *dbh, const char *sql, size_t sql_len
stmt->named_rewrite_template = "$%d";
}
- ret = pdo_parse_params(stmt, (char*)sql, sql_len, &nsql, &nsql_len);
+ ret = pdo_parse_params(stmt, sql, &nsql);
if (ret == -1) {
/* couldn't grok it */
@@ -279,7 +278,7 @@ static int pgsql_handle_preparer(pdo_dbh_t *dbh, const char *sql, size_t sql_len
/* query was re-written */
S->query = nsql;
} else {
- S->query = estrdup(sql);
+ S->query = zend_string_copy(sql);
}
if (!emulate && !execute_only) {