On Thu, Mar 12, 2026 at 3:50 AM Andrew Dunstan <[email protected]> wrote: > Also added some tests.
V11 looks good to me. On Wed, Mar 11, 2026 at 6:34 PM Viktor Holmberg <[email protected]> wrote: > > I’ve been burned my this issue in the past so would be great if this could > get in. > > + /* > + * If the domain has volatile constraints, we must do a table rewrite > + * since the constraint result could differ per row and cannot be > + * evaluated once and cached as a missing value. > + */ > + if (has_volatile) > + { > + Assert(has_domain_constraints); > + tab->rewrite |= AT_REWRITE_DEFAULT_VAL; > + } > > I'm not sure. But seems to me this makes the pre-existing guard for virtual > columns > redundant? > I mean this code on line 7633: > if (colDef->generated != ATTRIBUTE_GENERATED_VIRTUAL) > tab->rewrite |= AT_REWRITE_DEFAULT_VAL; > If the first `if (has_volatile)` is false, then > if (colDef->generated != ATTRIBUTE_GENERATED_VIRTUAL) > tab->rewrite |= AT_REWRITE_DEFAULT_VAL; is still reachable. > Also, perhaps virtual generated columns could use a test? Virtual generated columns based on domain are not currently supported. I have a patch for it: https://commitfest.postgresql.org/patch/5725 but it's not doable now because of https://git.postgresql.org/cgit/postgresql.git/commit/?id=0cd69b3d7ef357f2b43258de5831c4de0bd51dec You may also be interested in https://commitfest.postgresql.org/patch/5907 -- jian https://www.enterprisedb.com/
