How about using a stack variable for this temporary allocation? On 7/7/05, Ilia Alshanetsky <[EMAIL PROTECTED]> wrote: > Edink, > > It is malloc + PQescapeString + free, which in most cases are completely > unnecessary. While as Christopher demonstrates sequence name could > contain special chars, I'd wager that is a VERY uncommon situation. > > Ilia > > Edin Kadribasic wrote: > > Hi Ilia, > > > > Would you please revert this change? > > > > Saving one malloc/free in a function that has to query DB server anyway is > > not > > going to give you much performance improvement, while other methods are not > > portable across different PostgreSQL versions. > > > > Edin > > > > On Thursday 07 July 2005 02:52, Ilia Alshanetsky wrote: > > > >>iliaa Wed Jul 6 20:52:20 2005 EDT > >> > >> Modified files: > >> /php-src/ext/pdo_pgsql pgsql_driver.c > >> Log: > >> Faster sequence id retrieval. > >> > >> > >> > >>http://cvs.php.net/diff.php/php-src/ext/pdo_pgsql/pgsql_driver.c?r1=1.46&r2 > >>=1.47&ty=u Index: php-src/ext/pdo_pgsql/pgsql_driver.c > >>diff -u php-src/ext/pdo_pgsql/pgsql_driver.c:1.46 > >>php-src/ext/pdo_pgsql/pgsql_driver.c:1.47 --- > >>php-src/ext/pdo_pgsql/pgsql_driver.c:1.46 Fri Jul 1 18:43:16 2005 +++ > >>php-src/ext/pdo_pgsql/pgsql_driver.c Wed Jul 6 20:52:19 2005 > >>@@ -16,7 +16,7 @@ > >> +----------------------------------------------------------------------+ > >> */ > >> > >>-/* $Id: pgsql_driver.c,v 1.46 2005/07/01 22:43:16 edink Exp $ */ > >>+/* $Id: pgsql_driver.c,v 1.47 2005/07/07 00:52:19 iliaa Exp $ */ > >> > >> #ifdef HAVE_CONFIG_H > >> #include "config.h" > >>@@ -210,15 +210,16 @@ > >> *len = spprintf(&id, 0, "%ld", (long) H->pgoid); > >> } else { > >> PGresult *res; > >>- char *name_escaped, *q; > >>- size_t l = strlen(name); > >>+ char *q; > >> ExecStatusType status; > >> > >>- name_escaped = safe_emalloc(l, 2, 1); > >>- PQescapeString(name_escaped, name, l); > >>- spprintf(&q, 0, "SELECT CURRVAL('%s')", name_escaped); > >>+ /* SQL injection protection */ > >>+ if (strchr(name, '\'')) { > >>+ return NULL; > >>+ } > >>+ > >>+ spprintf(&q, sizeof("SELECT CURRVAL('')") + strlen(name), > >>"SELECT > >>CURRVAL('%s')", name); res = PQexec(H->server, q); > >>- efree(name_escaped); > >> efree(q); > >> status = PQresultStatus(res); > > > > > > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php