Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pctb0-0004Nm-6W for pgsql-docs@arkaria.postgresql.org; Thu, 16 Mar 2023 19:49:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pctay-0000JV-Ms for pgsql-docs@arkaria.postgresql.org; Thu, 16 Mar 2023 19:49:04 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pctay-0000JJ-Ey for pgsql-docs@lists.postgresql.org; Thu, 16 Mar 2023 19:49:04 +0000 Received: from mail-ed1-x543.google.com ([2a00:1450:4864:20::543]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pctav-00057c-Oz for pgsql-docs@lists.postgresql.org; Thu, 16 Mar 2023 19:49:03 +0000 Received: by mail-ed1-x543.google.com with SMTP id w9so12171935edc.3 for ; Thu, 16 Mar 2023 12:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20210112.gappssmtp.com; s=20210112; t=1678996140; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:from:to:cc:subject:date:message-id:reply-to; bh=IaxcZ6KOhU+FF3uyyC42tkmh/7PM5dLxe2wyQMP6HNM=; b=7NZUPTOH84URPu6JGuDYboU5M9odlFZ/OA3DH+HLpegbunmQmltWJVwY7LbjXbyaz8 BmzsZLVNoHNHQDhRy2Yhs2lU3w3jSvfix1RIWR2T8Gcz4tdUrPdlKTlR916Me9VO6ws8 58T+omrwvWBx2GWgjbTbldEWeuQ1C55lzgeZH/1YBq1tJBrf47tnI1nI0OiBj0ZyLYEj 1xYg1z0FtboKkGeYE+RpBjBStesTohX2PChWncXSKMbd/3R0OXykBDS45YbXlmcl5KsI /15IIw+eJzLvalp8GVs/8y7+ngECRQjoOTsYJOx+4SsIZbqxzw34j22HQ6di34suJ1Hp SDEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678996140; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=IaxcZ6KOhU+FF3uyyC42tkmh/7PM5dLxe2wyQMP6HNM=; b=J0HEGoNg6gDMpq6azpQwJt6BMltEXriNbIAykFzqj55Z0e7HV967zh28He4sJeRkEA MXDFzH+Pyi4eDG9SUCVzx3FIpXq2DXLZkUHc5KpD0lZPnfUM9YQM9lfViTAAegGXtBCk uEG5nICfyxq0k0JmsnB/0EJFvAQRWryAN/0hYeIN/6prVlqm//Fuy3xUoCDt36kFdrbF ynDzydHylA1huV+Uz2pO93Qs5lsw0zkd/Tg0lxzTDy8KotYyvlN8RZ7eFun+oKaDi1y5 dbtK4ccRfS4WRqeZ+8ut6ecRD1nD/TEC+PrI+b+dKCbQIgxxKb8SL/wO4VymmhoRsojj fF3A== X-Gm-Message-State: AO0yUKU1tZt6HxQSGRdHbj+XDCcTGAwz9j8dqZ2i6g/pvpfKUBxZdfF+ /HbXjYIoOfLj4QJijCIHp6SksKtJDITlHNk4B3co3oV+ X-Google-Smtp-Source: AK7set/YOdG8unv9GByIwwzVvBWQl5HLMR6E0+auJpgP5jqmX5txsK0ekF7RlB44vzjyP1GBSoKAYQ== X-Received: by 2002:a17:907:7d9e:b0:931:95a1:a05a with SMTP id oz30-20020a1709077d9e00b0093195a1a05amr323741ejc.62.1678996140235; Thu, 16 Mar 2023 12:49:00 -0700 (PDT) Received: from localhost.localdomain (p50992f7c.dip0.t-ipconnect.de. [80.153.47.124]) by smtp.gmail.com with ESMTPSA id de16-20020a1709069bd000b0092b422c9d37sm28061ejc.110.2023.03.16.12.48.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Mar 2023 12:48:59 -0700 (PDT) Message-ID: <6f76cd51846f0a8f02df91cc252a7ebcf8c6186f.camel@cybertec.at> Subject: Re: Nulls Not Distinct in Unique Indexes secton From: Laurenz Albe To: Kirk Parker , pgsql-docs@lists.postgresql.org Date: Thu, 16 Mar 2023 20:48:58 +0100 In-Reply-To: References: <9C019644-9EA4-4B79-A52C-5C47A5B6B2DF@yesql.se> Content-Type: multipart/mixed; boundary="=-aZO1+Xw/i2LA2Px71SZx" User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-aZO1+Xw/i2LA2Px71SZx Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2023-03-14 at 08:24 -0700, Kirk Parker wrote: > The Unique Indexes section (https://www.postgresql.org/docs/15/indexes-un= ique.html) > does not mention the new NULLS [ NOT ] DISTINCT capability of indexes > (https://www.postgresql.org/docs/15/sql-createindex.html), and it probabl= y should. >=20 > Specifically, it has the exact wording from previous versions (emphasis a= dded): >=20 > =C2=A0 =C2=A0 When an index is declared unique, multiple table > =C2=A0 =C2=A0 rows with equal indexed values are not allowed. > =C2=A0 =C2=A0 *Null values are not considered equal*.=20 >=20 > We should consider adding "unless the NULLS NOT DISTINCT clause is used w= hen > creating the index", or something to that effect. +1 Here is a patch for that. Yours, Laurenz Albe --=-aZO1+Xw/i2LA2Px71SZx Content-Disposition: attachment; filename*0=0001-Mention-NULLS-NOT-DISTINCT-in-the-SQL-documentation.patc; filename*1=h Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-Mention-NULLS-NOT-DISTINCT-in-the-SQL-documentation.patch"; charset="UTF-8" RnJvbSBiMDJmYmY5ZTExYzY5NTMyNjk0MjhkZDg1NzJlNzkzNDlkNjFkNjQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogVGh1LCAxNiBNYXIgMjAyMyAyMDo0NzoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IE1lbnRpb24gTlVMTFMgTk9UIERJU1RJTkNUIGluIHRoZSBTUUwgZG9jdW1lbnRhdGlvbgoKQ29t bWl0IDk0YWE3Y2M1ZjcgZm9yZ290IG9uZSBwbGFjZSBpbiB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0 CnN0aWxsIGNsYWltZWQgdW5jb25kaXRpb25hbGx5IHRoYXQgTlVMTHMgYXJlIGNvbnNpZGVyZWQg ZXF1YWwuClBlciByZXBvcnQgYnkgS2lyayBQYXJrZXIuCi0tLQogZG9jL3NyYy9zZ21sL2luZGlj ZXMuc2dtbCB8IDUgKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luZGljZXMuc2dtbCBiL2RvYy9z cmMvc2dtbC9pbmRpY2VzLnNnbWwKaW5kZXggMGMzZmNmZDYyZi4uZjFjMTVmY2MwYiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2luZGljZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaW5kaWNl cy5zZ21sCkBAIC02NzIsOCArNjcyLDkgQEAgQ1JFQVRFIFVOSVFVRSBJTkRFWCA8cmVwbGFjZWFi bGU+bmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNlYWJsZT50YWJsZTwvcmVwbGEKICAgPHBh cmE+CiAgICBXaGVuIGFuIGluZGV4IGlzIGRlY2xhcmVkIHVuaXF1ZSwgbXVsdGlwbGUgdGFibGUg cm93cyB3aXRoIGVxdWFsCiAgICBpbmRleGVkIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuICBOdWxs IHZhbHVlcyBhcmUgbm90IGNvbnNpZGVyZWQKLSAgIGVxdWFsLiAgQSBtdWx0aWNvbHVtbiB1bmlx dWUgaW5kZXggd2lsbCBvbmx5IHJlamVjdCBjYXNlcyB3aGVyZSBhbGwKLSAgIGluZGV4ZWQgY29s dW1ucyBhcmUgZXF1YWwgaW4gbXVsdGlwbGUgcm93cy4KKyAgIGVxdWFsLCB1bmxlc3MgdGhlIGlu ZGV4IGlzIGNyZWF0ZWQgd2l0aCB0aGUgPGxpdGVyYWw+TlVMTFMgTk9UCisgICBESVNUSU5DVDwv bGl0ZXJhbD4gY2xhdXNlLiAgQSBtdWx0aWNvbHVtbiB1bmlxdWUgaW5kZXggd2lsbCBvbmx5Cisg ICByZWplY3QgY2FzZXMgd2hlcmUgYWxsIGluZGV4ZWQgY29sdW1ucyBhcmUgZXF1YWwgaW4gbXVs dGlwbGUgcm93cy4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgotLSAKMi4zOS4yCgo= --=-aZO1+Xw/i2LA2Px71SZx--