public static List<TypeInfo> removeVirtualColumnTypes(final List<String> columnNames,
      final List<TypeInfo> columnTypes) {
    if (columnNames.size() != columnTypes.size()) {
      throw new IllegalArgumentException("Number of column names in configuration " +
          columnNames.size() + " differs from column types " + columnTypes.size());
    }

    int i = 0;
    ListIterator<TypeInfo> it = columnTypes.listIterator();
    while(it.hasNext()) {
      it.next();
      if (VIRTUAL_COLUMN_NAMES.contains(columnNames.get(i))) {
        it.remove();
      }
      ++i;
    }
    return columnTypes;
  }
GROUPINGID is used with GROUP BY GROUPINGS SETS, ROLLUP and CUBE.
It composes a bit vector with the "0" and "1" values for every
column which is GROUP BY section. "1" is for a row in the result
set if that column has been aggregated in that row. Otherwise the
value is "0".  Returns the decimal representation of the bit vector.
ql/src/java/org/apache/hadoop/hive/ql/metadata/VirtualColumn.java