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 1toQC8-00AWs3-T3 for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Mar 2025 17:00:09 +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 1toQC9-00HLLS-V3 for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Mar 2025 17:00:08 +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.94.2) (envelope-from ) id 1toQC9-00HLLK-Je for pgsql-hackers@lists.postgresql.org; Sat, 01 Mar 2025 17:00:08 +0000 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1toQC4-000Nu3-2F for pgsql-hackers@lists.postgresql.org; Sat, 01 Mar 2025 17:00:07 +0000 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-390eb7c1024so1567727f8f.0 for ; Sat, 01 Mar 2025 09:00:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740848403; x=1741453203; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=zjf9fJS3AUVQByKUBNBwGZPVU+7Lwhvo8HVufsWsa+o=; b=YtVbW4oMWrIqlXNo6mSxJTL0qNXxEU0b1Gsmo3ddpcLsKTh80kc0lC769hbIe7/Gkb U8Tlt9KAWTwfWjTqMjsul1UKghLFynUrrg+C+/eGVlQ14FQK94YFu6nrZC5J0z3i9b9/ l17BsJzVUMaDS+CdBWh47wdbbJZNRYU8Y51ZnrROSN7hzQGmtSs3TLuf+JJ5HXwVx/Q3 v7+uoOQ7ersFDyQlQHHhTgZhy+e5WFveDWDD/Q5099Xb5MH6M0lSWG6nyeJtNCflw64P VxDt4nYVVGmwXuXkLqORqKsEqiiJ+cjab7m1NZ7t9Bezhw6avyaKj9EOH0wL00nNR7QK UxWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740848403; x=1741453203; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=zjf9fJS3AUVQByKUBNBwGZPVU+7Lwhvo8HVufsWsa+o=; b=vCA3UOtARVT3roIuZcY5nsJxrves7M6oQlCHh6osqXNqavxwY4U/unQgicoOakk5FS RjhVeTD4WPsOHgAuGJoiNY3tFHrVnose5AfA9CGB2G0C14O9bP2DIbQEzR781RQO1qrL 0j8UMCx7SwCmga7vJRgW+tDDK4y7BTgz8AHnG+FahnnRqEqaCwj2MYvnmpE6fHSpWp7m U0Kg4YT11h3MCmVG6xk6nIZsNrQ1NCW/Y4dhFv9dwIjncI0NCDwfCx7saEybsz2Qxayj az1y4mvh5OAiSVvrjLjAh7nDfPtKV0TkDWg0gJgrJo8VHkVogudd0gfTiXDGpzqFS57P 58eQ== X-Forwarded-Encrypted: i=1; AJvYcCWCcSgHD4jfmzodef/W1jymZhRa14jcRd/izyWuGXqFbDnXKysXgu+mudH9Hm3kVu5ZeJhHLD9oQwWul6bh@lists.postgresql.org X-Gm-Message-State: AOJu0YwjouZ4mRlAbntY/SyKWat2nUUlh7rO1UzGAR0eQlC7TpoMaBJW DtNoRhESDN9mdnSPi/1Y3DqD/SONGS6+QEV44kY8lis0W+wdnEFO X-Gm-Gg: ASbGncuCAaB1bc59qf2UnPdxSP/9NXFNA+7E/T16/Gi7cDhPSVXsjnaSdx2FeT2Zy9e 84ED90I2QmtGdKjMd2In149J4MoNAw5ZTh3csgilfp4gd2QuTqiLH6wGvNA3v9v6nkl0aKlvdg2 XYOOyEXMYsLwyMudfDykjy36jAnTnlIaXhLF6IkIzvLURIzPjlNYSj5zmfNXqNsi6HF/AV7QsRP yhQY+p2C1ukkUbERbwsNJcvEx4I+JM85D5MukzhBIbx5o9IR4N/XjbRIRj21/ez5bsXis5A1u8w CrpGlrjDSJjh/PPt8BxrfSxigLd/k0nGfXRFJG6gYALRaUo= X-Google-Smtp-Source: AGHT+IEq5FHRyD0X35MsPg7lH++cRK8cTd/XKC0p1ASjjQNnHByDh8IRHch7wgJvE2+Uf1mYDFdKxQ== X-Received: by 2002:a5d:6d0f:0:b0:390:e158:a1b8 with SMTP id ffacd0b85a97d-390eca34b3bmr8644540f8f.43.1740848402604; Sat, 01 Mar 2025 09:00:02 -0800 (PST) Received: from [192.168.0.50] ([89.149.68.176]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43b7a27aa69sm93905065e9.29.2025.03.01.09.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 01 Mar 2025 09:00:01 -0800 (PST) Content-Type: multipart/alternative; boundary="------------j5UWJJXJfK6huFCx84eMMJsa" Message-ID: <57988cee-5cc8-44f9-981e-8d62e556f5c8@gmail.com> Date: Sat, 1 Mar 2025 19:00:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Statistics Import and Export To: Jeff Davis , Andres Freund , Corey Huinker Cc: Tom Lane , Michael Paquier , jian he , Nathan Bossart , Bruce Momjian , Matthias van de Meent , Magnus Hagander , Stephen Frost , Ashutosh Bapat , Peter Smith , PostgreSQL Hackers , alvherre@alvh.no-ip.org References: <3670503.1740173078@sss.pgh.pa.us> <3728741.1740178078@sss.pgh.pa.us> <97b451228227c555be1a4f79c4a62ddec9a74f06.camel@j-davis.com> <6af48508a32499a8be3398cafffd29fb6188c44b.camel@j-davis.com> Content-Language: en-US From: Alexander Lakhin In-Reply-To: <6af48508a32499a8be3398cafffd29fb6188c44b.camel@j-davis.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------j5UWJJXJfK6huFCx84eMMJsa Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello Jeff, 26.02.2025 04:00, Jeff Davis wrote: > I plan to commit the patches soon. It looks like 8f427187d broke pg_dump on Cygwin: https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=fairywren&dt=2025-02-26%2010%3A03%3A07 As far as I can see, it exits prematurely here:                float           reltuples = strtof(PQgetvalue(res, i, i_reltuples), NULL); because of: /*  * Cygwin has a strtof() which is literally just (float)strtod(), which means  * we get misrounding _and_ silent over/underflow. Using our wrapper doesn't  * fix the misrounding but does fix the error checks, which cuts down on the  * number of test variant files needed.  */ #define HAVE_BUGGY_STRTOF 1 ... #ifdef HAVE_BUGGY_STRTOF extern float pg_strtof(const char *nptr, char **endptr); #define strtof(a,b) (pg_strtof((a),(b))) #endif and: float pg_strtof(const char *nptr, char **endptr) { ...     if (errno)     {         /* On error, just return the error to the caller. */         return fresult;     }     else if ((*endptr == nptr) || isnan(fresult) || ... Best regards, Alexander Lakhin Neon (https://neon.tech) --------------j5UWJJXJfK6huFCx84eMMJsa Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit
Hello Jeff,

26.02.2025 04:00, Jeff Davis wrote:
I plan to commit the patches soon.

It looks like 8f427187d broke pg_dump on Cygwin:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=fairywren&dt=2025-02-26%2010%3A03%3A07

As far as I can see, it exits prematurely here:
               float           reltuples = strtof(PQgetvalue(res, i, i_reltuples), NULL);

because of:
/*
 * Cygwin has a strtof() which is literally just (float)strtod(), which means
 * we get misrounding _and_ silent over/underflow. Using our wrapper doesn't
 * fix the misrounding but does fix the error checks, which cuts down on the
 * number of test variant files needed.
 */
#define HAVE_BUGGY_STRTOF 1
...
#ifdef HAVE_BUGGY_STRTOF
extern float pg_strtof(const char *nptr, char **endptr);
#define strtof(a,b) (pg_strtof((a),(b)))
#endif

and:
float
pg_strtof(const char *nptr, char **endptr)
{
...
    if (errno)
    {
        /* On error, just return the error to the caller. */
        return fresult;
    }
    else if ((*endptr == nptr) || isnan(fresult) ||
...

Best regards,
Alexander Lakhin
Neon (https://neon.tech) --------------j5UWJJXJfK6huFCx84eMMJsa--