Author: turnstep
Date: Sun Aug 2 14:45:20 2009
New Revision: 13152
Modified:
DBD-Pg/trunk/dbdimp.c
Log:
Use PQexecPrepared, even if not placeholders.
Modified: DBD-Pg/trunk/dbdimp.c
==============================================================================
--- DBD-Pg/trunk/dbdimp.c (original)
+++ DBD-Pg/trunk/dbdimp.c Sun Aug 2 14:45:20 2009
@@ -1986,16 +1986,18 @@
if (TRACE7) {
TRC(DBILOGFP, "%sPlaceholder type: %d numsegs: %d numphs: %d\n",
THEADER, imp_sth->placeholder_type, imp_sth->numsegs,
imp_sth->numphs);
- TRC(DBILOGFP, "%sPlaceholder numbers, ph id, and segments:\n",
+ TRC(DBILOGFP, "%sPlaceholder numbers and segments:\n",
THEADER);
for (currseg=imp_sth->seg; NULL != currseg;
currseg=currseg->nextseg) {
TRC(DBILOGFP, "%sPH: (%d) SEG: (%s)\n",
THEADER, currseg->placeholder,
currseg->segment);
}
- TRC(DBILOGFP, "%sPlaceholder number, fooname, id:\n", THEADER);
- for (xlen=1,currph=imp_sth->ph; NULL != currph;
currph=currph->nextph,xlen++) {
- TRC(DBILOGFP, "%s#%d FOONAME: (%s)\n",
- THEADER, (int)xlen, currph->fooname);
+ if (imp_sth->numphs) {
+ TRC(DBILOGFP, "%sPlaceholder number, fooname, id:\n",
THEADER);
+ for (xlen=1,currph=imp_sth->ph; NULL != currph;
currph=currph->nextph,xlen++) {
+ TRC(DBILOGFP, "%s#%d FOONAME: (%s)\n",
+ THEADER, (int)xlen, currph->fooname);
+ }
}
}
@@ -2976,10 +2978,10 @@
}
/* We use the new server_side prepare style if:
- 1. The statement is DML
+ 1. The statement is DML (DDL is not prepareable)
2. The attribute "pg_direct" is false
3. The attribute "pg_server_prepare" is not 0
- 4. There is one or more placeholders (but "onetime" has not been set)
+ 4. The "onetime" attribute has not been set
5. There are no DEFAULT or CURRENT values
6a. The attribute "pg_server_prepare" is 1
OR
@@ -3000,7 +3002,7 @@
&& 0 != imp_sth->server_prepare
&& !imp_sth->has_default
&& !imp_sth->has_current
- && (1 <= imp_sth->numphs && !imp_sth->onetime)
+ && !imp_sth->onetime
&& (1 == imp_sth->server_prepare
|| (imp_sth->numbound == imp_sth->numphs))
){
@@ -3033,8 +3035,8 @@
}
}
- if (TRACE5) TRC(DBILOGFP, "%sRunning PQexecPrepared with
(%s)\n",
- THEADER, imp_sth->prepare_name);
+ if (TRACE5) TRC(DBILOGFP, "%sRunning PQexecPrepared with (%s)
(%s)\n",
+ THEADER, imp_sth->prepare_name,
imp_sth->PQvals);
if (TSQL) {
TRC(DBILOGFP, "EXECUTE %s (\n", imp_sth->prepare_name);
for (x=0,currph=imp_sth->ph; NULL != currph;
currph=currph->nextph,x++) {