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.96) (envelope-from ) id 1wWNwo-002Zkr-06 for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jun 2026 00:34:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wWNwm-000Ig1-30 for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jun 2026 00:34:32 +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.96) (envelope-from ) id 1wWNwm-000Ifl-23 for pgsql-hackers@lists.postgresql.org; Mon, 08 Jun 2026 00:34:32 +0000 Received: from mail-ua1-x931.google.com ([2607:f8b0:4864:20::931]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wWNwl-00000001boE-0bTs for pgsql-hackers@lists.postgresql.org; Mon, 08 Jun 2026 00:34:31 +0000 Received: by mail-ua1-x931.google.com with SMTP id a1e0cc1a2514c-963b04fd87aso1372681241.0 for ; Sun, 07 Jun 2026 17:34:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780878870; cv=none; d=google.com; s=arc-20240605; b=AvYWVJSBgv5/1hjexD6Se1A/lgQZrBaqfY6Sa+zzqKj/Ube4PfB5O0rgWTr1wZwKX+ gaMLdOZb0u2FxiRVXD/sSOhrMLR5EeTgRl7TZUH7yjVQRjbszHPIbb4NX6A09WUi4Pk2 CVNlFWLlj8AfKMMwqwrA2JvkyL2HLuaBhMUr5mD+l1ao4npAuNhzRntRXtc/Z1OOVcyy SnVzHET3qa4Q7jYMYPCS4qqmbT6h+ii2PUVjRTRgU4vPDEZ2kezI90a0eGbV1TMHYCi9 2DjL517nPwGd92ApF/it7B5mrKZrLvyxPuY2nWSzJaF175b0roae9jJzuQ7Vhncmv+y5 dv8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=hyH0+5/QuLPZ8vscLlqrtfCfpHUPsN3Vr1dwyCnx58g=; fh=JJruhm3jYuFfZHjKaaSV0l1j+J5yp8nwbgBHItFJVSg=; b=HwTsEYAKOEY0Yqh0AVF+HKg7/yIzCdQayHHhDxyETGPTKB6LFRvjEcyeMbbajjAKWE NdbwSFwW3b1X6p0BEhFjhVqqcOwlSkvtOUr7hebwjY7uHzo9vnlxVQo3NoU6QtYQKHDN OmR9boN14GuZwSYkiLj+QARY4+Du1HdtpnyisRhMyRwjMz27XROB9PCJk+cJ+/R1X1l9 o+OmcgDWZS59PdfR7VvHMCY0AYQKY16Y+5RwPUsPD9g0Mb7nAqkqhpQlVvn4URr/8fju ulBWupuBw8/D7f2A2lxJ8KH7/6gH88Dj19Ofg9b6BcwlH2svHHVnVT1+psKDnl+gAJe8 agwQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780878870; x=1781483670; darn=lists.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=hyH0+5/QuLPZ8vscLlqrtfCfpHUPsN3Vr1dwyCnx58g=; b=iGrUopJ0U/edPS+m7wR6XOv0bzj2/9JPgzmwKtFWfL3DCOHvcvslGY7yi51jgVf9td MdGy+03Itq+K6BeISs3FzmtWmTH2mOYzLPwIRxfEWZtLE6gJ3TCt48vU52b+ysDj4NkR wPihP45LoCke48HMnyAxv+RU3l/BV47WVmsOA/TXKClG+0mxVHZzqhqPHwTcycPvKqeN Y/TD+V1h8Rnn7R+cke4Mqvve6MPDOPRu8Zgn+YTkWw535hNRHne+aSxYlyXoqRgUkJLP Zkr+1hTlJATZZrFqzEx8ZPx2GufPi1t6H4Dl4MeLH4zAfA0vkQG6GypFkA+mVDoZP8fz o85g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780878870; x=1781483670; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hyH0+5/QuLPZ8vscLlqrtfCfpHUPsN3Vr1dwyCnx58g=; b=GcYtO8mmJUX7AdV+7dgZUSt3hhvrSfZwBNI0HVkeUihRxnmdvrp7DNUg1lTr0lBFji wwrD5gyWS8drJCd1kyobehC7F01g8vm+ArJPmYncIwt96htfqFo55m6wYf65K3XZZsJ2 rn1NM21MRfEe9iXVPL7q0jxu2P3pN+TuEdsFB7AKEkW7BFs0ndp8wMl1y//FoI941CuR G6hrazbzO8czqtqMfTMMA8mpZ7xlZnhPJPudfvR7nCqz3kjF8sgK52XJXFcmnCSMq4k4 I4hmu+QoKlgiCvCnmdvffp8v7S05OjOD5d9Ly3hIfbJmudDsXVLFKAtyTit1v1hRmHHu lK/A== X-Forwarded-Encrypted: i=1; AFNElJ8ytAms1uo+adbXPpYkL1WHTeexoCYoCYAnWm55K8h+1oHur7Jg8tjkTg1wH6Vq2pSQgzceMJ/yLgB6nM7F@lists.postgresql.org X-Gm-Message-State: AOJu0Yzgrrc/o/e3RWnKCfJT1lsZRyQxl6jYu8Wyz3XNwyn8Q4kkvm1O HLdg63zDGPYCT9x3nJWSkexOKgG7T876FVZ1btp6nz6esk0ASd8fM1vuLbiOvj8H+G6ZBmMA0tf 9gqllk8Pum7nbUn74F8+glyfxrGX9NGs= X-Gm-Gg: Acq92OEM4rnLXOexiB3OrdqGht6SBhsiP20uMzS2XAzjoe4t9zMKXgJN0kYLcaqqWJj rVfjy6NSv6Y3l8+I43fgqsRHYHavcMEZ+MHUZJzczMdELsDng3XkJojvyCZFa4BbFReK7UwOAzK B6gVtSPGxalzf4RZz/TBW5wrL2WpB5LJZRIbWSlC2Vu5CGNr6v8hqUSWFdRS6EsfYBYUP2Tr5vw tEXI3n+Yxw4Xtiw9O4lL8FSsbIZcbj9o1cpdXSw44ETL5iv2Y9x0GspNycPc8SfoXW1R7ipiuoC KCIQ4z+c0H51VmQhJTVydzc28cJFayW+ZOrKnJELbWY7P0nfW5uznvLdSKmZZ3kZ3MwVhd4u5DJ iO7dEYCgyz9IV28ICZopvnv8TGlp/yeYqeF/qWShRFDamAP6L5njO+QzM4wUTBojiBOFyQ9F5Ci kQkhPHQTeNhFWLPDZ/rosblM7zOJEhYkEfTQ== X-Received: by 2002:a05:6102:5047:b0:650:a5d1:ee1d with SMTP id ada2fe7eead31-6fef200a3e8mr5935635137.10.1780878870008; Sun, 07 Jun 2026 17:34:30 -0700 (PDT) MIME-Version: 1.0 References: <7033D663-DDB4-4B35-922C-F33DE53B1502@gmail.com> <219843CF-9B49-404A-838D-88D51902B978@iki.fi> <3590551.1780668509@sss.pgh.pa.us> In-Reply-To: <3590551.1780668509@sss.pgh.pa.us> From: jian he Date: Mon, 8 Jun 2026 08:33:53 +0800 X-Gm-Features: AVVi8CelvnefxcdDtVHw83MrjSYPiIWeAZSDCtCSbWbuxbXELK2XeyiR_vgVm30 Message-ID: Subject: Re: Fix domain fast defaults on empty tables To: Tom Lane Cc: Heikki Linnakangas , pgsql-hackers@lists.postgresql.org, Chao Li , Andrew Dunstan 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 Fri, Jun 5, 2026 at 10:08=E2=80=AFPM Tom Lane wrote: > > Heikki Linnakangas writes: > > On 5 June 2026 10:48:00 EEST, Chao Li wrote: > >> evantest=3D# create domain d_div as int check (1 / (value - 1) > 0); > >> CREATE DOMAIN > >> evantest=3D# create table t (a int); > >> CREATE TABLE > >> evantest=3D# alter table t add column b d_div default 1; > >> ERROR: division by zero > > > 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 tabl= e. > > I think there's reason for concern here, which is that we do not throw > an error for the apparently equivalent case > > regression=3D# create table t2 (a int, b d_div default 1); > CREATE TABLE > > This will give you an error at INSERT, but not CREATE. So this > is inconsistent, as well as different from the pre-v19 behavior. > However, this is normal behavior for non-domain types. create table t2 (a numeric default (1::numeric/0.0::float4)); -- ok alter table t2 add column b numeric default ((1::numeric/0.0::float4)); -- = error