| From: | Heikki Linnakangas <hlinnaka(at)iki(dot)fi> |
|---|---|
| To: | pgsql-hackers(at)lists(dot)postgresql(dot)org, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Cc: | Andrew Dunstan <andrew(at)dunslane(dot)net>, jian he <jian(dot)universality(at)gmail(dot)com> |
| Subject: | Re: Fix domain fast defaults on empty tables |
| Date: | 2026-06-05 09:04:52 |
| Message-ID: | 219843CF-9B49-404A-838D-88D51902B978@iki.fi |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On 5 June 2026 10:48:00 EEST, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> wrote:
>Hi,
>
>I tested "[a0b6ef29a] Enable fast default for domains with non-volatile constraints". After tracing some cases from the regression tests, I came up with this test case and found a bug:
>```
>evantest=# create domain d_div as int check (1 / (value - 1) > 0);
>CREATE DOMAIN
>evantest=# create table t (a int);
>CREATE TABLE
>evantest=# alter table t add column b d_div default 1;
>ERROR: division by zero
>```
>
>It looks like errors inside the CHECK expression itself, such as the int4div division-by-zero in this test, are still hard errors that can fail the ALTER TABLE command.
It seems totally reasonable to get an error in that case. '1' is not a valid value for the datatype, whether or not there are any rows in the table.
- Heikki
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Quan Zongliang | 2026-06-05 09:25:52 | Re: [PATCH] vacuumdb: Add --exclude-database option |
| Previous Message | Rafia Sabih | 2026-06-05 09:03:07 | Re: Bypassing cursors in postgres_fdw to enable parallel plans |