Fix LIKE/regex optimization for indexscan with exact-match pattern. Commit 85b7efa1c introduced support for LIKE with non-deterministic collations. By moving some conditionals around, it accidentally broke the optimization for converting a LIKE or regex exact-match pattern to an equality indexqual when the index collation doesn't match the expression collation. That should be allowed if the expression collation is deterministic. This patch re-introduces the optimization for that common case.
One important beneficiary of this optimization is the "\d tablename" command in psql. Without this fix that will do a seqscan on pg_class instead of an index point lookup. Reported-by: Andres Freund <[email protected]> Author: Jelte Fennema-Nio <[email protected]> Reviewed-by: Tom Lane <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch-through: 18 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/2d7808e6fc2cb5d7a964e7a24801a6fa133a3261 Modified Files -------------- src/backend/utils/adt/like_support.c | 20 ++++++++++++++++---- src/test/regress/expected/collate.icu.utf8.out | 23 +++++++++++++++++++++++ src/test/regress/expected/collate.out | 23 +++++++++++++++++++++++ src/test/regress/sql/collate.icu.utf8.sql | 10 ++++++++++ src/test/regress/sql/collate.sql | 10 ++++++++++ 5 files changed, 82 insertions(+), 4 deletions(-)
