General Bug Report: regexp beginning of line doesn't work properly
От | Unprivileged user |
---|---|
Тема | General Bug Report: regexp beginning of line doesn't work properly |
Дата | |
Msg-id | 199902031558.KAA50837@hub.org обсуждение исходный текст |
Ответы |
Re: [BUGS] General Bug Report: regexp beginning of line doesn't work properly
Re: [BUGS] General Bug Report: regexp beginning of line doesn't work properly |
Список | pgsql-bugs |
============================================================================ POSTGRESQL BUG REPORT TEMPLATE ============================================================================ Your name : Petr Hubeny Your email address : psh@seznam.cz Category : runtime: back-end Severity : serious Summary: regexp beginning of line doesn't work properly System Configuration -------------------- Operating System : Linux 2.2.1 ELF PostgreSQL version : 6.4.2 Compiler used : gcc 2.7.2.3 Hardware: --------- PII-300MHz, 64M RAM Linux agatha 2.2.1pcsp #6 �t �nor 2 16:17:30 CET 1999 i686 unknown Versions of other tools: ------------------------ GNU Make version 3.76.1 flex version 2.5.4 GNU Bison version 1.25 -------------------------------------------------------------------------- Problem Description: -------------------- "select...where a ~ '^A'" doesn't return anything, while "select...where a ~ '^[A]'" does. Also LIKE is affected. -------------------------------------------------------------------------- Test Case: ---------- create table test (a text); insert into test values ('ABC'); insert into test values ('DEF'); select * from test where a ~ '^A'; -- NOTHING!!!, Query 1 select * from test where a ~ '^[A]'; -- ABC, Query 2 select * from test where a LIKE 'A%'; -- NOTHING select * from test where a LIKE '%A%'; -- ABC select * from test where a LIKE '%F'; -- DEF -------------------------------------------------------------------------- Solution: --------- Well, I suspect the parser and I tried to dig through the code, and this is how far I was able to get: with query 1 is function transformStmt() erroneously called with ((A_Expr*)((SelectStmt*)parseTree)->whereClause)->oper == 263 with query 2 is ((A_Expr*)((SelectStmt*)parseTree)->whereClause)->oper == 465 Hope it helps, Psh --------------------------------------------------------------------------
В списке pgsql-bugs по дате отправления: