@Override
 public void explain(
     SchemaContext sc,
     ConnectionValuesMap cvm,
     ExecutionPlan containing,
     List<ResultRow> rows,
     ExplainOptions opts) {
   ResultRow rr = new ResultRow();
   ConnectionValues cv = cvm.getValues(containing);
   addExplainColumns(sc, cv, rr, opts);
   // add any nulls that are needed
   int width =
       RootExecutionPlan.basicExplainColumns.length
           + (opts.isStatistics() ? StepExecutionStatistics.statsExplainColumns.length : 0);
   int diff = width - 1 - rr.getRow().size();
   for (int i = 0; i < diff; i++) rr.addResultColumn(null, true);
   rr.addResultColumn(getSQL(sc, cvm, containing, null), false);
   rows.add(rr);
 }