*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.7 1996/12/29 19:30:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.8 1997/01/16 14:55:58 momjian Exp $
*
*-------------------------------------------------------------------------
*/
*
*/
void
-ExplainQuery(Query *query, List *options, CommandDest dest)
+ExplainQuery(Query *query, bool verbose, CommandDest dest)
{
char *s = NULL, *s2;
Plan *plan;
es = (ExplainState*)malloc(sizeof(ExplainState));
memset(es, 0, sizeof(ExplainState));
- /* parse options */
- while (options) {
- char *ostr = strVal(lfirst(options));
- if (!strcasecmp(ostr, "cost"))
- es->printCost = true;
- else if (!strcasecmp(ostr, "plan"))
- es->printNodes = true;
- else if (!strcasecmp(ostr, "full")) {
- es->printCost = true;
- es->printNodes = true;
- }
- else
- elog(WARN, "Unknown EXPLAIN option: %s", ostr);
-
- options = lnext(options);
- }
+ es->printCost = true; /* default */
- if (!es->printCost && !es->printNodes)
- es->printCost = true; /* default */
+ if (verbose)
+ es->printNodes = true;
es->rtable = query->rtable;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.24 1997/01/13 03:44:18 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.25 1997/01/16 14:56:05 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
sort_clause, sortby_list, index_params,
name_list, from_clause, from_list, opt_array_bounds, nest_array_bounds,
expr_list, attrs, res_target_list, res_target_list2,
- def_list, opt_indirection, group_clause, groupby_list, explain_options
+ def_list, opt_indirection, group_clause, groupby_list
%type <boolean> opt_inh_star, opt_binary, opt_instead, opt_with_copy,
index_opt_unique, opt_verbose
*
*****************************************************************************/
-ExplainStmt: EXPLAIN explain_options OptimizableStmt
+ExplainStmt: EXPLAIN opt_verbose OptimizableStmt
{
ExplainStmt *n = makeNode(ExplainStmt);
+ n->verbose = $2;
n->query = (Query*)$3;
- n->options = $2;
$$ = (Node *)n;
}
;
-explain_options: WITH name_list
- { $$ = $2; }
- | /*EMPTY*/
- { $$ = NIL; }
- ;
-
/*****************************************************************************
* *
* Optimizable Stmts: *
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.10 1997/01/13 03:44:38 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.11 1997/01/16 14:56:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
commandTag = "EXPLAIN";
CHECK_IF_ABORTED();
- ExplainQuery(stmt->query, stmt->options, dest);
+ ExplainQuery(stmt->query, stmt->verbose, dest);
}
break;
*
* Copyright (c) 1994-5, Regents of the University of California
*
- * $Id: explain.h,v 1.1 1996/08/28 07:21:47 scrappy Exp $
+ * $Id: explain.h,v 1.2 1997/01/16 14:56:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef EXPLAIN_H
#define EXPLAIN_H
-extern void ExplainQuery(Query *query, List *options, CommandDest dest);
+extern void ExplainQuery(Query *query, bool verbose, CommandDest dest);
#endif /* EXPLAIN_H*/
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: parsenodes.h,v 1.9 1997/01/13 03:45:02 momjian Exp $
+ * $Id: parsenodes.h,v 1.10 1997/01/16 14:56:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
typedef struct ExplainStmt {
NodeTag type;
Query *query; /* the query */
- List *options;
+ bool verbose; /* print plan info */
} ExplainStmt;
.\" This is -*-nroff-*-
.\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/explain.l,v 1.3 1996/12/29 19:31:16 momjian Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/explain.l,v 1.4 1997/01/16 14:56:59 momjian Exp $
.TH EXPLAIN SQL 11/05/95 PostgreSQL PostgreSQL
.SH NAME
explain \(em explains statement execution details
.SH SYNOPSIS
.nf
-\fBexplain [with\fP \fB{cost|plan|full}]\fR query
+\fBexplain [verbose]\fR query
.fi
.SH DESCRIPTION
This command outputs details about the supplied query. The default
-output is the computed query cost. \f2plan\f1 displays the full query
-plan. \f2full\f1 display both query plan and query cost.
+output is the computed query cost. \f2verbose\f1 displays the full query
+plan and cost.
.PP
The query cost and plan can be affected by running vacuum.