62#include "utils/fmgroids.h"
287 port->application_name);
290 if (
port->ssl_in_use)
303 _(
" GSS (authenticated=%s, encrypted=%s, delegated_credentials=%s, principal=%s)"),
310 _(
" GSS (authenticated=%s, encrypted=%s, delegated_credentials=%s)"),
350 errmsg(
"database \"%s\" has disappeared from pg_database",
352 errdetail(
"Database OID %u now seems to belong to \"%s\".",
372 errmsg(
"database \"%s\" is not currently accepting connections",
385 errmsg(
"permission denied for database \"%s\"",
name),
386 errdetail(
"User does not have CONNECT privilege.")));
400 if (
dbform->datconnlimit >= 0 &&
406 errmsg(
"too many connections for database \"%s\"",
436 (
errmsg(
"database locale is incompatible with operating system"),
437 errdetail(
"The database was initialized with LC_CTYPE \"%s\", "
438 " which is not recognized by setlocale().", ctype),
439 errhint(
"Recreate the database with another locale or install the missing locale.")));
470 "database \"%s\" has no actual collation version, but a version was recorded",
474 (
errmsg(
"database \"%s\" has a collation version mismatch",
476 errdetail(
"The database was created using collation version %s, "
477 "but the operating system provides version %s.",
479 errhint(
"Rebuild all objects in this database that use the default collation and run "
480 "ALTER DATABASE %s REFRESH COLLATION VERSION, "
481 "or build PostgreSQL with the right library version.",
569 errmsg(
"too many server processes configured"),
570 errdetail(
"\"max_connections\" (%d) plus \"autovacuum_worker_slots\" (%d) plus \"max_worker_processes\" (%d) plus \"max_wal_senders\" (%d) must be less than %d.",
884 errmsg(
"no roles are defined in this database system"),
885 errhint(
"You should immediately run CREATE USER \"%s\" SUPERUSER;.",
930 errmsg(
"must be superuser to connect in binary upgrade mode")));
950 errmsg(
"remaining connection slots are reserved for roles with the %s attribute",
956 errmsg(
"remaining connection slots are reserved for roles with privileges of the \"%s\" role",
957 "pg_use_reserved_connections")));
968 errmsg(
"permission denied to start WAL sender"),
969 errdetail(
"Only roles with the %s attribute may start a WAL sender process.",
1090 errdetail(
"It seems to have just been dropped or renamed.")));
1094 errmsg(
"database %u does not exist", dboid)));
1103 errmsg(
"cannot connect to invalid database \"%s\"",
dbname),
1104 errhint(
"Use DROP DATABASE to drop invalid databases."));
1162 errmsg(
"database \"%s\" does not exist",
1164 errdetail(
"The database subdirectory \"%s\" is missing.",
1169 errmsg(
"could not access directory \"%s\": %m",
1283 av[
ac++] =
"postgres";
1480 elog(
ERROR,
"StoreConnectionWarning() called after EmitConnectionWarnings()");
1503 elog(
ERROR,
"EmitConnectionWarnings() called more than once");
void initialize_acl(void)
bool has_privs_of_role(Oid member, Oid role)
AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode mode)
void pgaio_init_backend(void)
void ClientAuthentication(Port *port)
int autovacuum_worker_slots
TimestampTz GetCurrentTimestamp(void)
ConnectionTiming conn_timing
@ LOG_CONNECTION_AUTHORIZATION
void pgstat_bestart_security(void)
void pgstat_bestart_initial(void)
void pgstat_bestart_final(void)
bool be_gssapi_get_auth(Port *port)
bool be_gssapi_get_enc(Port *port)
const char * be_gssapi_get_princ(Port *port)
bool be_gssapi_get_delegation(Port *port)
const char * be_tls_get_version(Port *port)
int be_tls_get_cipher_bits(Port *port)
const char * be_tls_get_cipher(Port *port)
void InitBufferManagerAccess(void)
#define TextDatumGetCString(d)
#define Assert(condition)
#define OidIsValid(objectId)
bool database_is_invalid_form(Form_pg_database datform)
int errcode_for_file_access(void)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
int errhint(const char *fmt,...) pg_attribute_printf(1
int errdetail(const char *fmt,...) pg_attribute_printf(1
int int errmsg_internal(const char *fmt,...) pg_attribute_printf(1
#define ereport(elevel,...)
void InitFileAccess(void)
void InitTemporaryFileAccess(void)
#define palloc_array(type, count)
void systable_endscan(SysScanDesc sysscan)
HeapTuple systable_getnext(SysScanDesc sysscan)
SysScanDesc systable_beginscan(Relation heapRelation, Oid indexId, bool indexOK, Snapshot snapshot, int nkeys, ScanKey key)
volatile sig_atomic_t IdleStatsUpdateTimeoutPending
bool MyDatabaseHasLoginEventTriggers
volatile sig_atomic_t InterruptPending
volatile sig_atomic_t IdleSessionTimeoutPending
volatile sig_atomic_t IdleInTransactionSessionTimeoutPending
volatile sig_atomic_t TransactionTimeoutPending
uint8 MyCancelKey[MAX_CANCEL_KEY_LENGTH]
volatile sig_atomic_t CheckClientConnectionPending
void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source)
const char * hba_authname(UserAuth auth_method)
HeapTuple heap_getnext(TableScanDesc sscan, ScanDirection direction)
HeapTuple heap_copytuple(HeapTuple tuple)
#define HeapTupleIsValid(tuple)
static void * GETSTRUCT(const HeapTupleData *tuple)
#define INJECTION_POINT(name, arg)
void before_shmem_exit(pg_on_exit_callback function, Datum arg)
void SetLatch(Latch *latch)
List * lappend(List *list, void *datum)
void list_free_deep(List *list)
void LockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void InitLockManagerAccess(void)
void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks)
int FastPathLockGroupsPerBackend
void InitializeProcessXLogLogicalInfo(void)
void InitializeClientEncoding(void)
const char * GetDatabaseEncodingName(void)
void SetDatabaseEncoding(int encoding)
char * pstrdup(const char *in)
void pfree(void *pointer)
MemoryContext TopMemoryContext
MemoryContext PostmasterContext
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
#define IsBootstrapProcessingMode()
#define INIT_PG_LOAD_SESSION_LIBS
#define AmAutoVacuumWorkerProcess()
#define AmBackgroundWorkerProcess()
#define AmLogicalSlotSyncWorkerProcess()
#define AmAutoVacuumLauncherProcess()
#define AmRegularBackendProcess()
#define INIT_PG_OVERRIDE_ROLE_LOGIN
#define INIT_PG_OVERRIDE_ALLOW_CONNS
void InitializeSessionUserId(const char *rolename, Oid roleid, bool bypass_login_check)
void InitializeSystemUser(const char *authn_id, const char *auth_method)
void InitializeSessionUserIdStandalone(void)
void process_session_preload_libraries(void)
Oid GetSessionUserId(void)
void SetDatabasePath(const char *path)
ClientConnectionInfo MyClientConnectionInfo
bool has_rolreplication(Oid roleid)
void ValidatePgVersion(const char *path)
int namestrcmp(Name name, const char *str)
void InitializeSearchPath(void)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
static uint32 pg_nextpower2_32(uint32 num)
END_CATALOG_STRUCT typedef FormData_pg_database * Form_pg_database
void ApplySetting(Snapshot snapshot, Oid databaseid, Oid roleid, Relation relsetting, GucSource source)
#define forboth(cell1, list1, cell2, list2)
static ListCell * list_head(const List *l)
static ListCell * lnext(const List *l, const ListCell *c)
char * get_collation_actual_version(char collprovider, const char *collcollate)
char * pg_perm_setlocale(int category, const char *locale)
void init_database_collation(void)
void pgstat_initialize(void)
void pgstat_before_server_shutdown(int code, Datum arg)
size_t strlcpy(char *dst, const char *src, size_t siz)
void EnablePortalManager(void)
void process_postgres_switches(int argc, char *argv[], GucContext ctx, const char **dbname)
static Datum ObjectIdGetDatum(Oid X)
static Datum CStringGetDatum(const char *X)
static void ShutdownPostgres(int code, Datum arg)
static void IdleInTransactionSessionTimeoutHandler(void)
static void LockTimeoutHandler(void)
void InitializeMaxBackends(void)
void pg_split_opts(char **argv, int *argcp, const char *optstr)
static void IdleStatsUpdateTimeoutHandler(void)
static void process_settings(Oid databaseid, Oid roleid)
void StoreConnectionWarning(char *msg, char *detail)
static void IdleSessionTimeoutHandler(void)
static void process_startup_options(Port *port, bool am_superuser)
static void StatementTimeoutHandler(void)
static void EmitConnectionWarnings(void)
static void CheckMyDatabase(const char *name, bool am_superuser, bool override_allow_connections)
static bool ThereIsAtLeastOneRole(void)
static void PerformAuthentication(Port *port)
void InitializeFastPathLocks(void)
static void ClientCheckTimeoutHandler(void)
static HeapTuple GetDatabaseTuple(const char *dbname)
void InitPostgres(const char *in_dbname, Oid dboid, const char *username, Oid useroid, bits32 flags, char *out_dbname)
static HeapTuple GetDatabaseTupleByOid(Oid dboid)
static List * ConnectionWarningDetails
static bool ConnectionWarningsEmitted
static void TransactionTimeoutHandler(void)
static List * ConnectionWarningMessages
bool ClientAuthInProgress
int AuthenticationTimeout
int SuperuserReservedConnections
#define FP_LOCK_GROUPS_PER_BACKEND_MAX
#define FP_LOCK_SLOTS_PER_GROUP
#define NUM_SPECIAL_WORKER_PROCS
int CountDBConnections(Oid databaseid)
void ProcSignalInit(const uint8 *cancel_key, int cancel_key_len)
static void set_ps_display(const char *activity)
bool criticalSharedRelcachesBuilt
void RelationCacheInitializePhase3(void)
void RelationCacheInitialize(void)
void RelationCacheInitializePhase2(void)
char * GetDatabasePath(Oid dbOid, Oid spcOid)
void ReleaseAuxProcessResources(bool isCommit)
ResourceOwner CurrentResourceOwner
void CreateAuxProcessResourceOwner(void)
const char * quote_identifier(const char *ident)
void ScanKeyInit(ScanKey entry, AttrNumber attributeNumber, StrategyNumber strategy, RegProcedure procedure, Datum argument)
void InitializeSession(void)
void pg_usleep(long microsec)
void SharedInvalBackendInit(bool sendOnly)
void ReplicationSlotInitialize(void)
Snapshot GetCatalogSnapshot(Oid relid)
void UnregisterSnapshot(Snapshot snapshot)
Snapshot RegisterSnapshot(Snapshot snapshot)
void InvalidateCatalogSnapshot(void)
bool HaveNFreeProcs(int n, int *nfree)
void CheckDeadLockAlert(void)
void InitProcessPhase2(void)
#define BTEqualStrategyNumber
void resetStringInfo(StringInfo str)
void appendStringInfo(StringInfo str, const char *fmt,...)
void appendStringInfoChar(StringInfo str, char ch)
void initStringInfo(StringInfo str)
void InitCatalogCache(void)
void ReleaseSysCache(HeapTuple tuple)
Datum SysCacheGetAttrNotNull(SysCacheIdentifier cacheId, HeapTuple tup, AttrNumber attributeNumber)
HeapTuple SearchSysCache1(SysCacheIdentifier cacheId, Datum key1)
Datum SysCacheGetAttr(SysCacheIdentifier cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
void table_close(Relation relation, LOCKMODE lockmode)
Relation table_open(Oid relationId, LOCKMODE lockmode)
TableScanDesc table_beginscan_catalog(Relation relation, int nkeys, ScanKeyData *key)
static void table_endscan(TableScanDesc scan)
void enable_timeout_after(TimeoutId id, int delay_ms)
void disable_timeout(TimeoutId id, bool keep_indicator)
TimeoutId RegisterTimeout(TimeoutId id, timeout_handler_proc handler)
@ IDLE_IN_TRANSACTION_SESSION_TIMEOUT
@ IDLE_STATS_UPDATE_TIMEOUT
@ CLIENT_CONNECTION_CHECK_TIMEOUT
void StartTransactionCommand(void)
void SetCurrentStatementStartTimestamp(void)
void CommitTransactionCommand(void)
void AbortOutOfAnyTransaction(void)
#define XACT_READ_COMMITTED
void ShutdownXLOG(int code, Datum arg)
void InitXLogInsert(void)