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 1v9lI0-007mkU-WD for pgsql-docs@arkaria.postgresql.org; Fri, 17 Oct 2025 14:18:40 +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 1v9lHy-002xu8-Ro for pgsql-docs@arkaria.postgresql.org; Fri, 17 Oct 2025 14:18:37 +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 1v9lHy-002xty-J4 for pgsql-docs@lists.postgresql.org; Fri, 17 Oct 2025 14:18:37 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v9lHv-002ISN-25 for pgsql-docs@lists.postgresql.org; Fri, 17 Oct 2025 14:18:36 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-27ee41e074dso24320095ad.1 for ; Fri, 17 Oct 2025 07:18:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760710715; x=1761315515; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=kF0ArVZKUxcLDnmP2mplTpWaF1ZidW2elNvBCm+Vyw8=; b=CvaDG1s1vcCzxgnTLSdn+sTEm/WfKcxFQWLVIWNvgD1i6SyqjwBMLui6sw/s9W1s2j 6lTCMCYjlTabyfxhImf5BozkCLKqGXwTLecIabkgdW0wg4fTBxTgOkqsafC7NKEo2s7+ yOA6z3tSI0RWi5ZNcGFWbnateBDZ3P2A3Uy+bqwexkVZICw0E7LVG5QDMiQRnj1QyH8L 9Gj90ua43rsKjeTGu1aCKQgUhG3btHG8Btb91XKQwxfEPbWYNDogbhbKaj/0fpmQSUQV OT7E/oR/iT+Kp70TpyfloLpD/q6cRhdEr5SRgcLuZgn255lZZETiCk5fBRRxgK934NqV J3Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760710715; x=1761315515; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kF0ArVZKUxcLDnmP2mplTpWaF1ZidW2elNvBCm+Vyw8=; b=B4RHo/rqH9bqhzNGijYCD9NQPVkc02m3ps/TFLTBqT+dt9RK+Vt9YLWIN7fqVqR6fm lGZk4GNu4SQnHY5D5qfcTUNBxVO5KcKDXtgw+0i6IdF7jSsPkUQGYjCdzBTF9Q5+bYTk YFBh+UTO9pHy6A1aulwAI+I4DVmZeioG5R0hxeH1eOC3cl65s+RvQsfYQlMDsDTwecBN GbG0VI32VF/5ldz2xRFm/+yEWYI66Herjx46JD33/0yNB/lqfNiKQIrvet5aSUWzgl5t MMYYCuySwarTzZt8APc+WCDb/+UGkCsWegcB8oxSxU7Qh1UM2B6wnEakBfXB2OQS4g8+ r21Q== X-Forwarded-Encrypted: i=1; AJvYcCVY4IF+fIYHNac2D1NCLRNTT2ocyfuxFvb3nufL2jKV3z3/TOgA4ciRJy/VLpp9NR7n7+RjqTqebj0A@lists.postgresql.org X-Gm-Message-State: AOJu0YzcT4YHGsigpDGFZgvhuMJxS4kxnnlOxOhTjwJXPgWRCVQidOsv o7+d7UtQ+g737rihZKb0VwEzXtQowmCL11JURidbAtwovNDfRhz/t3x0CQIz3XHm89/WPMwcnui 1CIZXj3wNskKFI84QGTBjq/ILHORAs0M= X-Gm-Gg: ASbGncuNC6wJa1k5CHIEYcYD+qW9WjB/vPizDafnH6NR+g99lkh9Sumh4wSaUxUzB2y xm6VOsGFlMLLXsXiCUiWjNQ7fZ6sEHQID8Y5Z6Adhh12MQfWcIBSt/3oh1/mbiKqECdhLYHQNOc PH7Osqk84GALOSXarxcyIsowyzPiy7d34ZXZq5mzdG/OEepZXXLsqowT5FUJkRMDSGrBgDGzRZv keX6q7MrqUmDF1CNdfVbddAKIpTn5dWbD3lEH24j7U12iJhwcIE2m60yQsEsQ== X-Google-Smtp-Source: AGHT+IGjMuShdh2LHdwJ15kqqw56q2Im4yTZ0KVH8eoGIISNszRaoUVGBzZXYF6Wyh1kVA4pUpJ5AOTwSlw8mR3TpiI= X-Received: by 2002:a17:902:f647:b0:266:ddd:772f with SMTP id d9443c01a7336-290c9c89cc9mr52339895ad.9.1760710714646; Fri, 17 Oct 2025 07:18:34 -0700 (PDT) MIME-Version: 1.0 References: <176044409338.770.16064383081308443747@wrigleys.postgresql.org> <1307875.1760556576@sss.pgh.pa.us> <92151c4debb48bbbaed4db81c79d73c36f619858.camel@cybertec.at> In-Reply-To: <92151c4debb48bbbaed4db81c79d73c36f619858.camel@cybertec.at> From: Sergei Katkovsky Date: Fri, 17 Oct 2025 18:18:08 +0400 X-Gm-Features: AS18NWCmKNfjHrEB3FiQYG0OS0yrtlNjzpGsaUH-mMAAnLjpzYFxxtUbIvjR8kE Message-ID: Subject: Re: BPCHAR description in 8.3. Character Types is misleading and incomplete To: Laurenz Albe Cc: Tom Lane , Jeff Davis , pgsql-docs@lists.postgresql.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Fri, Oct 17, 2025 at 4:49=E2=80=AFPM Laurenz Albe wrote: > "bpchar" and "varchar", when used without type modifier, are actually > identical: > > SELECT octet_length(BPCHAR 'x '), > octet_length(VARCHAR 'x '), > octet_length(TEXT 'x '); > > octet_length =E2=94=82 octet_length =E2=94=82 octet_length > =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=AA=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=AA=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90 > 4 =E2=94=82 4 =E2=94=82 4 > > The blank-trimming only occurs when a "bpchar" is converted to "text", > for example when used with the concatenation operator. Unfortunately, BPCHAR and VARCHAR are not identical in other contexts. The situation is not the same as with BCHAR(n), which is just an alias for CHAR(n). SELECT BPCHAR 'x' =3D VARCHAR 'x ', VARCHAR 'x' =3D BPCHAR 'x ', VARCHAR 'x' =3D VARCHAR 'x '; true true false For comparison with BPCHAR trailing blanks are insignificant, but when we have VARCHAR on both sides, they matter. With best regards, Sergei Katkovskii