235 if (inBuf->
len > 1 &&
236 inBuf->
data[inBuf->
len - 1] ==
'\n' &&
237 inBuf->
data[inBuf->
len - 2] ==
';')
249 if (inBuf->
len > 0 &&
250 inBuf->
data[inBuf->
len - 1] ==
'\\')
253 inBuf->
data[--inBuf->
len] =
'\0';
271 if (
c == EOF && inBuf->
len == 0)
342 (
errcode(ERRCODE_CONNECTION_FAILURE),
343 errmsg(
"unexpected EOF on client connection with an open transaction")));
353 (
errcode(ERRCODE_CONNECTION_DOES_NOT_EXIST),
428 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
429 errmsg(
"invalid frontend message type %d", qtype)));
477 int save_errno = errno;
523 int save_errno = errno;
579 List *raw_parsetree_list;
581 TRACE_POSTGRESQL_QUERY_PARSE_START(query_string);
591 #ifdef COPY_PARSE_PLAN_TREES
598 elog(
WARNING,
"copyObject() failed to produce an equal raw parse tree");
608 #ifdef WRITE_READ_PARSE_PLAN_TREES
616 elog(
WARNING,
"outfuncs/readfuncs failed to produce an equal raw parse tree");
622 TRACE_POSTGRESQL_QUERY_PARSE_DONE(query_string);
624 return raw_parsetree_list;
638 const char *query_string,
639 const Oid *paramTypes,
644 List *querytree_list;
646 TRACE_POSTGRESQL_QUERY_REWRITE_START(query_string);
665 TRACE_POSTGRESQL_QUERY_REWRITE_DONE(query_string);
667 return querytree_list;
677 const char *query_string,
683 List *querytree_list;
685 TRACE_POSTGRESQL_QUERY_REWRITE_START(query_string);
699 for (
int i = 0;
i < *numParams;
i++)
701 Oid ptype = (*paramTypes)[
i];
703 if (ptype ==
InvalidOid || ptype == UNKNOWNOID)
705 (
errcode(ERRCODE_INDETERMINATE_DATATYPE),
706 errmsg(
"could not determine data type of parameter $%d",
718 TRACE_POSTGRESQL_QUERY_REWRITE_DONE(query_string);
720 return querytree_list;
731 const char *query_string,
733 void *parserSetupArg,
737 List *querytree_list;
739 TRACE_POSTGRESQL_QUERY_REWRITE_START(query_string);
758 TRACE_POSTGRESQL_QUERY_REWRITE_DONE(query_string);
760 return querytree_list;
772 List *querytree_list;
795 #ifdef COPY_PARSE_PLAN_TREES
803 elog(
WARNING,
"copyObject() failed to produce an equal rewritten parse tree");
809 #ifdef WRITE_READ_PARSE_PLAN_TREES
815 foreach(lc, querytree_list)
819 Query *new_query = stringToNodeWithLocations(
str);
825 new_query->queryId = curr_query->queryId;
833 elog(
WARNING,
"outfuncs/readfuncs failed to produce an equal rewritten parse tree");
843 return querytree_list;
864 TRACE_POSTGRESQL_QUERY_PLAN_START();
875 #ifdef COPY_PARSE_PLAN_TREES
887 elog(
WARNING,
"copyObject() failed to produce an equal plan tree");
894 #ifdef WRITE_READ_PARSE_PLAN_TREES
901 new_plan = stringToNodeWithLocations(
str);
911 elog(
WARNING,
"outfuncs/readfuncs failed to produce an equal plan tree");
924 TRACE_POSTGRESQL_QUERY_PLAN_DONE();
944 foreach(query_list, querytrees)
954 stmt->canSetTag = query->canSetTag;
957 stmt->stmt_len = query->stmt_len;
958 stmt->queryId = query->queryId;
983 List *parsetree_list;
986 bool was_logged =
false;
987 bool use_implicit_block;
997 TRACE_POSTGRESQL_QUERY_START(query_string);
1003 if (save_log_statement_stats)
1038 (
errmsg(
"statement: %s", query_string),
1057 use_implicit_block = (
list_length(parsetree_list) > 1);
1062 foreach(parsetree_item, parsetree_list)
1065 bool snapshot_set =
false;
1069 List *querytree_list,
1074 const char *cmdtagname;
1103 (
errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),
1104 errmsg(
"current transaction is aborted, "
1105 "commands ignored until end of transaction block"),
1118 if (use_implicit_block)
1130 snapshot_set =
true;
1145 if (
lnext(parsetree_list, parsetree_item) != NULL)
1147 per_parsetree_context =
1149 "per-parsetree message context",
1252 if (
lnext(parsetree_list, parsetree_item) == NULL)
1263 if (use_implicit_block)
1307 if (per_parsetree_context)
1321 if (!parsetree_list)
1331 (
errmsg(
"duration: %s ms", msec_str),
1336 (
errmsg(
"duration: %s ms statement: %s",
1337 msec_str, query_string),
1343 if (save_log_statement_stats)
1346 TRACE_POSTGRESQL_QUERY_DONE(query_string);
1358 const char *stmt_name,
1364 List *parsetree_list;
1366 List *querytree_list;
1381 if (save_log_statement_stats)
1386 *stmt_name ? stmt_name :
"<unnamed>",
1410 is_named = (stmt_name[0] !=
'\0');
1421 unnamed_stmt_context =
1423 "unnamed prepared statement",
1441 (
errcode(ERRCODE_SYNTAX_ERROR),
1442 errmsg(
"cannot insert multiple commands into a prepared statement")));
1444 if (parsetree_list !=
NIL)
1446 bool snapshot_set =
false;
1461 (
errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),
1462 errmsg(
"current transaction is aborted, "
1463 "commands ignored until end of transaction block"),
1479 snapshot_set =
true;
1500 raw_parse_tree = NULL;
1503 querytree_list =
NIL;
1512 if (unnamed_stmt_context)
1518 unnamed_stmt_context,
1567 (
errmsg(
"duration: %s ms", msec_str),
1572 (
errmsg(
"duration: %s ms parse %s: %s",
1574 *stmt_name ? stmt_name :
"<unnamed>",
1580 if (save_log_statement_stats)
1594 const char *portal_name;
1595 const char *stmt_name;
1597 int16 *pformats = NULL;
1600 int16 *rformats = NULL;
1605 char *saved_stmt_name;
1609 bool snapshot_set =
false;
1620 *portal_name ? portal_name :
"<unnamed>",
1621 *stmt_name ? stmt_name :
"<unnamed>")));
1624 if (stmt_name[0] !=
'\0')
1637 (
errcode(ERRCODE_UNDEFINED_PSTATEMENT),
1638 errmsg(
"unnamed prepared statement does not exist")));
1650 if (save_log_statement_stats)
1666 if (numPFormats > 0)
1669 for (
int i = 0;
i < numPFormats;
i++)
1676 if (numPFormats > 1 && numPFormats != numParams)
1678 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
1679 errmsg(
"bind message has %d parameter formats but %d parameters",
1680 numPFormats, numParams)));
1684 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
1685 errmsg(
"bind message supplies %d parameters, but prepared statement \"%s\" requires %d",
1701 (
errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),
1702 errmsg(
"current transaction is aborted, "
1703 "commands ignored until end of transaction block"),
1710 if (portal_name[0] ==
'\0')
1728 saved_stmt_name =
pstrdup(stmt_name);
1730 saved_stmt_name = NULL;
1739 if (numParams > 0 ||
1744 snapshot_set =
true;
1752 char **knownTextValues = NULL;
1764 params_errcxt.
arg = (
void *) &one_param_data;
1769 for (
int paramno = 0; paramno < numParams; paramno++)
1779 one_param_data.
paramno = paramno;
1783 isNull = (plength == -1);
1798 pbuf.
maxlen = plength + 1;
1802 csave = pbuf.
data[plength];
1803 pbuf.
data[plength] =
'\0';
1811 if (numPFormats > 1)
1812 pformat = pformats[paramno];
1813 else if (numPFormats > 0)
1814 pformat = pformats[0];
1855 if (knownTextValues == NULL)
1859 knownTextValues[paramno] =
pstrdup(pstring);
1869 knownTextValues[paramno] =
1877 if (pstring != pbuf.
data)
1881 else if (pformat == 1)
1902 (
errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
1903 errmsg(
"incorrect binary data format in bind parameter %d",
1909 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
1910 errmsg(
"unsupported format code: %d",
1917 pbuf.
data[plength] = csave;
1955 params_data.
params = params;
1958 params_errcxt.
arg = (
void *) ¶ms_data;
1963 if (numRFormats > 0)
1966 for (
int i = 0;
i < numRFormats;
i++)
2025 (
errmsg(
"duration: %s ms", msec_str),
2030 (
errmsg(
"duration: %s ms bind %s%s%s: %s",
2032 *stmt_name ? stmt_name :
"<unnamed>",
2033 *portal_name ?
"/" :
"",
2034 *portal_name ? portal_name :
"",
2041 if (save_log_statement_stats)
2060 const char *sourceText;
2061 const char *prepStmtName;
2064 bool is_xact_command;
2065 bool execute_is_fetch;
2066 bool was_logged =
false;
2070 const char *cmdtagname;
2081 (
errcode(ERRCODE_UNDEFINED_CURSOR),
2082 errmsg(
"portal \"%s\" does not exist", portal_name)));
2108 prepStmtName =
"<unnamed>";
2122 if (save_log_statement_stats)
2147 execute_is_fetch = !portal->
atStart;
2155 _(
"execute fetch from") :
2158 *portal_name ?
"/" :
"",
2159 *portal_name ? portal_name :
"",
2173 (
errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),
2174 errmsg(
"current transaction is aborted, "
2175 "commands ignored until end of transaction block"),
2186 params_data.
params = portalParams;
2189 params_errcxt.
arg = (
void *) ¶ms_data;
2198 !execute_is_fetch && max_rows ==
FETCH_ALL,
2227 portalParams = NULL;
2273 (
errmsg(
"duration: %s ms", msec_str),
2278 (
errmsg(
"duration: %s ms %s %s%s%s: %s",
2281 _(
"execute fetch from") :
2284 *portal_name ?
"/" :
"",
2285 *portal_name ? portal_name :
"",
2292 if (save_log_statement_stats)
2293 ShowUsage(
"EXECUTE MESSAGE STATISTICS");
2316 foreach(stmt_item, stmt_list)
2353 bool exceeded_duration;
2354 bool exceeded_sample_duration;
2355 bool in_sample =
false;
2360 msecs = usecs / 1000;
2382 if (exceeded_sample_duration)
2390 secs * 1000 + msecs, usecs % 1000);
2391 if ((exceeded_duration || in_sample ||
xact_is_sampled) && !was_logged)
2412 foreach(parsetree_item, raw_parsetree_list)
2424 errdetail(
"prepare: %s", pstmt->plansource->query_string);
2448 if (
str &&
str[0] !=
'\0')
2464 errdetail(
"abort reason: recovery conflict");
2480 errdetail(
"User was holding shared buffer pin for too long.");
2483 errdetail(
"User was holding a relation lock for too long.");
2486 errdetail(
"User was or might have been using tablespace that must be dropped.");
2489 errdetail(
"User query might have needed to see row versions that must be removed.");
2492 errdetail(
"User transaction caused buffer deadlock with recovery.");
2495 errdetail(
"User was connected to a database that must be dropped.");
2517 if (
data->paramno < 0)
2526 quotedval =
buf.data;
2531 if (
data->portalName &&
data->portalName[0] !=
'\0')
2534 errcontext(
"portal \"%s\" parameter $%d = %s",
2535 data->portalName,
data->paramno + 1, quotedval);
2538 data->portalName,
data->paramno + 1);
2543 errcontext(
"unnamed portal parameter $%d = %s",
2544 data->paramno + 1, quotedval);
2574 if (stmt_name[0] !=
'\0')
2587 (
errcode(ERRCODE_UNDEFINED_PSTATEMENT),
2588 errmsg(
"unnamed prepared statement does not exist")));
2606 (
errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),
2607 errmsg(
"current transaction is aborted, "
2608 "commands ignored until end of transaction block"),
2670 (
errcode(ERRCODE_UNDEFINED_CURSOR),
2671 errmsg(
"portal \"%s\" does not exist", portal_name)));
2684 (
errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),
2685 errmsg(
"current transaction is aborted, "
2686 "commands ignored until end of transaction block"),
2743 #ifdef MEMORY_CONTEXT_CHECKING
2749 #ifdef SHOW_MEMORY_STATS
2841 sigprocmask(SIG_SETMASK, &
BlockSig, NULL);
2890 (
errcode(ERRCODE_ADMIN_SHUTDOWN),
2891 errmsg(
"terminating connection because of unexpected SIGQUIT signal")));
2896 (
errcode(ERRCODE_CRASH_SHUTDOWN),
2897 errmsg(
"terminating connection because of crash of another server process"),
2898 errdetail(
"The postmaster has commanded this server process to roll back"
2899 " the current transaction and exit, because another"
2900 " server process exited abnormally and possibly corrupted"
2902 errhint(
"In a moment you should be able to reconnect to the"
2903 " database and repeat your command.")));
2908 (
errcode(ERRCODE_ADMIN_SHUTDOWN),
2909 errmsg(
"terminating connection due to immediate shutdown command")));
2937 int save_errno = errno;
2971 int save_errno = errno;
2994 (
errcode(ERRCODE_FLOATING_POINT_EXCEPTION),
2995 errmsg(
"floating-point exception"),
2996 errdetail(
"An invalid floating-point operation was signaled. "
2997 "This probably means an out-of-range result or an "
2998 "invalid operation, such as division by zero.")));
3010 int save_errno = errno;
3109 elog(
FATAL,
"unrecognized conflict mode: %d",
3166 (
errcode(ERRCODE_QUERY_CANCELED),
3167 errmsg(
"canceling authentication due to timeout")));
3170 (
errcode(ERRCODE_ADMIN_SHUTDOWN),
3171 errmsg(
"terminating autovacuum process due to administrator command")));
3174 (
errcode(ERRCODE_ADMIN_SHUTDOWN),
3175 errmsg(
"terminating logical replication worker due to administrator command")));
3192 errmsg(
"terminating connection due to conflict with recovery"),
3201 (
errcode(ERRCODE_DATABASE_DROPPED),
3202 errmsg(
"terminating connection due to conflict with recovery"),
3207 (
errcode(ERRCODE_ADMIN_SHUTDOWN),
3208 errmsg(
"terminating background worker \"%s\" due to administrator command",
3212 (
errcode(ERRCODE_ADMIN_SHUTDOWN),
3213 errmsg(
"terminating connection due to administrator command")));
3243 (
errcode(ERRCODE_CONNECTION_FAILURE),
3244 errmsg(
"connection to client lost")));
3261 errmsg(
"terminating connection due to conflict with recovery"),
3263 errhint(
"In a moment you should be able to reconnect to the"
3264 " database and repeat your command.")));
3287 bool lock_timeout_occurred;
3288 bool stmt_timeout_occurred;
3305 if (lock_timeout_occurred && stmt_timeout_occurred &&
3307 lock_timeout_occurred =
false;
3309 if (lock_timeout_occurred)
3313 (
errcode(ERRCODE_LOCK_NOT_AVAILABLE),
3314 errmsg(
"canceling statement due to lock timeout")));
3316 if (stmt_timeout_occurred)
3320 (
errcode(ERRCODE_QUERY_CANCELED),
3321 errmsg(
"canceling statement due to statement timeout")));
3327 (
errcode(ERRCODE_QUERY_CANCELED),
3328 errmsg(
"canceling autovacuum task")));
3337 errmsg(
"canceling statement due to conflict with recovery"),
3350 (
errcode(ERRCODE_QUERY_CANCELED),
3351 errmsg(
"canceling statement due to user request")));
3364 (
errcode(ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT),
3365 errmsg(
"terminating connection due to idle-in-transaction timeout")));
3375 (
errcode(ERRCODE_IDLE_SESSION_TIMEOUT),
3376 errmsg(
"terminating connection due to idle-session timeout")));
3413 #ifndef HAVE__BUILTIN_FRAME_ADDRESS
3425 #ifdef HAVE__BUILTIN_FRAME_ADDRESS
3466 (
errcode(ERRCODE_STATEMENT_TOO_COMPLEX),
3467 errmsg(
"stack depth limit exceeded"),
3468 errhint(
"Increase the configuration parameter \"max_stack_depth\" (currently %dkB), "
3469 "after ensuring the platform's stack depth limit is adequate.",
3488 if (stack_depth < 0)
3489 stack_depth = -stack_depth;
3510 long newval_bytes = *
newval * 1024L;
3517 GUC_check_errhint(
"Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent.");
3527 long newval_bytes =
newval * 1024L;
3540 GUC_check_errdetail(
"client_connection_check_interval must be set to 0 on this platform.");
3577 "\"log_parser_stats\", \"log_planner_stats\", "
3578 "or \"log_executor_stats\" is true.");
3598 sprintf(debugstr,
"debug%d", debug_flag);
3609 if (debug_flag >= 2)
3611 if (debug_flag >= 3)
3613 if (debug_flag >= 4)
3615 if (debug_flag >= 5)
3623 const char *tmp = NULL;
3628 tmp =
"enable_seqscan";
3631 tmp =
"enable_indexscan";
3634 tmp =
"enable_indexonlyscan";
3637 tmp =
"enable_bitmapscan";
3640 tmp =
"enable_tidscan";
3643 tmp =
"enable_nestloop";
3646 tmp =
"enable_mergejoin";
3649 tmp =
"enable_hashjoin";
3669 return "log_parser_stats";
3670 else if (
optarg[1] ==
'l')
3671 return "log_planner_stats";
3675 return "log_executor_stats";
3716 if (argc > 1 && strcmp(argv[1],
"--single") == 0)
3727 #ifdef HAVE_INT_OPTERR
3742 while ((
flag =
getopt(argc, argv,
"B:bC:c:D:d:EeFf:h:ijk:lN:nOPp:r:S:sTt:v:W:-:")) != -1)
3771 (
errcode(ERRCODE_SYNTAX_ERROR),
3772 errmsg(
"--%s requires a value",
3776 (
errcode(ERRCODE_SYNTAX_ERROR),
3777 errmsg(
"-c %s requires a value",
3915 if (errs || argc !=
optind)
3923 errcode(ERRCODE_SYNTAX_ERROR),
3924 errmsg(
"invalid command-line argument for server process: %s", argv[
optind]),
3928 errcode(ERRCODE_SYNTAX_ERROR),
3929 errmsg(
"%s: invalid command-line argument: %s",
3939 #ifdef HAVE_INT_OPTRESET
3958 const char *
dbname = NULL;
3981 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
3982 errmsg(
"%s: no database nor user name specified",
4069 sigjmp_buf local_sigjmp_buf;
4070 volatile bool send_ready_for_query =
true;
4071 bool idle_in_transaction_timeout_enabled =
false;
4072 bool idle_session_timeout_enabled =
false;
4204 printf(
"\nPostgreSQL stand-alone backend %s\n", PG_VERSION);
4223 "RowDescriptionContext",
4251 if (sigsetjmp(local_sigjmp_buf, 1) != 0)
4349 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
4350 errmsg(
"terminating connection because protocol synchronization was lost")));
4360 send_ready_for_query =
true;
4405 if (send_ready_for_query)
4415 idle_in_transaction_timeout_enabled =
true;
4428 idle_in_transaction_timeout_enabled =
true;
4461 if (stats_timeout > 0)
4480 idle_session_timeout_enabled =
true;
4490 send_ready_for_query =
false;
4514 if (idle_in_transaction_timeout_enabled)
4517 idle_in_transaction_timeout_enabled =
false;
4519 if (idle_session_timeout_enabled)
4522 idle_session_timeout_enabled =
false;
4558 const char *query_string;
4574 send_ready_for_query =
true;
4580 const char *stmt_name;
4581 const char *query_string;
4583 Oid *paramTypes = NULL;
4596 for (
int i = 0;
i < numParams;
i++)
4602 paramTypes, numParams);
4621 const char *portal_name;
4667 send_ready_for_query =
true;
4673 const char *close_target;
4684 if (close_target[0] !=
'\0')
4703 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
4704 errmsg(
"invalid CLOSE message subtype %d",
4717 const char *describe_target;
4728 switch (describe_type)
4738 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
4739 errmsg(
"invalid DESCRIBE message subtype %d",
4755 send_ready_for_query =
true;
4801 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
4802 errmsg(
"invalid frontend message type %d",
4820 if (firstchar ==
'F')
4822 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
4823 errmsg(
"fastpath function calls not supported in a replication connection")));
4826 (
errcode(ERRCODE_PROTOCOL_VIOLATION),
4827 errmsg(
"extended query protocol not supported in a replication connection")));
4840 #if defined(HAVE_GETRLIMIT)
4841 static long val = 0;
4848 if (getrlimit(RLIMIT_STACK, &rlim) < 0)
4850 else if (rlim.rlim_cur == RLIM_INFINITY)
4853 else if (rlim.rlim_cur >= LONG_MAX)
4856 val = rlim.rlim_cur;
4861 return WIN32_STACK_RLIMIT;
4867 static struct timeval
Save_t;
4880 struct timeval
user,
4882 struct timeval elapse_t;
4888 memcpy((
char *) &sys, (
char *) &r.
ru_stime,
sizeof(sys));
4889 if (elapse_t.tv_usec <
Save_t.tv_usec)
4892 elapse_t.tv_usec += 1000000;
4913 "!\t%ld.%06ld s user, %ld.%06ld s system, %ld.%06ld s elapsed\n",
4918 (
long) (elapse_t.tv_sec -
Save_t.tv_sec),
4919 (
long) (elapse_t.tv_usec -
Save_t.tv_usec));
4921 "!\t[%ld.%06ld s user, %ld.%06ld s system total]\n",
4923 (
long)
user.tv_usec,
4925 (
long) sys.tv_usec);
4935 "!\t%ld kB max resident size\n",
4945 "!\t%ld/%ld [%ld/%ld] filesystem blocks in/out\n",
4946 r.ru_inblock -
Save_r.ru_inblock,
4948 r.ru_oublock -
Save_r.ru_oublock,
4949 r.ru_inblock, r.ru_oublock);
4951 "!\t%ld/%ld [%ld/%ld] page faults/reclaims, %ld [%ld] swaps\n",
4952 r.ru_majflt -
Save_r.ru_majflt,
4953 r.ru_minflt -
Save_r.ru_minflt,
4954 r.ru_majflt, r.ru_minflt,
4955 r.ru_nswap -
Save_r.ru_nswap,
4958 "!\t%ld [%ld] signals rcvd, %ld/%ld [%ld/%ld] messages rcvd/sent\n",
4959 r.ru_nsignals -
Save_r.ru_nsignals,
4961 r.ru_msgrcv -
Save_r.ru_msgrcv,
4962 r.ru_msgsnd -
Save_r.ru_msgsnd,
4963 r.ru_msgrcv, r.ru_msgsnd);
4965 "!\t%ld/%ld [%ld/%ld] voluntary/involuntary context switches\n",
4966 r.ru_nvcsw -
Save_r.ru_nvcsw,
4967 r.ru_nivcsw -
Save_r.ru_nivcsw,
4968 r.ru_nvcsw, r.ru_nivcsw);
4972 if (
str.data[
str.len - 1] ==
'\n')
4973 str.data[--
str.len] =
'\0';
4999 msecs = usecs / 1000;
5007 (
errmsg(
"disconnection: session time: %d:%02d:%02d.%03d "
5008 "user=%s database=%s host=%s%s%s",
5009 hours, minutes, seconds, msecs,
5010 port->user_name,
port->database_name,
port->remote_host,
5011 port->remote_port[0] ?
" port=" :
"",
port->remote_port)));
Datum querytree(PG_FUNCTION_ARGS)
volatile sig_atomic_t ParallelApplyMessagePending
void HandleParallelApplyMessages(void)
void ProcessNotifyInterrupt(bool flush)
volatile sig_atomic_t notifyInterruptPending
bool IsAutoVacuumWorkerProcess(void)
void HandleParallelMessages(void)
volatile sig_atomic_t ParallelMessagePending
void DropPreparedStatement(const char *stmt_name, bool showError)
PreparedStatement * FetchPreparedStatement(const char *stmt_name, bool throwError)
void StorePreparedStatement(const char *stmt_name, CachedPlanSource *plansource, bool from_sql)
void elog_node_display(int lev, const char *title, const void *obj, bool pretty)
List * raw_parser(const char *str, RawParseMode mode)
bool IsLogicalWorker(void)
void TimestampDifference(TimestampTz start_time, TimestampTz stop_time, long *secs, int *microsecs)
TimestampTz GetCurrentTimestamp(void)
void pgstat_report_query_id(uint64 query_id, bool force)
void pgstat_report_activity(BackendState state, const char *cmd_str)
@ STATE_IDLEINTRANSACTION_ABORTED
@ STATE_IDLEINTRANSACTION
bool HoldingBufferPinThatDelaysRecovery(void)
#define unconstify(underlying_type, expr)
const char * GetCommandTagNameAndLen(CommandTag commandTag, Size *len)
elog(ERROR, "%s: %s", p2, msg)
void EndCommand(const QueryCompletion *qc, CommandDest dest, bool force_undecorated_output)
void BeginCommand(CommandTag commandTag, CommandDest dest)
void ReadyForQuery(CommandDest dest)
DestReceiver * CreateDestReceiver(CommandDest dest)
void NullCommand(CommandDest dest)
int errmsg_internal(const char *fmt,...)
int errhidestmt(bool hide_stmt)
void EmitErrorReport(void)
int errdetail_internal(const char *fmt,...)
int errdetail(const char *fmt,...)
ErrorContextCallback * error_context_stack
void FlushErrorState(void)
int errhint(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
sigjmp_buf * PG_exception_stack
#define WARNING_CLIENT_ONLY
#define ereport(elevel,...)
bool equal(const void *a, const void *b)
void HandleFunctionRequest(StringInfo msgBuf)
#define palloc_array(type, count)
#define palloc0_array(type, count)
Datum OidReceiveFunctionCall(Oid functionId, StringInfo buf, Oid typioparam, int32 typmod)
Datum OidInputFunctionCall(Oid functionId, char *str, Oid typioparam, int32 typmod)
volatile sig_atomic_t IdleStatsUpdateTimeoutPending
volatile sig_atomic_t LogMemoryContextPending
volatile sig_atomic_t ProcSignalBarrierPending
volatile sig_atomic_t InterruptPending
volatile sig_atomic_t IdleSessionTimeoutPending
volatile uint32 QueryCancelHoldoffCount
ProtocolVersion FrontendProtocol
volatile sig_atomic_t IdleInTransactionSessionTimeoutPending
volatile uint32 InterruptHoldoffCount
volatile sig_atomic_t ClientConnectionLost
volatile uint32 CritSectionCount
volatile sig_atomic_t QueryCancelPending
TimestampTz MyStartTimestamp
char OutputFileName[MAXPGPATH]
volatile sig_atomic_t ProcDiePending
volatile sig_atomic_t CheckClientConnectionPending
void BeginReportingGUCOptions(void)
void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source)
bool SelectConfigFiles(const char *userDoption, const char *progname)
void ParseLongOption(const char *string, char **name, char **value)
void InitializeGUCOptions(void)
void ReportChangedGUCOptions(void)
#define GUC_check_errdetail
#define GUC_check_errhint
void ProcessConfigFile(GucContext context)
int log_parameter_max_length_on_error
int log_min_duration_statement
int log_min_duration_sample
bool Debug_print_rewritten
int log_parameter_max_length
double log_statement_sample_rate
volatile sig_atomic_t ConfigReloadPending
void SignalHandlerForConfigReload(SIGNAL_ARGS)
void on_proc_exit(pg_on_exit_callback function, Datum arg)
bool proc_exit_inprogress
void InitializeShmemGUCs(void)
void CreateSharedMemoryAndSemaphores(void)
if(TABLE==NULL||TABLE_index==NULL)
void jit_reset_after_error(void)
void SetLatch(Latch *latch)
bool WaitEventSetCanReportClosed(void)
bool IsLogicalLauncher(void)
#define PQ_SMALL_MESSAGE_LIMIT
#define PQ_LARGE_MESSAGE_LIMIT
static void const char fflush(stdout)
Assert(fmt[strlen(fmt) - 1] !='\n')
static List * new_list(NodeTag type, int min_size)
List * lappend(List *list, void *datum)
void getTypeInputInfo(Oid type, Oid *typInput, Oid *typIOParam)
void getTypeBinaryInputInfo(Oid type, Oid *typReceive, Oid *typIOParam)
char * pg_client_to_server(const char *s, int len)
char * pnstrdup(const char *in, Size len)
MemoryContext MessageContext
void MemoryContextSetParent(MemoryContext context, MemoryContext new_parent)
char * pstrdup(const char *in)
void pfree(void *pointer)
MemoryContext TopMemoryContext
void MemoryContextStats(MemoryContext context)
MemoryContext PostmasterContext
void ProcessLogMemoryContextInterrupt(void)
void MemoryContextDelete(MemoryContext context)
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
#define MemoryContextResetAndDeleteChildren(ctx)
#define RESUME_INTERRUPTS()
#define HOLD_CANCEL_INTERRUPTS()
#define RESUME_CANCEL_INTERRUPTS()
#define CHECK_FOR_INTERRUPTS()
#define HOLD_INTERRUPTS()
#define SetProcessingMode(mode)
void ChangeToDataDir(void)
void process_shmem_requests(void)
void InitStandaloneProcess(const char *argv0)
void process_shared_preload_libraries(void)
void CreateDataDirLockFile(bool amPostmaster)
#define IsA(nodeptr, _type_)
char * nodeToString(const void *obj)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
ParamListInfo makeParamList(int numParams)
char * BuildParamLogString(ParamListInfo params, char **knownTextValues, int maxlen)
void ParamsErrorCallback(void *arg)
void(* ParserSetupHook)(struct ParseState *pstate, void *arg)
#define CURSOR_OPT_PARALLEL_OK
#define CURSOR_OPT_BINARY
Query * parse_analyze_withcb(RawStmt *parseTree, const char *sourceText, ParserSetupHook parserSetup, void *parserSetupArg, QueryEnvironment *queryEnv)
bool analyze_requires_snapshot(RawStmt *parseTree)
Query * parse_analyze_varparams(RawStmt *parseTree, const char *sourceText, Oid **paramTypes, int *numParams, QueryEnvironment *queryEnv)
Query * parse_analyze_fixedparams(RawStmt *parseTree, const char *sourceText, const Oid *paramTypes, int numParams, QueryEnvironment *queryEnv)
int getopt(int nargc, char *const *nargv, const char *ostr)
PGDLLIMPORT char * optarg
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define linitial_node(type, l)
static ListCell * lnext(const List *l, const ListCell *c)
double pg_prng_double(pg_prng_state *state)
pg_prng_state pg_global_prng_state
static rewind_source * source
#define MAX_MULTIBYTE_CHAR_LEN
#define ERRCODE_T_R_SERIALIZATION_FAILURE
long pgstat_report_stat(bool force)
void pgstat_report_connect(Oid dboid)
void pgstat_report_recovery_conflict(int reason)
SessionEndType pgStatSessionEndCause
void DropCachedPlan(CachedPlanSource *plansource)
List * CachedPlanGetTargetList(CachedPlanSource *plansource, QueryEnvironment *queryEnv)
void SaveCachedPlan(CachedPlanSource *plansource)
void CompleteCachedPlan(CachedPlanSource *plansource, List *querytree_list, MemoryContext querytree_context, Oid *param_types, int num_params, ParserSetupHook parserSetup, void *parserSetupArg, int cursor_options, bool fixed_result)
CachedPlanSource * CreateCachedPlan(RawStmt *raw_parse_tree, const char *query_string, CommandTag commandTag)
CachedPlan * GetCachedPlan(CachedPlanSource *plansource, ParamListInfo boundParams, ResourceOwner owner, QueryEnvironment *queryEnv)
PlannedStmt * planner(Query *parse, const char *query_string, int cursorOptions, ParamListInfo boundParams)
QuitSignalReason GetQuitSignalReason(void)
pqsigfunc pqsignal(int signo, pqsigfunc func)
size_t strlcpy(char *dst, const char *src, size_t siz)
void PortalDrop(Portal portal, bool isTopCommit)
Portal GetPortalByName(const char *name)
void PortalDefineQuery(Portal portal, const char *prepStmtName, const char *sourceText, CommandTag commandTag, List *stmts, CachedPlan *cplan)
Portal CreatePortal(const char *name, bool allowDup, bool dupSilent)
void PortalErrorCleanup(void)
struct BindParamCbData BindParamCbData
static void disable_statement_timeout(void)
List * pg_parse_query(const char *query_string)
static bool IsTransactionStmtList(List *pstmts)
static bool check_log_statement(List *stmt_list)
static void exec_describe_statement_message(const char *stmt_name)
void process_postgres_switches(int argc, char *argv[], GucContext ctx, const char **dbname)
void restore_stack_base(pg_stack_base_t base)
void quickdie(SIGNAL_ARGS)
static bool IsTransactionExitStmtList(List *pstmts)
static void log_disconnections(int code, Datum arg)
static int errdetail_abort(void)
static void forbidden_in_wal_sender(char firstchar)
static void exec_execute_message(const char *portal_name, long max_rows)
bool check_max_stack_depth(int *newval, void **extra, GucSource source)
void PostgresSingleUserMain(int argc, char *argv[], const char *username)
void set_debug_options(int debug_flag, GucContext context, GucSource source)
static bool UseSemiNewlineNewline
static CachedPlanSource * unnamed_stmt_psrc
void FloatExceptionHandler(SIGNAL_ARGS)
int client_connection_check_interval
bool check_log_stats(bool *newval, void **extra, GucSource source)
static int errdetail_recovery_conflict(void)
void StatementCancelHandler(SIGNAL_ARGS)
CommandDest whereToSendOutput
long get_stack_depth_rlimit(void)
static bool ignore_till_sync
static void finish_xact_command(void)
bool set_plan_disabling_options(const char *arg, GucContext context, GucSource source)
static void enable_statement_timeout(void)
static long max_stack_depth_bytes
int check_log_duration(char *msec_str, bool was_logged)
static struct timeval Save_t
const char * debug_query_string
static void exec_simple_query(const char *query_string)
List * pg_analyze_and_rewrite_varparams(RawStmt *parsetree, const char *query_string, Oid **paramTypes, int *numParams, QueryEnvironment *queryEnv)
static int errdetail_execute(List *raw_parsetree_list)
List * pg_analyze_and_rewrite_withcb(RawStmt *parsetree, const char *query_string, ParserSetupHook parserSetup, void *parserSetupArg, QueryEnvironment *queryEnv)
void ShowUsage(const char *title)
static void exec_parse_message(const char *query_string, const char *stmt_name, Oid *paramTypes, int numParams)
List * pg_analyze_and_rewrite_fixedparams(RawStmt *parsetree, const char *query_string, const Oid *paramTypes, int numParams, QueryEnvironment *queryEnv)
static const char * userDoption
static bool RecoveryConflictRetryable
void RecoveryConflictInterrupt(ProcSignalReason reason)
static void exec_bind_message(StringInfo input_message)
static bool DoingCommandRead
List * pg_rewrite_query(Query *query)
const char * get_stats_option_name(const char *arg)
static int interactive_getc(void)
bool stack_is_too_deep(void)
static ProcSignalReason RecoveryConflictReason
static int errdetail_params(ParamListInfo params)
static int SocketBackend(StringInfo inBuf)
void ProcessClientReadInterrupt(bool blocked)
void assign_max_stack_depth(int newval, void *extra)
static bool RecoveryConflictPending
void ProcessInterrupts(void)
static void bind_param_error_callback(void *arg)
static bool IsTransactionExitStmt(Node *parsetree)
PlannedStmt * pg_plan_query(Query *querytree, const char *query_string, int cursorOptions, ParamListInfo boundParams)
void PostgresMain(const char *dbname, const char *username)
static MemoryContext row_description_context
static int InteractiveBackend(StringInfo inBuf)
static char * stack_base_ptr
static struct rusage Save_r
bool check_client_connection_check_interval(int *newval, void **extra, GucSource source)
static StringInfoData row_description_buf
void ProcessClientWriteInterrupt(bool blocked)
static bool doing_extended_query_message
static void start_xact_command(void)
List * pg_plan_queries(List *querytrees, const char *query_string, int cursorOptions, ParamListInfo boundParams)
static void exec_describe_portal_message(const char *portal_name)
void check_stack_depth(void)
pg_stack_base_t set_stack_base(void)
static void drop_unnamed_stmt(void)
static int ReadCommand(StringInfo inBuf)
bool check_stage_log_stats(bool *newval, void **extra, GucSource source)
void InitializeMaxBackends(void)
void InitPostgres(const char *in_dbname, Oid dboid, const char *username, Oid useroid, bool load_session_libraries, bool override_allow_connections, char *out_dbname)
bool ClientAuthInProgress
BackgroundWorker * MyBgworkerEntry
int pq_getmessage(StringInfo s, int maxlen)
bool pq_is_reading_msg(void)
bool pq_check_connection(void)
void pq_startmsgread(void)
void PortalSetResultFormat(Portal portal, int nFormats, int16 *formats)
void PortalStart(Portal portal, ParamListInfo params, int eflags, Snapshot snapshot)
bool PortalRun(Portal portal, long count, bool isTopLevel, bool run_once, DestReceiver *dest, DestReceiver *altdest, QueryCompletion *qc)
List * FetchPortalTargetList(Portal portal)
void SetRemoteDestReceiverParams(DestReceiver *self, Portal portal)
void SendRowDescriptionMessage(StringInfo buf, TupleDesc typeinfo, List *targetlist, int16 *formats)
void ProcessProcSignalBarrier(void)
void procsignal_sigusr1_handler(SIGNAL_ARGS)
@ PROCSIG_RECOVERY_CONFLICT_BUFFERPIN
@ PROCSIG_RECOVERY_CONFLICT_LOCK
@ PROCSIG_RECOVERY_CONFLICT_DATABASE
@ PROCSIG_RECOVERY_CONFLICT_SNAPSHOT
@ PROCSIG_RECOVERY_CONFLICT_TABLESPACE
@ PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK
void set_ps_display_with_len(const char *activity, size_t len)
static void set_ps_display(const char *activity)
int getrusage(int who, struct rusage *rusage)
List * QueryRewrite(Query *parsetree)
void ProcessCatchupInterrupt(void)
volatile sig_atomic_t catchupInterruptPending
void ReplicationSlotCleanup(void)
ReplicationSlot * MyReplicationSlot
void ReplicationSlotRelease(void)
Snapshot GetTransactionSnapshot(void)
void PushActiveSnapshot(Snapshot snapshot)
bool ActiveSnapshotSet(void)
void InvalidateCatalogSnapshotConditionally(void)
void PopActiveSnapshot(void)
bool IsWaitingForLock(void)
int IdleInTransactionSessionTimeout
int GetStartupBufferPinWaitBufId(void)
void LockErrorCleanup(void)
void CheckDeadLockAlert(void)
void resetStringInfo(StringInfo str)
void appendStringInfo(StringInfo str, const char *fmt,...)
void appendStringInfoString(StringInfo str, const char *s)
void appendStringInfoChar(StringInfo str, char ch)
void initStringInfo(StringInfo str)
void appendStringInfoStringQuoted(StringInfo str, const char *s, int maxlen)
char bgw_type[BGW_MAXLEN]
const char * query_string
struct RawStmt * raw_parse_tree
struct ErrorContextCallback * previous
void(* callback)(void *arg)
bool recoveryConflictPending
ParamExternData params[FLEXIBLE_ARRAY_MEMBER]