/*-------------------------------------------------------------------------
*
* backend_startup . h
* prototypes for backend_startup . c .
*
*
* Portions Copyright ( c ) 1996 - 2025 , PostgreSQL Global Development Group
* Portions Copyright ( c ) 1994 , Regents of the University of California
*
* src / include / tcop / backend_startup . h
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
#ifndef BACKEND_STARTUP_H
#define BACKEND_STARTUP_H
#include "utils/timestamp.h"
/* GUCs */
extern PGDLLIMPORT bool Trace_connection_negotiation;
extern PGDLLIMPORT uint32 log_connections;
extern PGDLLIMPORT char *log_connections_string;
/* Other globals */
extern PGDLLIMPORT struct ConnectionTiming conn_timing;
/*
* CAC_state is passed from postmaster to the backend process , to indicate
* whether the connection should be accepted , or if the process should just
* send an error to the client and close the connection . Note that the
* connection can fail for various reasons even if postmaster passed CAC_OK .
*/
typedef enum CAC_state
{
CAC_OK,
CAC_STARTUP,
CAC_SHUTDOWN,
CAC_RECOVERY,
CAC_NOTHOTSTANDBY,
CAC_TOOMANY,
} CAC_state;
/* Information passed from postmaster to backend process in 'startup_data' */
typedef struct BackendStartupData
{
CAC_state canAcceptConnections;
/*
* Time at which the connection client socket is created . Only used for
* client and wal sender connections .
*/
TimestampTz socket_created;
/*
* Time at which the postmaster initiates process creation - - either
* through fork or otherwise . Only used for client and wal sender
* connections .
*/
TimestampTz fork_started;
} BackendStartupData;
/*
* Granular control over which messages to log for the log_connections GUC .
*
* RECEIPT , AUTHENTICATION , AUTHORIZATION , and SETUP_DURATIONS are different
* aspects of connection establishment and backend setup for which we may emit
* a log message .
*
* ALL is a convenience alias equivalent to all of the above aspects .
*
* ON is backwards compatibility alias for the connection aspects that were
* logged in Postgres versions < 18 .
*/
typedef enum LogConnectionOption
{
LOG_CONNECTION_RECEIPT = (1 << 0 ),
LOG_CONNECTION_AUTHENTICATION = (1 << 1 ),
LOG_CONNECTION_AUTHORIZATION = (1 << 2 ),
LOG_CONNECTION_SETUP_DURATIONS = (1 << 3 ),
LOG_CONNECTION_ON =
LOG_CONNECTION_RECEIPT |
LOG_CONNECTION_AUTHENTICATION |
LOG_CONNECTION_AUTHORIZATION,
LOG_CONNECTION_ALL =
LOG_CONNECTION_RECEIPT |
LOG_CONNECTION_AUTHENTICATION |
LOG_CONNECTION_AUTHORIZATION |
LOG_CONNECTION_SETUP_DURATIONS,
} LogConnectionOption;
/*
* A collection of timings of various stages of connection establishment and
* setup for client backends and WAL senders .
*
* Used to emit the setup_durations log message for the log_connections GUC .
*/
typedef struct ConnectionTiming
{
/*
* The time at which the client socket is created and the time at which
* the connection is fully set up and first ready for query . Together
* these represent the total connection establishment and setup time .
*/
TimestampTz socket_create;
TimestampTz ready_for_use;
/* Time at which process creation was initiated */
TimestampTz fork_start;
/* Time at which process creation was completed */
TimestampTz fork_end;
/* Time at which authentication started */
TimestampTz auth_start;
/* Time at which authentication was finished */
TimestampTz auth_end;
} ConnectionTiming;
pg_noreturn extern void BackendMain(const void *startup_data, size_t startup_data_len);
#endif /* BACKEND_STARTUP_H */
Messung V0.5 in Prozent C=93 H=95 G=93
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-08-08)
¤
*© Formatika GbR, Deutschland