From ec8f0e82ef63927e48615b2684258eb8ce84c599 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 10 Feb 2003 17:06:23 +0000 Subject: [PATCH] Add code to show join rule (for outer and IN joins) in join type name. --- src/backend/commands/explain.c | 68 ++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index a816036693..8bc39884b4 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";