Re: BUG #3435: problem with substring function - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #3435: problem with substring function
Date
Msg-id 19104.1184076961@sss.pgh.pa.us
Whole thread Raw
In response to Re: BUG #3435: problem with substring function  ("Pavel Stehule" <pavel.stehule@gmail.com>)
List pgsql-bugs
"Pavel Stehule" <pavel.stehule@gmail.com> writes:
> It has little bit strange behave on 8.3. It works well, but I have to
> use casting.

> postgres=# select substring('1234' from to_number('3', '999999')::int for 3);
>  substring
> -----------
>  34
> (1 row)

Yeah, the OP is getting burnt by an implicit cast to text, which the
parser picks because there is no implicit cast from numeric to integer
... but substring(text,text,text) has completely different behavior
from substring(text,int,int).

The reason we got rid of most implicit casts to text for 8.3 was exactly
to stop surprising choices like this one.

>> This is a sample, really i like to use an expression using date_part() as
>> the first parameter for substring.

There's no implicit cast from float8 to integer, either.

            regards, tom lane

pgsql-bugs by date:

Previous
From: "FAGOT Alain"
Date:
Subject: BUG #3436: inherited primary keys are not reported as primary key by the Java DatabaseMetaData
Next
From: Tom Lane
Date:
Subject: Re: BUG #3436: inherited primary keys are not reported as primary key by the Java DatabaseMetaData