http://www.perlmonks.org?node_id=988024


in reply to Re: DIB:Pg returns select plan on execute
in thread DIB:Pg returns select plan on execute

A postgres session (or postgresql.conf file) accepts the parameter 'debug_print_plan' [1]: if set to 'on' (or 1) postgresql will write planner details to the logfile:

$ psql psql (9.3devel) Type "help" for help. testdb=# set debug_print_plan=1; SET testdb=# select 42; ?column? ---------- 42 (1 row) testdb=# \q 2012-10-30 23:57:03.757 CET 21837 LOG: plan: 2012-10-30 23:57:03.757 CET 21837 DETAIL: {PLANNEDSTMT :commandType 1 :queryId 0 :hasReturning false :hasModifyingCTE false :canSetTag true :transientPlan false :planTree {RESULT :startup_cost 0.00 :total_cost 0.01 :plan_rows 1 :plan_width 0 :targetlist ( {TARGETENTRY :expr {CONST :consttype 23 :consttypmod -1 :constcollid 0 :constlen 4 :constbyval true :constisnull false :location 7 :constvalue 4 [ 42 0 0 0 0 0 0 0 ] } :resno 1 :resname ?column? :ressortgroupref 0 :resorigtbl 0 :resorigcol 0 :resjunk false } ) :qual <> :lefttree <> :righttree <> :initPlan <> :extParam (b) :allParam (b) :resconstantqual <> } :rtable <> :resultRelations <> :utilityStmt <> :subplans <> :rewindPlanIDs (b) :rowMarks <> :relationOids <> :invalItems <> :nParamExec 0 } 2012-10-30 23:57:03.757 CET 21837 STATEMENT: select 42;

This is all written to the logfile so to me it seems not very likely the case for the OP. He (or some SQL-generator) probably just forgot to take an 'EXPLAIN'-prefix from an SQL statement.

[1] runtime-config-logging.html (postgres manual)

update (2012.10.30): show use in session setting (not postgresql.conf setting).