What's wrong with this function - "returns setof" - Mailing list pgsql-sql

From alla@sergey.com (Alla)
Subject What's wrong with this function - "returns setof"
Date
Msg-id 9275d56e.0201291114.57d7b9a@posting.google.com
Whole thread Raw
Responses Re: What's wrong with this function - "returns setof"  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
I can't figure out what's wrong with the syntax of this select
statments.

I have a view: create view test_view as select field1, field2                                        from table1,
table2                                      where ...;
 

And 3 functions:

create function test_func(varchar)
returns setof test_view '  select *  from test_view  where (complicated where clause);
' language 'sql';

create function get_field1(test_view)
returns vachar as '   select $1.field1;
' language 'sql';

create function get_field2(test_view)
returns numeric as '   select $1.field2;
' language 'sql';

I am trying to execute all of this as follows:

select get_field1(results.a), get_field2(results.b)
from (select test_func('aaa') as p) as resutls;

I am getting the following error:
ERROR:  No such attribute or function 'get_field1'

But when I do it this way:
select field1(test_func('aaa')), field2(test_func('aaa'));

it works just fine.


The reason I am trying to do it the first way is that if I do it the
second way, function test_funs executes as many times as many columns
I need to select. Since I am using it for big reports it's a HUGE
performance problem. If I do it the second way, I execute test_func
only once and then use result set to get all the columns I need

Please help me out

Thanks in advance


pgsql-sql by date:

Previous
From: CoL
Date:
Subject: Re: get array data with range
Next
From: "\"Allan Engelhardt <\\"\\"\\\"Make me valid\\\"\""
Date:
Subject: Re: export/save meta data