docs: @Override
      public AbstractExpression processTVE(TupleValueExpression tve, String columnName) {
          if (m_origSubqueryScan == null) {
              tve.resolveForTable(m_table);
              return tve;
          }
  
          // Example:
          // SELECT TA1.CA CA1 FROM (SELECT T.C CA FROM T TA) TA1;
          // gets simplified into
          // SELECT TA1.C CA1 FROM T TA1;
          // The TA1(TA1).(CA)CA1 TVE needs to be adjusted to be T(TA1).C(CA)
          // since the original SELECT T.C CA FROM T TA subquery was optimized out.
          // Table name TA1 is replaced with the original table name T
          // Column name CA is replaced with the original column name C
          // Expression differentiator to be replaced with the differentiator
          // from the original column (T.C)
          Integer columnIndex = m_origSubqueryScan.getColumnIndex(columnName,
                  tve.getDifferentiator());
          if (columnIndex == null) {
              throw new PlanningErrorException("Column <"
                                                  + columnName
                                                  + "> not found. Please update your query.",
                                               1);
          }
          SchemaColumn originalSchemaColumn = m_origSubqueryScan.getSchemaColumn(columnIndex);
          assert(originalSchemaColumn != null);
          String origColumnName = originalSchemaColumn.getColumnName();
          // Get the original column expression and adjust its aliases
          AbstractExpression colExpr = originalSchemaColumn.getExpression();
          List<TupleValueExpression> tves = ExpressionUtil.getTupleValueExpressions(colExpr);
          for (TupleValueExpression subqTve : tves) {
              if (subqTve == colExpr) {
                  subqTve.setTableName(getTableName());
                  subqTve.setColumnName(origColumnName);
                  subqTve.setColumnAlias(tve.getColumnAlias());
              }
              subqTve.setTableAlias(tve.getTableAlias());
              subqTve.resolveForTable(m_table);
          }
          return colExpr;
      }