Skip to content

Commit 9c57d11

Browse files
committed
Add C comment about problems with CHAR() space trimming
1 parent b8f00a4 commit 9c57d11

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/backend/utils/adt/varchar.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,18 @@ bpcharcmp(PG_FUNCTION_ARGS)
846846
len2;
847847
int cmp;
848848

849+
/*
850+
* Trimming trailing spaces off of both strings can cause a string
851+
* with a character less than a space to compare greater than a
852+
* space-extended string, e.g. this returns false:
853+
* SELECT E'ab\n'::CHAR(10) < E'ab '::CHAR(10);
854+
* even though '\n' is less than the space if CHAR(10) was
855+
* space-extended. The correct solution would be to trim only
856+
* the longer string to be the same length of the shorter, if
857+
* possible, then do the comparison. However, changing this
858+
* might break existing indexes, breaking binary upgrades.
859+
* For details, see http://www.postgresql.org/message-id/CAK+WP1xdmyswEehMuetNztM4H199Z1w9KWRHVMKzyyFM+hV=zA@mail.gmail.com
860+
*/
849861
len1 = bcTruelen(arg1);
850862
len2 = bcTruelen(arg2);
851863

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy