> On Apr 23, 2017, at 11:34 , Guyren Howe <guy...@gmail.com> wrote: > > I’m trying to write a function that manipulates whole rows. It returns the > same type as the table it is being applied to, but when I select the function > on the rows, I get a single column of row type, rather than separate columns. > > My function looks like: > > CREATE OR REPLACE FUNCTION reporting.formatted_cust_by_state_bold(c > reporting_helpers.customers_by_state_ranked) > RETURNS reporting_helpers.customers_by_state_ranked > LANGUAGE plv8 > STABLE STRICT COST 1 > AS $function$ > if (c.rank == 1) { > c['_meta'] = c['meta'] || {} > c['_meta']['raw'] = c['_meta']['raw'] || {} > c['_meta']['raw']['spent'] = c['_meta']['raw']['spent'] || {} > c['_meta']['raw']['spent'] = "<b>" + c.spent + "</b>" > } > return c > $function$ > > I do this: > > SELECT formatted_cust_by_state_bold(c) FROM customers_by_state_ranked c > > How do I get the results as a full table?
And, of course, one always solves these things as soon as we ask for help. SELECT (formatted_cust_by_state_bold(c)).* FROM reporting_helpers.customers_by_state_ranked c is the answer.