On Thu, 5 Dec 2024 at 11:45, Michael Paquier <mich...@paquier.xyz> wrote:
>
> On Wed, Dec 04, 2024 at 03:31:47PM +0500, Kirill Reshke wrote:
> > On Sat, 30 Nov 2024 at 17:37, jian he <jian.universal...@gmail.com> wrote:
> >> So I guess bundling it into a single patch should be fine?
> >
> > Ok. I created CF entry for this patch.
> >
> > [0] https://commitfest.postgresql.org/51/5420/
>
> Note that v3 of the patch is failing in the CI, so you should look at
> that:
> https://cirrus-ci.com/github/postgresql-cfbot/postgresql/cf%2F5420

Indeed. Thank you.

> Combining everything into a single patch is not a big deal in this
> case IMO as the code paths touched are different.

Ok.

> I was playing with the patch and tried how typenameType() would like
> to force a rule so as the pstate should be always non-NULL, and got
> reminded by the various callers of typenameTypeIdAndMod() that this
> was a bad idea.

I'm not quite understand what you're trying to say here.
You're saying that even after this patch there will be a bunch of
places where pstate passed is NULL, but that's another issue itself
and may not be addressed within this patch?

> This patch does not show how the error reports are influenced for
> DefineType() and AlterType().

It does now that the `make check` failures have been fixed. However,
it doesn't appear where you would expect it to. For instance:

```
--- a/src/test/regress/expected/typed_table.out
+++ b/src/test/regress/expected/typed_table.out
 ERROR:  cannot rename column of typed table
 ALTER TABLE persons ALTER COLUMN name TYPE varchar;
 ERROR:  cannot alter column type of typed table
+LINE 1: ALTER TABLE persons ALTER COLUMN name TYPE varchar;
+                                         ^
 CREATE TABLE stuff (id int);
 ALTER TABLE persons INHERIT stuff;
 ERROR:  cannot change inheritance of typed table
```

Should we add more tests in specific places here?

> This reminds as well that there is little coverage for many error
> paths of DefineDomain(), with some paths actually modified in this
> patch:
> https://coverage.postgresql.org/src/backend/commands/typecmds.c.gcov.html
> I'd suggest to do something about that, while on it, to check that the
> parser issues a location on error.
> --

Sure. I did add some tests to domain.sql. These tests check for almost
all parser_errposition() calls in DefineDomain.


The only thing I failed to check is "exclusion constraints not
possible for domains". Creating a domain with this type of contrians
fails earlier than DefineDomain.

Example:
```
db1=# create domain dbad as int CHECK(EXCLUDE  (c) );
ERROR:  column "c" does not exist
```
I'm not sure if this is possible to check.

-- 
Best regards,
Kirill Reshke

Attachment: v4-0001-print-out-error-position-for-some-DDL-command.patch
Description: Binary data

Reply via email to