Re: Review: listagg aggregate
Pavel Stehule <pavel.stehule@gmail.com>
From: Pavel Stehule <pavel.stehule@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp>, "David E. Wheeler" <david@kineticode.com>, "pgsql-hackers@postgresql.org Hackers" <pgsql-hackers@postgresql.org>
Date: 2010-01-28T15:32:33Z
Lists: pgsql-hackers
2010/1/28 Robert Haas <robertmhaas@gmail.com>: > On Thu, Jan 28, 2010 at 9:01 AM, Pavel Stehule <pavel.stehule@gmail.com> wrote: >> simplest could not be a best. There have to be only a const >> expression. But we have not possibility to check it in pg. > > Well... that's an entirely arbitrary limitation. I admit that it > doesn't seem likely that someone would want to have a variable > delimiter, but putting extra effort and code complexity into > preventing it seems pointless. It is only a few lines with zero complexity. The main issue of Takahiro proposal is "unclean" behave. we can have a content c1 c2 ----------- c11, c12, c21, c22 and result of string_agg(c1, c2) have to be ?? c11 c12 c21 or c11 c22 c21 ?? What if some content of c2 will be NULL ?? I checked oracle. Oracle doesn't allow variable as delimiter. We can't check it. But we can fix first value and using it as constant. More - Takahiro proposal has one performance gain. It have to deTOAST separator value in every cycle. Takahiro has true - we can store length of separator and we can add separator to cumulative value as binary value. I prefer original behave with note in documentation - so as separator is used a value on first row, when is used expression and not constant. Regards Pavel > > ...Robert >