Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tqBg5-000r0P-Dg for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Mar 2025 13:54:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tqBg4-00CTY5-50 for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Mar 2025 13:54:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tqBg3-00CTXp-Rj for pgsql-hackers@lists.postgresql.org; Thu, 06 Mar 2025 13:54:19 +0000 Received: from mail-ua1-x92b.google.com ([2607:f8b0:4864:20::92b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tqBg1-001JKy-2Y for pgsql-hackers@postgresql.org; Thu, 06 Mar 2025 13:54:18 +0000 Received: by mail-ua1-x92b.google.com with SMTP id a1e0cc1a2514c-86d3ac0fec0so96853241.1 for ; Thu, 06 Mar 2025 05:54:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741269257; x=1741874057; darn=postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=HmILJXqohfwxp6mDRM6FAeBeGkneQfQZ5fCpsn93lfU=; b=Ie4eiWAeFzbGlzX75mmVeDAydJOMdmZSM0n3XcGYbdtvVTPIc1t0UxAmd+t45dBTAw gVGRgIkF1SHGUJ1VoceVegyj4bo3dScbIPaDArknjHgtAmwPHuQiuxlPTLm48YovKxcO 34f4gxpiyz3D2p6Gogj1/j3ml3wyz+lznmtaRk9s7O8xLXiUENe/38rRqbJm9Rb58UUU 2gad9ZujSRHLmpWBY6fNWot9xt9RBD5dIbz1HGhDEGBWpHU+bHr1CgBESGlUtyyxNEB/ tkh5BuAdU19gELFhhPJ4XKZoMROTmRfLkKvjg44npQZqwNUm6SloxURJAcYUK3a1YSO+ O41Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741269257; x=1741874057; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HmILJXqohfwxp6mDRM6FAeBeGkneQfQZ5fCpsn93lfU=; b=wd0IcicOiohpyjJW+f3EAwM0x0zipmAGyuwN6sL7I+d0Bo6tZWaeCC6m9JQqmUZSEZ xSnL2b8dt8nHN+0LhLmls1yv6vud/LY7EWXiNkEZBSnyPdhFmaUm41hgzf+hTYN68tjC 9nnHYYMNw4gtF/DSoBrPj7NYcKfd1jI0+okSSxrCxBUTfK30y2q+fmitqv+QjDFn1y1+ pNe63VT62wzUMswle2TbNN2tYd2+/ZwCsNIFOpivGuhRU3CivaFXCEFndRW+Yumc9Yr8 i2QGQgP1gec1IQf8/PzrYM7NTF651wVswq1asmleJUutkzT7NTrAJseUjzDgAOOrHc1h Cn8Q== X-Gm-Message-State: AOJu0Yx/8NbwypheE26iDs+1XztCqZrOlzbH3gv9WuOhWKiTorGzpYqK /unTpXsJXn9IVC+wrfo7f51Mj2BczLSSbnUhjSv2LYKgK5Il3H6nXWqGY4o0CLEqeJjxe/bp5E3 FoEV/QldYJCxspLUKd5xduJFNCPiFUhVGlylKGQ== X-Gm-Gg: ASbGnctRwy75fShxR8t9d6GBMLlUI/wOHkXFH7NkwqwHduNMOwVvaYvfN5uzfe1Y6Ar qXBMyi4Nvt6oP5SaZAAdcGIO12zdF/ylD38iXnyfgPvU58d3gDRMR9LbZgS4ACcjOZ7zHjTZpzw w57vraFsWycKLdmrT7dGLPRw2ZGOWXJ1dKQy/mV/cx2XO+oYeVEbuPhOQsJA== X-Google-Smtp-Source: AGHT+IEfp4uvyLxLAYg6b3li1+R4nyw/1pxwZ2uQ5NGoGomoVN26b4bnliYn/N+lHKi8YXxKzIhAASP13laMIVCJBso= X-Received: by 2002:a05:6102:418e:b0:4c1:71b6:6c with SMTP id ada2fe7eead31-4c2e279596fmr4812422137.7.1741269257197; Thu, 06 Mar 2025 05:54:17 -0800 (PST) MIME-Version: 1.0 References: <229413.1741144420@sss.pgh.pa.us> In-Reply-To: From: jian he Date: Thu, 6 Mar 2025 21:53:40 +0800 X-Gm-Features: AQ5f1JpKOhn_-3w46OJDkTgseJLBaGDH52L_bTOkItNIu8T8R96DJB_LO-ZDfkY Message-ID: Subject: Re: support fast default for domain with constraints To: Tom Lane Cc: PostgreSQL-development Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, Mar 6, 2025 at 11:04=E2=80=AFAM jian he wrote: > > hi. > > rearrange the patch. > v3-0001 and v3-0002 is preparare patches. > v3-0001 add function: ExecPrepareExprSafe and ExecInitExprSafe. > v3-0002 add function: DomainHaveVolatileConstraints > i actually do need DomainHaveVolatileConstraints for virtual generated columns over domain with constraints in [1], which I am working on. for example: create domain d1 as int check(value > random(min=3D>11::int, max=3D>12)); create domain d2 as int check(value > 12); create table t(a int); insert into t select g from generate_series(1, 10) g; ----we do need table rewrite in phase 3. alter table t add column b d1 generated always as (a+11) virtual; --we can only do table scan in phase 3. alter table t add column c d2 generated always as (a + 12) virtual; Generally, table rewrite is more expensive than table scan. In the above case, if domain constraints are not volatile, table scan should be fine. [1]: https://postgr.es/m/CACJufxHArQysbDkWFmvK+D1TPHQWWTxWN15cMuUaTYX3xhQXg= g@mail.gmail.com