In current 9.3, I see:
$ select p.proname, p.provolatile from pg_proc p join pg_namespace n on p.pronamespace = n.oid where n.nspname =
'pg_catalog'and p.proname ~ 'json'; proname | provolatile
---------------------------+-------------json_in | sjson_out | ijson_recv
| sjson_send | sarray_to_json | sarray_to_json | srow_to_json
|srow_to_json | sjson_agg_transfn | ijson_agg_finalfn | ijson_agg |
ito_json | sjson_object_field | sjson_object_field_text | sjson_array_element |
sjson_array_element_text | sjson_extract_path | sjson_extract_path_op | sjson_extract_path_text |
sjson_extract_path_text_op| sjson_array_elements | sjson_array_length | sjson_object_keys |
sjson_each | sjson_each_text | sjson_populate_record | sjson_populate_recordset | s
(27 rows)
Is there any particular reason extract functions
(object_field/array_element/...) can't be immutable?
I can't readily imagine a situation where output of these functions would
change for different queries.
Best regards,
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/