Tom Lane wrote:
> I added code to inline_function to stop inlining if a parameter
> expression to be substituted multiple times has cost greater than
> 10*cpu_operator_cost (which roughly means that it contains more than
> 10 operators or functions). This seems to cut off the problem nicely,
> at least for this example. The factor of 10 is a bit of a magic number
> but it seems reasonable.
>
That did it (on fresh copy of cvs):
regression=# explain analyze select
concat_ws('~','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
QUERY PLAN
----------------------------------------------------------------------------------
Result (cost=0.00..0.11 rows=1 width=0) (actual time=2.37..2.37
rows=1 loops=1)
Total runtime: 2.66 msec
(2 rows)
Thanks Tom!
Joe