fyi....
outside the function (from psql) I receive these results (which I guess
are expected, because without casting, I assume it assumes an int4)
select * from draft where check_id=43
and it results in a seq scan...
but if I :
select * from draft where check_id=int8(43)
it results in an index scan using the primary key.
Jeff
Tom Lane wrote:
>Jeff Amiel <jamiel@istreamimaging.com> writes:
>
>
>>CREATE OR REPLACE FUNCTION public.insert_draft(int4, numeric)
>> RETURNS draft AS
>>'DECLARE
>> passed_customer ALIAS for $1;
>> passed_amount ALIAS for $2;
>> draftid int8;
>> draftrow draft%rowtype;
>>BEGIN
>>insert into draft( amount, customer) values (passed_amount,
>>passed_customer);
>>select into draftid currval(\'public.draft_check_id_seq\');
>>select into draftrow * from draft where check_id=int8(draftid);
>>return draftrow;
>>END;'
>> LANGUAGE 'plpgsql' VOLATILE;
>>
>>
>
>Hmm. I put this function into 7.4.5, minus the explicit cast to int8,
>and it worked just fine (I used a debugger to verify directly that the
>last SELECT was producing an indexscan plan). I don't see anything in
>the CVS logs to suggest that there was a related bug fix between 7.4.2
>and 7.4.5. So I'm baffled why it didn't work for you. Ideas anyone?
>
> regards, tom lane
>
>---------------------------(end of broadcast)---------------------------
>TIP 9: the planner will ignore your desire to choose an index scan if your
> joining column's datatypes do not match
>
>
>
>
>