The auto_explain module appears to create invalid JSON (in all versions
since 9.0).  For example, with the settings

auto_explain.log_format = 'json'
auto_explain.log_min_duration = 0

the query

select * from pg_type;

produces this in the log:

LOG:  duration: 529.808 ms  plan:
        [
          "Query Text": "select * from pg_type;",
          "Plan": {
            "Node Type": "Seq Scan",
            "Relation Name": "pg_type",
            "Alias": "pg_type",
            "Startup Cost": 0.00,
            "Total Cost": 9.87,
            "Plan Rows": 287,
            "Plan Width": 611
          }
        ]

Note that at the top level, it uses the array delimiters [ ] for what is
actually an object (key/value).  Running this through a JSON parser will
fail.

By contrast, EXPLAIN (FORMAT JSON) on the command line produces:

            QUERY PLAN             
-----------------------------------
 [
   {
     "Plan": {
       "Node Type": "Seq Scan",
       "Relation Name": "pg_type",
       "Alias": "pg_type",
       "Startup Cost": 0.00,
       "Total Cost": 9.87,
       "Plan Rows": 287,
       "Plan Width": 611
     }
   }
 ]
(1 row)

So there is evidently something out of sync between what EXPLAIN and
what auto_explain produces.



-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to