Re: Improve the error message for logical replication of regular column to generated column.

From: Peter Smith <smithpb2250(at)gmail(dot)com>
To: vignesh C <vignesh21(at)gmail(dot)com>
Cc: Shubham Khanna <khannashubham1197(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Improve the error message for logical replication of regular column to generated column.
Date: 2024-11-26 04:16:29
Message-ID: CAHut+PvxXUUb5CwXmj8c6DK010dz4MXr=VmZsmwM4HPc4Kzabw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Nov 26, 2024 at 1:42 PM vignesh C <vignesh21(at)gmail(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Thomas Munro 2024-11-26 04:28:58 Re: Generating configure from configure.ac
Previous Message Jeff Davis 2024-11-26 04:10:22 Re: Statistics Import and Export