Thread

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

    Tatsuo Ishii <t-ishii@sra.co.jp> — 1999-02-04T00:57:49Z

    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
    >
    >--------------------------------------------------------------------------
    >
    >