Thread: BUG #15084: Invalid LIKE pattern not always reported
The following bug has been logged on the website: Bug reference: 15084 Logged by: Tudor Bosman Email address: tudorb@gmail.com PostgreSQL version: 9.5.11 Operating system: Ubuntu 16.04 Description: PostgreSQL will not always detect an invalid LIKE pattern (one that ends with a backslash). Example: tudor=# select 'foo' like 'foo\'; ?column? ---------- f (1 row) tudor=# select 'foobar' like 'foo\'; ERROR: LIKE pattern must not end with escape character This probably happens because the pattern is only parsed lazily (as needed); if PostgreSQL detects that a match is impossible, it doesn't even look at the rest of the pattern. Still, it would be nice for error reporting to be consistent. Thanks, -Tudor.
The following bug has been logged on the website:
Bug reference: 15084
Logged by: Tudor Bosman
Email address: tudorb@gmail.com
PostgreSQL version: 9.5.11
Operating system: Ubuntu 16.04
Description:
PostgreSQL will not always detect an invalid LIKE pattern (one that ends
with a backslash).
Example:
tudor=# select 'foo' like 'foo\';
?column?
----------
f
(1 row)
tudor=# select 'foobar' like 'foo\';
ERROR: LIKE pattern must not end with escape character
This probably happens because the pattern is only parsed lazily (as needed);
if PostgreSQL detects that a match is impossible, it doesn't even look at
the rest of the pattern.
Still, it would be nice for error reporting to be consistent.
Last March (Bug# 14512) Tom Lane thought a performant solution was possible though it was never committed.
I'm still +1 if it can be done without hurting performance on patterns that do match - a compile-time failure here is desirable.
Full thread here:
David J.
=?utf-8?q?PG_Bug_reporting_form?= <noreply@postgresql.org> writes: > PostgreSQL will not always detect an invalid LIKE pattern (one that ends > with a backslash). > This probably happens because the pattern is only parsed lazily (as needed); > if PostgreSQL detects that a match is impossible, it doesn't even look at > the rest of the pattern. Yeah, exactly. > Still, it would be nice for error reporting to be consistent. This has been discussed before, but nobody could see how to do it without taking a performance hit (ie, doing a full scan of the pattern before doing any actual work). It didn't seem worth that. It occurs to me that we could make the behavior more consistent by redefining a trailing backslash as something we silently ignore, instead of raising an error. Not sure if that's an improvement, though. regards, tom lane