Re: Improve the error message for logical replication of regular column to generated column. - Mailing list pgsql-hackers

From Peter Smith
Subject Re: Improve the error message for logical replication of regular column to generated column.
Date
Msg-id CAHut+PvxXUUb5CwXmj8c6DK010dz4MXr=VmZsmwM4HPc4Kzabw@mail.gmail.com
Whole thread Raw
In response to Re: Improve the error message for logical replication of regular column to generated column.  (vignesh C <vignesh21@gmail.com>)
Responses Re: Improve the error message for logical replication of regular column to generated column.
List pgsql-hackers
On Tue, Nov 26, 2024 at 1:42 PM vignesh C <vignesh21@gmail.com> wrote:
>.
>
> Few comments:
> 1) Now that attribute string generation is moved to get_attrs_str and
> there are only a couple of error statements in this function, how
> about removing the function:
> +/*
> + * If !bms_is_empty(missingatts), report the error message as 'Missing
> + * replicated columns.' Otherwise, report the error message as
> 'Cannot replicate
> + * to generated columns.'
> + */
> +static void
> +logicalrep_report_missing_and_gen_attrs(LogicalRepRelation *remoterel,
> +
>          Bitmapset *missingatts,
> +
>          Bitmapset *genatts)
> +{
> +       if (!bms_is_empty(missingatts))
>                 ereport(ERROR,
> -
> (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
> -                                errmsg_plural("logical replication
> target relation \"%s.%s\" is missing replicated column: %s",
> -                                                          "logical
> replication target relation \"%s.%s\" is missing replicated columns:
> %s",
> -                                                          missingattcnt,
> -                                                          remoterel->nspname,
> -                                                          remoterel->relname,
> -
> missingattsbuf.data)));
> -       }
> +
> errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
> +                               errmsg_plural("logical replication
> target relation \"%s.%s\" is missing replicated column: %s",
> +                                                         "logical
> replication target relation \"%s.%s\" is missing replicated columns:
> %s",
> +
> bms_num_members(missingatts),
> +                                                         remoterel->nspname,
> +                                                         remoterel->relname,
> +
> get_attrs_str(remoterel, missingatts)));
> +
> +       if (!bms_is_empty(genatts))
> +               ereport(ERROR,
> +
> errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
> +                               errmsg_plural("cannot replicate to
> target relation \"%s.%s\" generated column: %s",
> +                                                         "cannot
> replicate to target relation \"%s.%s\" generated columns: %s",
> +
> bms_num_members(genatts),
> +                                                         remoterel->nspname,
> +                                                         remoterel->relname,
> +
> get_attrs_str(remoterel, genatts)));
>  }
>

+1. This idea to just inline those errors instead of calling the
function sounds OK to me too.
Please consider also moving my suggested function comment if you
refactor this way.

======
Kind Regards,
Peter Smith.
Fujitsu Australia



pgsql-hackers by date:

Previous
From: Jeff Davis
Date:
Subject: Re: Statistics Import and Export
Next
From: Thomas Munro
Date:
Subject: Re: Generating configure from configure.ac