diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 24b2303ee9dbf17146615e194e02e49da13b4457..0a1a45b4dbf7348875c6fd9de387cd97bea0e259 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.111 1999/05/09 23:31:47 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.112 1999/05/11 09:06:31 wieck Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -103,11 +103,15 @@ #define DebugPrintQuery pg_options[TRACE_QUERY] #define DebugPrintPlan pg_options[TRACE_PLAN] #define DebugPrintParse pg_options[TRACE_PARSE] +#define DebugPrintRewrittenParsetree \ + pg_options[TRACE_REWRITTEN] +#define DebugPPrintPlan pg_options[TRACE_PRETTY_PLAN] +#define DebugPPrintParse pg_options[TRACE_PRETTY_PARSE] +#define DebugPPrintRewrittenParsetree \ + pg_options[TRACE_PRETTY_REWRITTEN] #define ShowParserStats pg_options[TRACE_PARSERSTATS] #define ShowPlannerStats pg_options[TRACE_PLANNERSTATS] #define ShowExecutorStats pg_options[TRACE_EXECUTORSTATS] -#define DebugPrintRewrittenParsetree \ - pg_options[TRACE_REWRITTEN] #ifdef LOCK_MGR_DEBUG #define LockDebug pg_options[TRACE_LOCKS] #endif @@ -474,10 +478,15 @@ pg_parse_and_plan(char *query_string, /* string to execute */ { querytree = querytree_list->qtrees[i]; - if (DebugPrintParse) + if (DebugPrintParse || DebugPPrintParse) { - TPRINTF(TRACE_PARSE, "parser outputs:"); - nodeDisplay(querytree); + if (DebugPPrintParse) { + TPRINTF(TRACE_PRETTY_PARSE, "parser outputs:"); + nodeDisplay(querytree); + } else { + TPRINTF(TRACE_PARSE, "parser outputs:"); + printf("\n%s\n\n", nodeToString(querytree)); + } } /* don't rewrite utilites, just dump 'em into new_list */ @@ -545,14 +554,23 @@ pg_parse_and_plan(char *query_string, /* string to execute */ } } - if (DebugPrintRewrittenParsetree) + if (DebugPrintRewrittenParsetree || DebugPPrintRewrittenParsetree) { - TPRINTF(TRACE_REWRITTEN, "after rewriting:"); + if (DebugPPrintRewrittenParsetree) { + TPRINTF(TRACE_PRETTY_REWRITTEN, "after rewriting:"); - for (i = 0; i < querytree_list->len; i++) - { - nodeDisplay(querytree_list->qtrees[i]); - printf("\n"); + for (i = 0; i < querytree_list->len; i++) + { + nodeDisplay(querytree_list->qtrees[i]); + printf("\n"); + } + } else { + TPRINTF(TRACE_REWRITTEN, "after rewriting:"); + + for (i = 0; i < querytree_list->len; i++) + { + printf("\n%s\n\n", nodeToString(querytree_list->qtrees[i])); + } } } @@ -608,10 +626,15 @@ pg_parse_and_plan(char *query_string, /* string to execute */ * also for queries in functions. DZ - 27-8-1996 * ---------------- */ - if (DebugPrintPlan) + if (DebugPrintPlan || DebugPPrintPlan) { - TPRINTF(TRACE_PLAN, "plan:"); - nodeDisplay(plan); + if (DebugPPrintPlan) { + TPRINTF(TRACE_PRETTY_PLAN, "plan:"); + nodeDisplay(plan); + } else { + TPRINTF(TRACE_PLAN, "plan:"); + printf("\n%s\n\n", nodeToString(plan)); + } } #endif } @@ -747,10 +770,15 @@ pg_exec_query_dest(char *query_string, /* string to execute */ * print plan if debugging * ---------------- */ - if (DebugPrintPlan) + if (DebugPrintPlan || DebugPPrintPlan) { - TPRINTF(TRACE_PLAN, "plan:"); - nodeDisplay(plan); + if (DebugPPrintPlan) { + TPRINTF(TRACE_PRETTY_PLAN, "plan:"); + nodeDisplay(plan); + } else { + TPRINTF(TRACE_PLAN, "plan:"); + printf("\n%s\n\n", nodeToString(plan)); + } } #endif @@ -1047,6 +1075,12 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[]) DebugPrintPlan = true; DebugPrintRewrittenParsetree = true; } + if (DebugLvl >= 5) + { + DebugPPrintParse = true; + DebugPPrintPlan = true; + DebugPPrintRewrittenParsetree = true; + } break; case 'E': @@ -1510,7 +1544,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[]) if (!IsUnderPostmaster) { puts("\nPOSTGRES backend interactive interface "); - puts("$Revision: 1.111 $ $Date: 1999/05/09 23:31:47 $\n"); + puts("$Revision: 1.112 $ $Date: 1999/05/11 09:06:31 $\n"); } /* ---------------- diff --git a/src/backend/utils/misc/trace.c b/src/backend/utils/misc/trace.c index 51070ba7caf87393a1ce0752dbe6b90b9efb13d8..1f96065c9efa0d34933ca750fe859d386bf04f6f 100644 --- a/src/backend/utils/misc/trace.c +++ b/src/backend/utils/misc/trace.c @@ -53,6 +53,9 @@ static char *opt_names[] = { "plan", "parse", "rewritten", + "pretty_plan", + "pretty_parse", + "pretty_rewritten", "parserstats", "plannerstats", "executorstats", diff --git a/src/include/utils/trace.h b/src/include/utils/trace.h index 52bc301a0a2e4eb501c6926b434c7450c7833878..4695e865aa7de3f595cb099eda8bb37ee2e40d5f 100644 --- a/src/include/utils/trace.h +++ b/src/include/utils/trace.h @@ -49,6 +49,9 @@ enum pg_option_enum TRACE_PLAN, TRACE_PARSE, TRACE_REWRITTEN, + TRACE_PRETTY_PLAN, /* indented multiline versions of trees */ + TRACE_PRETTY_PARSE, + TRACE_PRETTY_REWRITTEN, TRACE_PARSERSTATS, TRACE_PLANNERSTATS, TRACE_EXECUTORSTATS,