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 1t8jwV-005jLA-DP for pgsql-bugs@arkaria.postgresql.org; Wed, 06 Nov 2024 17:35:42 +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 1t8jwS-007qan-1h for pgsql-bugs@arkaria.postgresql.org; Wed, 06 Nov 2024 17:35:40 +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 1t8jwR-007qaf-Ki for pgsql-bugs@lists.postgresql.org; Wed, 06 Nov 2024 17:35:40 +0000 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t8jwK-000XoP-7l for pgsql-bugs@postgresql.org; Wed, 06 Nov 2024 17:35:39 +0000 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-7eda47b7343so87020a12.0 for ; Wed, 06 Nov 2024 09:35:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1730914531; x=1731519331; darn=postgresql.org; h=mime-version:user-agent:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=dFAOJcXxGH3wEf8a6S381H37zZcrMyjz/N8MyCbUMio=; b=oxXyEpzBZAdomnN8tAZy8Y7Z2bGmpTdg81pCKEFoTqZFlIsLAvyzCAeRaG8qZzjHtq 8zkxWvoHvXGLO9hPcZepjirJafA09Q2H9LyFCeuSmHKBzpKa5IF9IaABL/eV/tVtKl/L RGWSDHXEZgZKIbXRRhZbm34/2awCYw4H38qWVdoS0DI7n6Tw8XlUHCdK9A8gz7mu2Yv0 W9Plp3L/pT/3+sEgoPMhP2Wnf7BlO0ZzraQaagK4xXzsj17sCNjXXbz2HAeH2cX3j3NA Gy+HlurIJgtwxjrb2o3GFPLsx4U5FbpLvLtkh9xAbSwXHWIttS5hl3n9OOsVrydt5JfG bt5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730914531; x=1731519331; h=mime-version:user-agent:date:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dFAOJcXxGH3wEf8a6S381H37zZcrMyjz/N8MyCbUMio=; b=tQ0gNwzPBdQWT1Uk42vxA/ucvC53cJUlDwfftvstwaIH90HsQrlHjVNRwgpynK71r1 TjO5FGgDFvc6zejJvuELYVucbM3IzN1qmYukKYoL3eM4ASyokDsE/MmBgkTYGPf6IfGf RGsJRi1G6cYzk2ET6qhzmxz6ETnhibojPRz1X2zovNtchjdy187TQRRlqr7swa6zIUjn eFH89993THuoOxgP2fg0zzvIdlkL+4GNy35zwyuERjL0imglGZBzGYE2hQqex1HyetZR WCkKrW7bSsZJYAT/VrxVOfnf3zFLOESQnmOMYoWYeR0qjLQzuAsXldiF+ziug9qjFQU+ nUUw== X-Gm-Message-State: AOJu0YycheuBy5kfxRGWAt3s7pyZIoPJdgCX7BzQEQiUzbqq/QSbu0y8 SjaaRiZP2lPHxaLH63B9jtOmVp/OzUOm+/u4/5e8OFoBOs8T83e1sWIOLcPFDnHvR9WPrx1lXjQ = X-Google-Smtp-Source: AGHT+IHR+Y1iylGnEXKB4vb812MNdkr9hf+yWQ06zj+9b7MIEAKq8B9KtRid7LCXvgbdrh/QBwdRtQ== X-Received: by 2002:a05:6a20:258f:b0:1dc:5e5:ea65 with SMTP id adf61e73a8af0-1dc05e5ee59mr3063987637.34.1730914530767; Wed, 06 Nov 2024 09:35:30 -0800 (PST) Received: from ?IPv6:2607:fb91:1597:129b:d1a2:741d:402c:72c8? ([2607:fb91:1597:129b:d1a2:741d:402c:72c8]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-720bc1ba19asm12151834b3a.21.2024.11.06.09.35.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Nov 2024 09:35:30 -0800 (PST) Message-ID: Subject: 17: lc_collate_is_c() when LC_CTYPE != LC_COLLATE From: Jeff Davis To: pgsql-bugs@postgresql.org Date: Wed, 06 Nov 2024 09:35:27 -0800 Content-Type: multipart/mixed; boundary="=-HSSOAUrGFybixha/2fXb" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-HSSOAUrGFybixha/2fXb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Due to a very unfortunate copy-and-paste error in 2d819a08a1, for the libc provider, lc_collate_is_c() is checking the environment's LC_CTYPE rather than LC_COLLATE :( This sort of works if LC_COLLATE=3DC and LC_CTYPE=3Den_US.utf8 (or another real locale), because lc_collate_is_c() returns false and it falls through to strcoll(), which will observe LC_COLLATE. But if LC_COLLATE=3Den_US.utf8 and LC_CTYPE=3DC, then it's wrong results.= =C2=A0 By good fortune, I believe that the latter combination is fairly rare, which may explain why it evaded manual testing until now. But it's still pretty bad. Trivial patch attached, which I intend to commit shortly to 17 only. The bug does not exist in master due to recent refactoring. Regards, Jeff Davis --=-HSSOAUrGFybixha/2fXb Content-Disposition: attachment; filename="v1-0001-Fix-lc_collate_is_c-when-LC_COLLATE-LC_CTYPE.patch" Content-Type: text/x-patch; name="v1-0001-Fix-lc_collate_is_c-when-LC_COLLATE-LC_CTYPE.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAxNmY0NmFkODVhMzdkYTU5MGM4YmZiNDA4MWRlZTM4MDU3OGY2ODk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDUgTm92IDIwMjQgMTc6Mzg6MjIgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxXSBGaXggbGNf Y29sbGF0ZV9pc19jKCkgd2hlbiBMQ19DT0xMQVRFICE9IExDX0NUWVBFLgoKLS0tCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3BnX2xvY2FsZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCmlu ZGV4IGNkNWFkMWU3MDUuLjRjODVhMDFiMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19sb2NhbGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMK QEAgLTEzNzAsOSArMTM3MCw5IEBAIGxjX2NvbGxhdGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCQl9 CiAJCWVsc2UgaWYgKGRlZmF1bHRfbG9jYWxlLnByb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJD KQogCQl7Ci0JCQlsb2NhbGVwdHIgPSBzZXRsb2NhbGUoTENfQ1RZUEUsIE5VTEwpOworCQkJbG9j YWxlcHRyID0gc2V0bG9jYWxlKExDX0NPTExBVEUsIE5VTEwpOwogCQkJaWYgKCFsb2NhbGVwdHIp Ci0JCQkJZWxvZyhFUlJPUiwgImludmFsaWQgTENfQ1RZUEUgc2V0dGluZyIpOworCQkJCWVsb2co RVJST1IsICJpbnZhbGlkIExDX0NPTExBVEUgc2V0dGluZyIpOwogCQl9CiAJCWVsc2UKIAkJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIGNvbGxhdGlvbiBwcm92aWRlciAnJWMnIiwKLS0gCjIuMzQu MQoK --=-HSSOAUrGFybixha/2fXb--