aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/explain.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-02-10 17:06:23 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-02-10 17:06:23 +0000
commitec8f0e82ef63927e48615b2684258eb8ce84c599 (patch)
tree0f5babec5ac1c9eb1af3bc1c3aa042569fce5980 /src/backend/commands/explain.c
parentc5ba16a83c808837995ca4520ce04f06cab531a4 (diff)
downloadpostgresql-ec8f0e82ef63927e48615b2684258eb8ce84c599.tar.gz
postgresql-ec8f0e82ef63927e48615b2684258eb8ce84c599.zip
Add code to show join rule (for outer and IN joins) in join type name.
Diffstat (limited to 'src/backend/commands/explain.c')
-rw-r--r--src/backend/commands/explain.c68
1 files changed, 64 insertions, 4 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index a816036693a..8bc39884b43 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994-5, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.102 2003/02/09 06:56:26 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.103 2003/02/10 17:06:23 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -308,13 +308,73 @@ explain_outNode(StringInfo str,
pname = "Append";
break;
case T_NestLoop:
- pname = "Nested Loop";
+ switch (((NestLoop *) plan)->join.jointype)
+ {
+ case JOIN_INNER:
+ pname = "Nested Loop";
+ break;
+ case JOIN_LEFT:
+ pname = "Nested Loop Left Join";
+ break;
+ case JOIN_FULL:
+ pname = "Nested Loop Full Join";
+ break;
+ case JOIN_RIGHT:
+ pname = "Nested Loop Right Join";
+ break;
+ case JOIN_IN:
+ pname = "Nested Loop IN Join";
+ break;
+ default:
+ pname = "Nested Loop ??? Join";
+ break;
+ }
break;
case T_MergeJoin:
- pname = "Merge Join";
+ switch (((MergeJoin *) plan)->join.jointype)
+ {
+ case JOIN_INNER:
+ pname = "Merge Join";
+ break;
+ case JOIN_LEFT:
+ pname = "Merge Left Join";
+ break;
+ case JOIN_FULL:
+ pname = "Merge Full Join";
+ break;
+ case JOIN_RIGHT:
+ pname = "Merge Right Join";
+ break;
+ case JOIN_IN:
+ pname = "Merge IN Join";
+ break;
+ default:
+ pname = "Merge ??? Join";
+ break;
+ }
break;
case T_HashJoin:
- pname = "Hash Join";
+ switch (((HashJoin *) plan)->join.jointype)
+ {
+ case JOIN_INNER:
+ pname = "Hash Join";
+ break;
+ case JOIN_LEFT:
+ pname = "Hash Left Join";
+ break;
+ case JOIN_FULL:
+ pname = "Hash Full Join";
+ break;
+ case JOIN_RIGHT:
+ pname = "Hash Right Join";
+ break;
+ case JOIN_IN:
+ pname = "Hash IN Join";
+ break;
+ default:
+ pname = "Hash ??? Join";
+ break;
+ }
break;
case T_SeqScan:
pname = "Seq Scan";