The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/16/datatype-character.html Description:
The documentation implies that the data types text and varchar are equivalent, but this is not the case with this test in Postgresql version 16. CREATE TEMPORARY TABLE test(ch char, vc varchar, txt text, txt0 text); INSERT INTO test VALUES (' ', ' ', ' ',''); SELECT ch = vc AS ch_vc, ch = txt AS ch_txt, ch = txt0 AS ch_txt0, vc = ch AS vc_ch, vc = txt AS vc_txt, vc = txt0 AS vc_txt0, txt = ch AS txt_ch, txt = vc AS txt_vc, txt = txt0 AS txt_txt0, txt0 = ch AS txt0_ch, txt0 = vc AS txt0_vc, txt0 = txt AS txt0_txt FROM test; ch_vc ch_txt ch_txt0 vc_ch vc_txt vc_txt0 txt_ch txt_vc txt_txt0 txt0_ch txt0_vc txt0_txt TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE The tests are showing that the space character is treated differently in a one character string. Whilst varchar = text, the comparison with char is treated differently with text and varchar