public TypeInfo getTypeInfo(int columnNum) throws HiveException {
    if (initialTypeInfos == null) {
      throw new HiveException("initialTypeInfos array is null in contextName " + contextName);
    }
    final int initialSize = initialTypeInfos.size();
    if (columnNum < initialSize) {
      return initialTypeInfos.get(columnNum);
    } else {
      String typeName = ocm.getScratchTypeName(columnNum);

      // Replace unparsable synonyms.
      typeName = VectorizationContext.mapTypeNameSynonyms(typeName);

      // Make CHAR and VARCHAR type info parsable.
      if (typeName.equals(serdeConstants.CHAR_TYPE_NAME)) {
        typeName = "char(" + HiveChar.MAX_CHAR_LENGTH + ")";
      } else if (typeName.equals(serdeConstants.VARCHAR_TYPE_NAME)) {
        typeName = "varchar(" + HiveVarchar.MAX_VARCHAR_LENGTH + ")";
      }

      return TypeInfoUtils.getTypeInfoFromTypeString(typeName);
    }
  }
Context class for vectorization execution.
Main role is to map column names to column indices and serves as a
factory class for building vectorized expressions out of descriptors.
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java