Re: [BUGS] BUG #14512: Backslashes in LIKE

Поиск
Список
Период
Сортировка
От Vojtěch Rylko
Тема Re: [BUGS] BUG #14512: Backslashes in LIKE
Дата
Msg-id CA+fsJpFwe375OgNErLL0YyUOvXhOE8PppoYp29usg9vKxvA1kA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [BUGS] BUG #14512: Backslashes in LIKE  ("David G. Johnston" <david.g.johnston@gmail.com>)
Ответы Re: [BUGS] BUG #14512: Backslashes in LIKE  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-bugs
2017-01-24 18:48 GMT+01:00 David G. Johnston <david.g.johnston@gmail.com>:
​Not a hacker but I'd say that the '\' LIKE '\\\' expression is encountering an invalid optimization that determines that the LIKE cannot succeed (due to string length differences, probably) - it too should fail like the other '\\' LIKE '\\\' example.

So, it is a "failure to fail" type of bug.  Confirmed using a 9.3.12 instance.

From user perspective I see this bug quite similar to behaviour of boolean expression evaluation, where it is stated in documentation:

if the result of an expression can be determined by evaluating only some parts of it, then other subexpressions might not be evaluated at all -- 4.2.14. Expression Evaluation Rules

So I expect this:

root=# select 1 where '\\' like '\\\';
ERROR:  LIKE pattern must not end with escape character
root=# select 1 where false and '\\' like '\\\';
 ?column? 
----------
(0 rows)

same as I expect 

root=# select 1 where 1/0 = 0 and false;
ERROR:  division by zero
root=# select 1 where false and 1/0 = 0;
 ?column? 
----------
(0 rows)

(Note that examples above are not deterministic because of unspecified order of subexpressions evaluation in where clause.)

But reported behaviour confuses me as it seems like leaked internals of LIKE implementation.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Vojtěch Rylko
Дата:
Сообщение: Re: [BUGS] BUG #14512: Backslashes in LIKE
Следующее
От: Tomasz Szypowski
Дата:
Сообщение: [BUGS] could not fork autovacuum worker process: No error