Define a couple of types:

CREATE TYPE request_in AS
(
        path text[],
        args jsonb,
        server text,
        port smallint,
        headers jsonb,
        body bytea,
        type_requested text[]
);


CREATE TYPE request_out AS
(
        status smallint,
        headers jsonb,
        body text
);

and a function:

CREATE OR REPLACE FUNCTION request(
        req request_in)
    RETURNS "request_out"
    LANGUAGE 'plv8'
    COST 100.0
    VOLATILE 
AS $function$
return {'status': 200, 'headers': {}, 'body': "<body>Works!</body>"}
$function$;

call the function:

SELECT request(
        (
                '{}',
                '{}'::jsonb,
                '',
                8080,
                '{}'::jsonb,
                ''::bytea,
                '{}')::request_in
)

get this result:

(200,{},<body>Works!</body>)

This is the textual representation of the result I get in psql and Ruby. Note 
that the textual final value is not quoted.

I imagine I can work out a way to deal with this, but this is not the most 
felicitous way of representing a text value that I can imagine.

Note that if I add a single space after “Works!”, I get quotes around the 
string.

This is 9.6.2 on MacOS.

Reply via email to