* pgsp_explain.c: extracted code from explain.c for explain of triggers.
*
* Copyright (c) 2008-2020, PostgreSQL Global Development Group
- * Copyright (c) 2012-2020, NIPPON TELEGRAPH AND TELEPHONE CORPORATION
+ * Copyright (c) 2012-2021, NIPPON TELEGRAPH AND TELEPHONE CORPORATION
*
* IDENTIFICATION
* pg_store_plans/pgsp_explain.c
{
ResultRelInfo *rInfo;
bool show_relname;
- int numrels = queryDesc->estate->es_num_result_relations;
+#if PG_VERSION_NUM < 140000
+ int numrels = queryDesc->estate->es_num_result_relations;
+ int nr;
+#else
+ List *resultrels;
+ List *routerels;
+#endif
List *targrels = queryDesc->estate->es_trig_target_relations;
- int nr;
ListCell *l;
-
+
+#if PG_VERSION_NUM >= 140000
+ resultrels = queryDesc->estate->es_opened_result_relations;
+ routerels = queryDesc->estate->es_tuple_routing_result_relations;
+ targrels = queryDesc->estate->es_trig_target_relations;
+#endif
+
pgspExplainOpenGroup("Triggers", "Triggers", false, es);
-
+
+#if PG_VERSION_NUM < 140000
show_relname = (numrels > 1 || targrels != NIL);
rInfo = queryDesc->estate->es_result_relations;
for (nr = 0; nr < numrels; rInfo++, nr++)
+#else
+ show_relname = (list_length(resultrels) > 1 ||
+ routerels != NIL || targrels != NIL);
+ foreach(l, resultrels)
+ {
+ rInfo = (ResultRelInfo *) lfirst(l);
+#endif
report_triggers(rInfo, show_relname, es);
-
+#if PG_VERSION_NUM >= 140000
+ }
+
+ foreach(l, routerels)
+ {
+ rInfo = (ResultRelInfo *) lfirst(l);
+ report_triggers(rInfo, show_relname, es);
+ }
+#endif
+
foreach(l, targrels)
{
rInfo = (ResultRelInfo *) lfirst(l);
report_triggers(rInfo, show_relname, es);
}
-
+
pgspExplainCloseGroup("Triggers", "Triggers", false, es);
}
}
appendStringInfoString(es->str, ": ");
}
appendStringInfoChar(es->str, labeled ? '{' : '[');
-
+
GROUPING_STACK(es) = lcons_int(0, GROUPING_STACK(es));
es->indent++;
}