Re: BigInt woes

From: Jan Wieck <JanWieck(at)Yahoo(dot)com>
To: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
Cc: PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: BigInt woes
Date: 2003-10-09 18:23:46
Message-ID: 3F85A7B2.4030409@Yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Joshua D. Drake wrote:

> Hello,
>
> I believe that the Int8/BigInt items are known issues but I have a
> knew programmer that ran into it
> over the weekend (he didn't call me when he encountered the problem,
> when he should of) and we have a
> customer that burned some significant time on it as well. Will this be
> fixed in 7.4?
>
> Here is a test case a customer sent me:
>
> Suppose you have a table:
>
> create table bid (
> bid_id bigint not null,
> bid_time timestamp, constraint bid_pk primary key (bid_id));
>
> Populate it with a million rows or so.
>
> This query:
>
> explain select bid_id, bid_time from bid where bid_id = 10000
>
> Will always sequential scan.
>
> This query:
>
> explain select bid_id, bid_time from bid where bid_id = '10000'
>
> Will use the index.
>
> Where this really gets to be a pain in the butt is with a UDF in
> plpgsql... this UDF will only sequential scan:
>
> create function bid_check(bigint) returns bool as '
> declare
> in_bid_id alias for $1;
> begin
>
> if (select count(*) from bid where bid_id = in_bid_id) = 1 then
> return true;
> else
> return false;
> end if;
> end;
> ' language 'plpgsql';

Without that million rows, my 7.3.4 uses a RESULT plan with a subselect
of an AGG plan using an INDEX scan ... I guess that's not really
PL/pgSQL related but more an SPI/param/optimizer issue. The optimizer
get's different ideas about the selectivity of $n parameters vs.
constant values, and the in_bid_id variable in that statement get's
replaced by a $n parameter for preparing an SPI plan.

Jan

--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck(at)Yahoo(dot)com #

In response to

  • BigInt woes at 2003-10-07 16:57:20 from Joshua D. Drake

Browse pgsql-hackers by date

  From Date Subject
Next Message Jan Wieck 2003-10-09 18:44:07 Re: [HACKERS] [COMMITTERS] pgsql-server/src/template bsdi
Previous Message Robert Treat 2003-10-09 18:17:28 Re: 2-phase commit