Thread: General Bug Report: regexp beginning of line doesn't work properly

General Bug Report: regexp beginning of line doesn't work properly

From
Unprivileged user
Date:
============================================================================
                        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

--------------------------------------------------------------------------


Re: [BUGS] General Bug Report: regexp beginning of line doesn't work properly

From
Bruce Momjian
Date:
>
> ============================================================================
>                         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,

Works here fine.  I have no idea what the cause could be.  Very strange.

--
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Re: [BUGS] General Bug Report: regexp beginning of line doesn't work properly

From
Tatsuo Ishii
Date:
Couldn't reproduce here.

FreeBSD 2.2.6-RELEASE
PostgreSQL 6.4.2
gcc 2.7.2.1
configure --with-mb=EUC_JP

>============================================================================
>                        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 (IZ(Bt $B(Bor 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
>
>--------------------------------------------------------------------------
>
>