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 1sbSDx-00Gg93-Qx for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Aug 2024 22: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 1sbSDv-003AuK-Ms for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Aug 2024 22:00:07 +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 1sbSDv-003AuC-CF for pgsql-hackers@lists.postgresql.org; Tue, 06 Aug 2024 22:00:07 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sbSDo-003WpY-Ph for pgsql-hackers@postgresql.org; Tue, 06 Aug 2024 22:00:06 +0000 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1fc5549788eso10327345ad.1 for ; Tue, 06 Aug 2024 15:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1722981598; x=1723586398; darn=postgresql.org; h=mime-version:user-agent:content-transfer-encoding:date:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=wJ0UNIFwZ2cWjBL6ny9Vi/AiAD61ugItpEhHnS7rCVk=; b=Ycej9cOKvUl5eILqeCtJvbIuBCNKM0DAymMclrc2IsZ88tRA5OM764TTOf/t5URpyH k0yOUz1KRnpQFsEBq1/T53RH3MGEJnJXHOcQkKb9ttkIu7o/Maj9+KF8qURgluZNkPFy XiDUX2DNXhtrT+0q4ZpReSJvX4wk/egLLKdVA6iRXZwxC6/pjIveD2EqmGLygHCLN6d+ bHadUV/EcVh31zQ4S1cadE5qJ57C7Voa+3nGJ/MNtNH7uQVTLxtVB/1N34EF3ti7X7g/ exZNF7TLggDmLqxvbYOOWO7/LrJGcneM4gfgzQHr1+LshEpp6Bwpk1SuJvVBLo+utG2S 1pNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722981598; x=1723586398; h=mime-version:user-agent:content-transfer-encoding:date:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=wJ0UNIFwZ2cWjBL6ny9Vi/AiAD61ugItpEhHnS7rCVk=; b=XxFrY+KTz15oJHuXObK1LGiBslQm/HiJw5sKqbv2MpPC6EQ/6QbnHVxV/iN8gxTBLY U0lVOiF2LRXc8EFIbB/rvW71dP1cg7Cd254m2jtJ+fgA25F3WNDIJVnfjCMvsy9fJiDn d2mcl5hNaC0VA/52vk6uXJ/cc1be0O083LhPCpTDB+uW16N0sQE8uQmizltlrWhlZfBM O8h3qK3QuPfbRCWh0q1KqyQp0BRvWJ8RGiRLe1HFEqYnSKoe4kUBHYjf6F4IYxefvGnG 4It1JoCoKF31TcAwu5t+k6gvs/t5A2ESAn2TqfQGoRcvw4faP7cwIrzrdiAqzLgBvNBd go7A== X-Gm-Message-State: AOJu0YydwQNLv5WswYYE1MM6dvhFGV0GF8SmQBFWTuG8Wa0k6p8N0oXf YlajyFv5RanCnCOs2Ch70gKFd/ld4I/3L10A+9a2XlhA4XuakYkPsseDGe0+PWLXK2xx4SgSzHM = X-Google-Smtp-Source: AGHT+IFCdtcU3r81oJtJS+tf4fEwDfBRSju1FRF2I0mK/D6PN96EDvkD277g3TYvMAN3h/SxFzuTtw== X-Received: by 2002:a17:902:d4c3:b0:1fb:1497:c304 with SMTP id d9443c01a7336-1ff5710bf56mr258662175ad.0.1722981597654; Tue, 06 Aug 2024 14:59:57 -0700 (PDT) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff58f21de1sm92280835ad.25.2024.08.06.14.59.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Aug 2024 14:59:56 -0700 (PDT) Message-ID: <4c5da86af36a0d5e430eee3f60ce5e06f1b5cd34.camel@j-davis.com> Subject: Remaining dependency on setlocale() From: Jeff Davis To: pgsql-hackers@postgresql.org Date: Tue, 06 Aug 2024 14:59:55 -0700 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 After some previous work here: https://postgr.es/m/89475ee5487d795124f4e25118ea8f1853edb8cb.camel@j-davis.= com we are less dependent on setlocale(), but it's still not completely gone. setlocale() counts as thread-unsafe, so it would be nice to eliminate it completely. The obvious answer is uselocale(), which sets the locale only for the calling thread, and takes precedence over whatever is set with setlocale(). But there are a couple problems: 1. I don't think it's supported on Windows. 2. I don't see a good way to canonicalize a locale name, like in check_locale(), which uses the result of setlocale(). Thoughts? Regards, Jeff Davis