Use function to manipulate rows — how to get separate columns, rather than single row value

From: Guyren Howe <guyren(at)gmail(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Use function to manipulate rows — how to get separate columns, rather than single row value
Date: 2017-04-23 18:34:51
Message-ID: ABBF737B-A71F-48B9-81A9-2A0F8546D45A@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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?

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Guyren Howe 2017-04-23 18:42:27 Re: Use function to manipulate rows — how to get separate columns, rather than single row value
Previous Message Jeroen Jacobs 2017-04-23 17:55:40 file permission on ssl key