More fixes for abbreviated keys infrastructure

Enterprise / PostgreSQL - Robert Haas [postgresql.org] - 22 January 2015 10:58 UTC

First, when LC_COLLATE = C, bttext_abbrev_convert should use memcpy() rather than strxfrm() to construct the abbreviated key, because the authoritative comparator uses memcpy(). If we do anything else here, we might get inconsistent answers, and the buildfarm says this risk is not theoretical. It should be faster this way, too.

Second, while I'm looking at bttext_abbrev_convert, convert a needless use of goto into the loop it's trying to implement into an actual loop.

Both of the above problems date to the original commit of abbreviated keys, commit 4ea51cdfe85ceef8afabceb03c446574daa0ac23.

Third, fix a bogus assignment to tss->locale before tss is set up. That's a new goof in commit b529b65d1bf8537ca7fa024760a9782d7c8b66e5.

b181a91 More fixes for abbreviated keys infrastructure.
src/backend/utils/adt/varlena.c | 87 +++++++++++++++++++++++----------------
1 file changed, 52 insertions(+), 35 deletions(-)

Upstream: git.postgresql.org


  • Share