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 1vY6pG-00DtMH-0Z for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 18:09:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vY6oE-00211h-2T for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 18:08:35 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vY6oE-00211Z-0x for pgsql-hackers@lists.postgresql.org; Tue, 23 Dec 2025 18:08:35 +0000 Received: from mail-oo1-xc2a.google.com ([2607:f8b0:4864:20::c2a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vY6oC-002NA7-0h for pgsql-hackers@postgresql.org; Tue, 23 Dec 2025 18:08:34 +0000 Received: by mail-oo1-xc2a.google.com with SMTP id 006d021491bc7-65cf3d51c95so2844463eaf.2 for ; Tue, 23 Dec 2025 10:08:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1766513310; x=1767118110; 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=5TqGvkceP8IDM08tzOWQBsvCNjyUAIbR4BzfwZSGVus=; b=Nan7MJtPwzOfOsHn8mKz4f5keAsWaG/++MBbQQ2Dk9F6AhKBac58/OzZzDSviw6MOM XB7XNZur1qmWh4WRloOerOVB6ChTpXlxKD0g7TDrDdRxtbqoXrC56O8g3jhjEUFFIC9L JKXlqWyGK9kd3QhYdQUp/F6lp9tDuJdbAMlbOL9jNYvrGWva6mCO6fVVITjFtAoPO+9e R21iDXlehvq94A8AJsYuV9dsenYKl5oV2Dnf46zPjUNdBFvrtgdhB1kpQHTH58WWmCyJ qsa+PR6/ipXUo26vd+3Hglczei9av3oV+Xu/NzmIzwvu6Uu0zcRKheGAFhcBmNKrQjmF LtyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766513310; x=1767118110; 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=5TqGvkceP8IDM08tzOWQBsvCNjyUAIbR4BzfwZSGVus=; b=b5QeLI/TDZcKkiP081mqFOpCoEyWyrtPFyXpli6MzGn8HA5oWrnU/A5bTGQhgsg942 8MrBaWSkriNjdLmUeJOLoEpksf2BYguErYTVjfTFAvUe7JJ9DWa9HdwM6i/jTPHj7TEX d2YS9hn1TCYytMxLnzSUr8VIOUeNHR+Cha0td3kL3TCTkCBRaSPpBr0Rtyy49j15fqVo rX5T6i0FtNcHwqbrKEfKrZ9R88oL3lVBW/EfppziIYEi8hMefFe1eXenBTldLqIW6Dho DTO9jwcUGkCO6hLgqVjmjJKFAUmrspVvInAPQt8cQkdkoVQwpueNIpI2ziUWVOEiX1pa sUDA== X-Gm-Message-State: AOJu0Yz+Ne1eNJ9Hn6+kn4t/6e8BYY+M4X1g7R+p3KP8ttopxNMEPX1e 0jTAyYIzWooxBaiyksC/xVSFJPyg+v/J3bFCgJR4VhKXH8FfWWodtHfJQ1H3i+bza5dm/gyojbG GM/gkVcLI8SePDImWD2wJS2U5F2hEtk9nZ1vrrWpneQ== X-Gm-Gg: AY/fxX6CCGJFrMVEu14fD/un7r4LIQW18rUWiWVIQHXuA2fujnTsDFwA94tDtC0rXOF HAdNeCTPXmihKVSoUoh5w9/xmge4GIf3mc5aRwUvL7CFiUXVBN3lAPZuUy1Ny+TOBuY9mIDH+v8 LGMz11juPVMbOjokM02bhc+R9iPtc9nGRqHUDMXCitE8JH1x/b5qOkNYnPBfHgo485uOIHbAz9I KF+N9MU57CM/LlEA8NqHWMN0Yt/8iwwiLsVWhhPX4vitvsR3nAED3SvZOuucxieIFUt X-Google-Smtp-Source: AGHT+IECLCRdKoTgosQP37e09MEFfzoPu/1lsvcRyYXeORk2wj7YT0aatYJdLnnGzunaHWypS+pwYXGNvGJeSZjIVFE= X-Received: by 2002:a05:6820:1c89:b0:65d:1bf8:bb74 with SMTP id 006d021491bc7-65d1bf8bdd5mr4985035eaf.61.1766513310138; Tue, 23 Dec 2025 10:08:30 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Paul A Jungwirth Date: Tue, 23 Dec 2025 10:08:19 -0800 X-Gm-Features: AQt7F2oJE6Nk0BwitZ5ZxH8un3_J55_jl0nv85erflF43bwPkcNHJAlKgChIJJo Message-ID: Subject: Re: domain for WITHOUT OVERLAPS To: jian he 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 Mon, Dec 22, 2025 at 7:25=E2=80=AFPM Paul A Jungwirth wrote: > > On Wed, Dec 10, 2025 at 8:23=E2=80=AFPM jian he wrote: > > +-- tests for range over domain, multirange over a domain, custom range= type over > > +-- domain. > > +-- > > +CREATE DOMAIN int4_d as integer check (value <> 10); > > +CREATE TYPE int4_d_range as range (subtype =3D int4_d); > > +CREATE DOMAIN int4multirange_d as int4multirange check (value <> '{[10= ,11)}'); > > +CREATE DOMAIN d_int4range1 AS int4range CHECK (VALUE <> '[10,11)'); > > +CREATE DOMAIN d_textrange2 AS textrange2 CHECK (VALUE <> '[c,d)'); > > +CREATE DOMAIN d_textrange2c AS d_textrange2; > > +CREATE DOMAIN textmultirange2_d AS textmultirange2 CHECK (VALUE <> '{[= c,d)}'); > > The comment doesn't seem to match. It mentions three scenarios, but I'm s= eeing: > > - int4_d_range is a range over a domain. > - int4multirange_d is a domain over a multirange. > - d_int4range1 is a domain over a range. > - d_textrange2 is a domain over a custom range. > - d_textrange2c is a domain over a domain, with no extra constraint. > What is this one for? > - textmultirange2_d is a domain over a custom multirange. Another variation I'm not seeing tested yet is a multirange over a domain. In other words what ranges call the "subtype" is a domain. Such a multirange is already created by these lines: > > +CREATE DOMAIN int4_d as integer check (value <> 10); > > +CREATE TYPE int4_d_range as range (subtype =3D int4_d); For example we can use it: [v19devel:5432][454113] postgres=3D# select '{[1,2)}'::int4_d_multirange; int4_d_multirange ------------------- {[1,2)} (1 row) [v19devel:5432][454113] postgres=3D# select '{[10,12)}'::int4_d_multirange; ERROR: value for domain int4_d violates check constraint "int4_d_check" LINE 1: select '{[10,12)}'::int4_d_multirange; ^ So it seems worthwhile to test WITHOUT OVERLAPS with that variation as well= . Yours, --=20 Paul ~{:-) pj@illuminatedcomputing.com