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 1sI5bE-00Cwgt-PW for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jun 2024 12:00:08 +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 1sI5bC-0008AC-GJ for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jun 2024 12:00:07 +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 1sI5bB-00082o-Vz for pgsql-hackers@lists.postgresql.org; Fri, 14 Jun 2024 12:00:06 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sI5b9-001H9w-TF for pgsql-hackers@lists.postgresql.org; Fri, 14 Jun 2024 12:00:05 +0000 Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-52bc27cfb14so2748337e87.0 for ; Fri, 14 Jun 2024 05:00:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718366402; x=1718971202; darn=lists.postgresql.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=zGHKBVksXEFc0ldwxaseGJtr1HUiWB/Tu+glybXjcbc=; b=k8xRvtU/xp4V1G2EX/hMtKcKahD3Um6CFe/czZIs8Xsg3T068noyPQ+pkokWK8l4Kk YMb5Ag5WPXefHOYwPW1lqIZucbn5IHkR/flzmdQ04HBCYqQkFJauPMbV5VwG0YEw21ve 9rBYr0I5BimEBqBL0Xw+z/9b8s/ZGdlYzPqDT+7FYyUXQO2zou7e0i9k2K72jfqTOAi8 cKaNOSaRjUrYsOElUczjNV9AkIPx2x7bXlsJxI5YgSvmuLX8VDe6wgyvOjgs1nSL70IW xfMeLOocNUW3ix+onrHtUIdovDwbIqq56btuy/KC1YsD6OIAmL8PBJn7l2q6SRRG82Bs tjoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718366402; x=1718971202; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zGHKBVksXEFc0ldwxaseGJtr1HUiWB/Tu+glybXjcbc=; b=ZgyKuOhsEAIUYBP7OzsxZ7aYwU6v6keHbs6vNNJt06B7NquDXXQ53Rh6MgRFl4iB/K ldJDAhnxZ212glDBkQ1nhqMYNdYKNgghnKdXJjdlJ8VbRRNneYbm1Fb3cJXfLHsqM/LH ZxdVLjZOo1T9SUQdIoVwU76utWcefZiWedeO/3Ik+gy1o4gYix4LhL9F1+5fuLpKaAQG /yJ9d9SYpKNIQ7n7VPT2HX9tAA2lWoNDeFguAG3YoMhzKNMtG7S6JUH6iB1wMLzghdRr +l46trJkKu59D48cncOi7nRHnY/WQDqu9RDL4ZasnkQXGHunFB6oJnVsS8QvTnQf3VLs 9bSQ== X-Forwarded-Encrypted: i=1; AJvYcCWd2Z1DU+XLSQCVW09VHxXbvysslzrMN3Nnc+UmnoxbbVWjuADAeBElwS5TtXxJwwnMRnYowEv55mc8pzs46+Y3RL8M8zo5ShQKpysVTdzjd0VJ X-Gm-Message-State: AOJu0YwPvKOu02zrqLa8YL+e8+vi8cpKji1TSNn5O1w1ZENpql1b/Yb7 kZxmWfH/yNW67XJrYeHxSGuZgUaFk1XJUYb9scXBHYEqiRj38lZk X-Google-Smtp-Source: AGHT+IGqfla9pBB03+BL5Hd+H2XuwFfW1UtYFzbQPzwuk6UKyChBVWg+jHGYIqN+Fny39zHXFXDwug== X-Received: by 2002:a05:6512:3d10:b0:52c:8ed1:21fe with SMTP id 2adb3069b0e04-52ca6e924cbmr2503689e87.53.1718366402074; Fri, 14 Jun 2024 05:00:02 -0700 (PDT) Received: from [1.0.0.7] ([178.155.25.76]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52ca282594asm487139e87.42.2024.06.14.05.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Jun 2024 05:00:01 -0700 (PDT) Message-ID: Date: Fri, 14 Jun 2024 15:00:00 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: Remove dependence on integer wrapping Content-Language: en-US To: Joseph Koshakow Cc: Tom Lane , PostgreSQL Hackers , Andres Freund , Nathan Bossart References: <618777.1717984674@sss.pgh.pa.us> <31ad2cd1-db94-bdb3-f91a-65ffdb4bef95@gmail.com> From: Alexander Lakhin In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk 14.06.2024 05:48, Joseph Koshakow wrote: > > v4-0001-Remove-dependence-on-integer-wrapping.patch is unchanged, I > just incremented the version number. > > >    Also there are several trap-producing cases with date types: > >    SELECT to_date('100000000', 'CC'); > >    SELECT to_timestamp('1000000000,999', 'Y,YYY'); > >    SELECT make_date(-2147483648, 1, 1); > > > >    And one more with array... > >    CREATE TABLE t (ia int[]); > >    INSERT INTO t(ia[2147483647:2147483647]) VALUES ('{}'); > > I'll try and get patches to address these too in the next couple of > weeks unless someone beats me to it. > > >    I think it's not the whole iceberg too. > > +1 After sending my message, I toyed with -ftrapv a little time more and found other cases: SELECT '[]'::jsonb -> -2147483648; #4  0x00007efe232d67f3 in __GI_abort () at ./stdlib/abort.c:79 #5  0x000055e8fde9f211 in __negvsi2 () #6  0x000055e8fdcca62c in jsonb_array_element (fcinfo=0x55e8fec28220) at jsonfuncs.c:948 (gdb) f 6 #6  0x000055e14cb9362c in jsonb_array_element (fcinfo=0x55e14d493220) at jsonfuncs.c:948 948                     if (-element > nelements) (gdb) p element $1 = -2147483648 --- SELECT jsonb_delete_path('{"a":[]}', '{"a",-2147483648}'); #4  0x00007f1873bef7f3 in __GI_abort () at ./stdlib/abort.c:79 #5  0x0000564a009d2211 in __negvsi2 () #6  0x0000564a00807c89 in setPathArray (it=0x7fff865c7380, path_elems=0x564a017baf20, path_nulls=0x564a017baf40,     path_len=2, st=0x7fff865c7388, level=1, newval=0x0, nelems=2, op_type=2) at jsonfuncs.c:5407 (gdb) f 6 #6  0x000055985e823c89 in setPathArray (it=0x7ffc22258fe0, path_elems=0x559860286f20, path_nulls=0x559860286f40,     path_len=2, st=0x7ffc22258fe8, level=1, newval=0x0, nelems=0, op_type=2) at jsonfuncs.c:5407 5407                    if (-idx > nelems) (gdb) p idx $1 = -2147483648 --- CREATE FUNCTION check_foreign_key () RETURNS trigger AS .../refint.so' LANGUAGE C; CREATE TABLE t (i int4 NOT NULL); CREATE TRIGGER check_fkey BEFORE DELETE ON t FOR EACH ROW EXECUTE PROCEDURE   check_foreign_key (2147483647, 'cascade', 'i', "ft", "i"); INSERT INTO t VALUES (1); DELETE FROM t; #4  0x00007f57f0bef7f3 in __GI_abort () at ./stdlib/abort.c:79 #5  0x00007f57f1671351 in __addvsi3 () from .../src/test/regress/refint.so #6  0x00007f57f1670234 in check_foreign_key (fcinfo=0x7ffebf523650) at refint.c:321 (gdb) f 6 #6  0x00007f3400ef9234 in check_foreign_key (fcinfo=0x7ffd6e16a600) at refint.c:321 321             nkeys = (nargs - nrefs) / (nrefs + 1); (gdb) p nargs $1 = 3 (gdb) p nrefs $2 = 2147483647 --- And the most interesting case to me: SET temp_buffers TO 1000000000; CREATE TEMP TABLE t(i int PRIMARY KEY); INSERT INTO t VALUES(1); #4  0x00007f385cdd37f3 in __GI_abort () at ./stdlib/abort.c:79 #5  0x00005620071c4f51 in __addvsi3 () #6  0x0000562007143f3c in init_htab (hashp=0x562008facb20, nelem=610070812) at dynahash.c:720 (gdb) f 6 #6  0x0000560915207f3c in init_htab (hashp=0x560916039930, nelem=1000000000) at dynahash.c:720 720             hctl->high_mask = (nbuckets << 1) - 1; (gdb) p nbuckets $1 = 1073741824 Best regards, Alexander