Remove btree_gist's useless logic for encoding-aware truncation. gbt_var_node_cp_len() contained logic to ensure that its choice of a common prefix length didn't truncate away part of a multibyte character. However, that was really dead code, because we have not allowed truncation of text-string data types since ef770cbb6, and it seems unlikely that that behavior could ever get resurrected. The code is still reachable via gbt_var_penalty, but for that usage it hardly matters if we break in the middle of a multibyte character: we're just calculating a small correction factor that is arguably bunkum anyway in non-C locales.
Hence, delete said code. That actually removes all need for gbtree_vinfo.eml, which allows const-ification of the gbtree_vinfo structs in which we were changing it, which removes one headache for future attempts to thread-ify the backend. (Curiously, all this infrastructure was itself added by ef770cbb6. Not sure why Teodor didn't see the contradiction.) Author: Tom Lane <[email protected]> Reviewed-by: Ayush Tiwari <[email protected]> Discussion: https://postgr.es/m/AH*avqcykhqgvvpwi1giu4oy.8.1781609375063.hmail.3020001...@tju.edu.cn Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/b82d69abf64fc0c2fc6fdd491d7cecb8244680c2 Modified Files -------------- contrib/btree_gist/btree_bit.c | 1 - contrib/btree_gist/btree_bytea.c | 1 - contrib/btree_gist/btree_numeric.c | 1 - contrib/btree_gist/btree_text.c | 21 ++------------------ contrib/btree_gist/btree_utils_var.c | 37 ++++++------------------------------ contrib/btree_gist/btree_utils_var.h | 2 -- 6 files changed, 8 insertions(+), 55 deletions(-)
