[GENERAL] Text value within composite function result not quoted - Mailing list pgsql-general

From Guyren Howe
Subject [GENERAL] Text value within composite function result not quoted
Date
Msg-id A59CB1ED-A307-47ED-8D2E-4CE9BDF10B95@gmail.com
Whole thread Raw
Responses Re: [GENERAL] Text value within composite function result not quoted  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
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.

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: [GENERAL] Help: Installing 9.6 breaks local connections to 9.2 onCentos 6.9
Next
From: Tom Lane
Date:
Subject: Re: [GENERAL] Text value within composite function result not quoted