*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.462 2005/09/24 17:53:15 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.463 2005/09/26 15:51:12 momjian Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
else
portal = CreatePortal(portal_name, false, false);
+ /* We need to output the parameter values someday */
if (log_statement == LOGSTMT_ALL)
ereport(LOG,
(errmsg("statement: <BIND> %s", portal_name)));
bool save_log_duration = log_duration;
int save_log_min_duration_statement = log_min_duration_statement;
bool save_log_statement_stats = log_statement_stats;
+ bool execute_is_fetch = false;
/* Adjust destination to tell printtup.c what to do */
dest = whereToSendOutput;
(errcode(ERRCODE_UNDEFINED_CURSOR),
errmsg("portal \"%s\" does not exist", portal_name)));
+ /*
+ * If we re-issue an Execute protocol request against an existing
+ * portal, then we are only fetching more rows rather than
+ * completely re-executing the query from the start. atStart is never
+ * reset for a v3 portal, so we are safe to use this check.
+ */
+ if (!portal->atStart)
+ execute_is_fetch = true;
+
/*
* If the original query was a null string, just return
* EmptyQueryResponse.
return;
}
- if (portal->sourceText)
+ /* Should we display the portal names here? */
+ if (execute_is_fetch)
+ {
+ debug_query_string = "fetch message";
+ pgstat_report_activity("<FETCH>");
+ }
+ else if (portal->sourceText)
{
debug_query_string = portal->sourceText;
pgstat_report_activity(portal->sourceText);
if (log_statement == LOGSTMT_ALL)
/* We have the portal, so output the source query. */
ereport(LOG,
- (errmsg("statement: EXECUTE %s [PREPARE: %s]",
+ (errmsg("statement: %sEXECUTE %s [PREPARE: %s]",
+ (execute_is_fetch) ? "FETCH from " : "",
(*portal_name != '\0') ? portal_name : "<unnamed>",
portal->sourceText ? portal->sourceText : "")));
(save_log_min_duration_statement > 0 &&
usecs >= save_log_min_duration_statement * 1000))
ereport(LOG,
- (errmsg("duration: %ld.%03ld ms statement: EXECUTE %s [PREPARE: %s]",
+ (errmsg("duration: %ld.%03ld ms statement: %sEXECUTE %s [PREPARE: %s]",
(long) ((stop_t.tv_sec - start_t.tv_sec) * 1000 +
(stop_t.tv_usec - start_t.tv_usec) / 1000),
(long) (stop_t.tv_usec - start_t.tv_usec) % 1000,
+ (execute_is_fetch) ? "FETCH from " : "",
(*portal_name != '\0') ? portal_name : "<unnamed>",
portal->sourceText ? portal->sourceText : "")));
}