Re: count syntax
От | Bruce Momjian |
---|---|
Тема | Re: count syntax |
Дата | |
Msg-id | 200305310218.h4V2I2G11092@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: count syntax (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: count syntax
|
Список | pgsql-general |
Is this a TODO bug? --------------------------------------------------------------------------- Tom Lane wrote: > Patrick Welche <prlw1@newn.cam.ac.uk> writes: > > What is the difference between the following? > > > transatlantic=# select count(*) from trans; > > This is a SQL-spec-mandated special case meaning "count the number of rows". > > > transatlantic=# select count(trans.flowindex) from trans; > > This counts the number of non-null values of trans.flowindex. Also > per spec. > > > transatlantic=# select count(trans.*) from trans; > ERROR: Memory exhausted in AllocSetAlloc(204) > > This syntax is not legal per SQL spec. Postgres interprets it as a > command to count the number of non-null values of "trans.*", which in > this context is taken as being a whole-row variable. Unfortunately the > present implementation of whole-row variables leaks memory ... > > I don't believe that a whole-row variable will ever be null, so the > end result is the same as count(*). You may as well spell it in the > spec-approved fashion. > > regards, tom lane > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
В списке pgsql-general по дате отправления: