Re: [GENERAL] Count(*) throws error

Поиск
Список
Период
Сортировка
От Simon Riggs
Тема Re: [GENERAL] Count(*) throws error
Дата
Msg-id 1184191176.4316.57.camel@ebony.site
обсуждение исходный текст
Ответы Re: [GENERAL] Count(*) throws error
Re: [GENERAL] Count(*) throws error
Список pgsql-hackers
On Wed, 2007-07-11 at 17:42 -0400, Tom Lane wrote:
> "Jasbinder Singh Bali" <jsbali@gmail.com> writes:
> > I'm using the following statement in my plpgsql function
> 
> > SELECT INTO no_rows COUNT(*) FROM tbl_concurrent;
> 
> > I have decalred no_rows int4 and initialized it to zero
> 
> > Running the function throws the following error:
> 
> > ERROR:  syntax error at or near "(" at character 13
> > QUERY:  SELECT   $1 (*) FROM tbl_concurrent
> 
> I'll bet a nickel you have a local variable named "count" in that
> function, and plpgsql is blindly trying to substitute its value into
> the SQL query.  The replacement of "COUNT" by " $1 " in the query
> text is the tip-off.

I came across a boat load of these the other day. Seems fairly naff that
we substitute variables blindly.

Seems like we could be slightly more friendly without too much bother:
at least only substitute after the VALUES clause in INSERT. We really
shouldn't substitute "var = var" to "$n = $n" either; am I right in
thinking the latter would happen silently and cause potential error?

--  Simon Riggs EnterpriseDB  http://www.enterprisedb.com



В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Simon Riggs"
Дата:
Сообщение: Re: 2PC-induced lockup
Следующее
От: Tom Lane
Дата:
Сообщение: Re: 2PC-induced lockup