Evgeny Duzhakow <diabolo@philol.msu.ru> writes:
> SELECT playerid FROM players WHERE nickname = 'qq' AND password = 'qqq';
> [ does an index scan ]
> but in procedure on PL/PgSQL this select realy do sequense scan:
I'd bet that you were sloppy about datatypes. Postgres will
automatically interpret those quoted literals as being the same datatype
as what they were compared to, but there's no such free lunch when
you're dealing with declared variables in a plpgsql function. If the
datatypes don't match you probably won't get an index scan. Change the
types to match or add explicit coercions.
regards, tom lane