Re: BUG #18664: Assert in BeginCopyTo() fails when source DML query rewritten with notifying rule

From: Tender Wang <tndrwang(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: exclusion(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18664: Assert in BeginCopyTo() fails when source DML query rewritten with notifying rule
Date: 2024-10-22 01:38:49
Message-ID: CAHewXNnKwOw=96VGqVVpTtoUO+JSjOGpMsqoD6k2LLYgjmFpoA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> 于2024年10月22日周二 01:30写道:

> Tender Wang <tndrwang(at)gmail(dot)com> writes:
> > PG Bug reporting form <noreply(at)postgresql(dot)org> 于2024年10月21日周一 19:32写道:
> >> The following script:
> >> CREATE TABLE t(i int);
> >> CREATE RULE r AS ON INSERT TO t DO INSTEAD NOTIFY c;
> >> COPY (INSERT INTO t VALUES (1)) TO stdout;
> >>
> >> triggers an Assert in BeginCopyTo():
>
> > I take a quick look. It seems 92e38182d ignored this case.
> > I gave a fix that remove the Assert and add an Assert in another if
> blocks.
> > Any thoughts?
>
> I don't like this fix, because the error message is just completely
> misleading for this case. "COPY query must have a RETURNING clause"
> makes it look like your mistake was to not write
>
> COPY (INSERT INTO t VALUES (1) RETURNING *) TO stdout;
>
> Of course doing that will fix nothing, and you'd still get the exact
> same error message, leaving the user quite confused. So I think
> it's worth issuing a more specific message.
>

Agree.

>
> I also noted somebody's faulty grammar in the nearby message
> "DO ALSO rules are not supported for the COPY".
>
> So I think we want the attached. I went back and forth about
> whether to make the new message be specifically "COPY query must
> not be NOTIFY", but decided that we'd surely forget to update it
> if we ever allow any other sort of utility command in rules.
> So better to word it generically.
>

LGTM

--
Thanks,
Tender Wang

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Michael Paquier 2024-10-22 05:53:50 Re: BUG #18614: [ECPG] out of bound in DecodeDateTime
Previous Message David G. Johnston 2024-10-22 01:32:20 Re: BUG #18666: Standby cluster does not start after building from Primary cluster.