Why does to_json take "anyelement" rather than "any"? - Mailing list pgsql-hackers

From Nikhil Benesch
Subject Why does to_json take "anyelement" rather than "any"?
Date
Msg-id 5b332d27-d41e-733a-c1c8-9cebea31d585@gmail.com
Whole thread Raw
Responses Re: Why does to_json take "anyelement" rather than "any"?  (Mohamed Wael Khobalatte <mkhobalatte@grubhub.com>)
List pgsql-hackers
to_json is declared as taking "anyelement" as input, which means
you can't pass it something of unknown type:

     postgres=# SELECT to_json('foo');
     ERROR:  could not determine polymorphic type because input has type unknown

But this works fine with the very similar json_build_array function:

     postgres=# SELECT json_build_array('foo');
      json_build_array
     ------------------
      ["foo"]
     (1 row)

The difference is that json_build_array takes type "any" as input, while
to_json takes "anyelement" as input.

Is there some reason to_json couldn't be switched to take "any" as input?
Hacking this together seems to mostly just work:

     postgres=# CREATE FUNCTION my_to_json ("any") RETURNS json LANGUAGE 'internal' AS 'to_json';
     postgres=# SELECT my_to_json('foo');
      my_to_json
     ------------
      "foo"
     (1 row)

Is there something I'm missing?

Nikhil



pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Online checksums verification in the backend
Next
From: "David G. Johnston"
Date:
Subject: Re: PATCH: Batch/pipelining support for libpq