On Tue, Nov 08, 2022 at 07:30:38PM +0100, Sergey Dudoladov wrote:
> +        <entry>Logs reception of a connection. At this point a connection 
> has been received, but no further work has been done:

receipt

> +        <entry>Logs the original identity that an authentication method 
> employs to identify a user. In most cases, the identity string equals the 
> PostgreSQL username,

s/equals/matches

> +/* check_hook: validate new log_connection_messages value */
> +bool
> +check_log_connection_messages(char **newval, void **extra, GucSource source)
> +{
> +     char            *rawname;
> +     List            *namelist;
> +     ListCell        *l;
> +     char            *log_connection_messages = *newval;
> +     bool            *myextra;
> +
> +     /*
> +      * Set up the "extra" struct actually used by 
> assign_log_connection_messages.
> +      */
> +     myextra = (bool *) guc_malloc(LOG, 4 * sizeof(bool));

This function hardcodes each of the 4 connections:

> +             if (pg_strcasecmp(stage, "received") == 0)
> +                     myextra[0] = true;

It'd be better to use #defines or enums for these.

> --- a/src/backend/tcop/postgres.c
> +++ b/src/backend/tcop/postgres.c
> @@ -84,8 +84,11 @@ const char *debug_query_string; /* client-supplied query 
> string */
>  /* Note: whereToSendOutput is initialized for the bootstrap/standalone case 
> */
>  CommandDest whereToSendOutput = DestDebug;
>  
> -/* flag for logging end of session */
> -bool         Log_disconnections = false;
> +/* flags for logging information about session state */
> +bool         Log_disconnected = false;
> +bool         Log_authenticated = false;
> +bool         Log_authorized = false;
> +bool         Log_received = false;

I think this ought to be an integer with flag bits, rather than 4
booleans (I don't know, but there might be more later?).  Then, the
implementation follows the user-facing GUC and also follows
log_destination.

-- 
Justin


Reply via email to