private void getTableScanOperatorSchemaInfo(TableScanOperator tableScanOperator,
        List<String> logicalColumnNameList, List<TypeInfo> logicalTypeInfoList,
        List<VirtualColumn> availableVirtualColumnList) {

      // Add all columns to make a vectorization context for
      // the TableScan operator.
      RowSchema rowSchema = tableScanOperator.getSchema();
      for (ColumnInfo c : rowSchema.getSignature()) {

        // Validation will later exclude vectorization of virtual columns usage if necessary.
        String columnName = c.getInternalName();

        // Turns out partition columns get marked as virtual in ColumnInfo, so we need to
        // check the VirtualColumn directly.
        VirtualColumn virtualColumn = VirtualColumn.VIRTUAL_COLUMN_NAME_MAP.get(columnName);
        if (virtualColumn != null) {

          // The planner gives us a subset virtual columns available for this table scan.
          //    AND
          // We only support some virtual columns in vectorization.
          //
          // So, create the intersection.  Note these are available vectorizable virtual columns.
          // Later we remember which virtual columns were *actually used* in the query so
          // just those will be included in the Map VectorizedRowBatchCtx that has the
          // information for creating the Map VectorizedRowBatch.
          //
          if (!vectorizableVirtualColumns.contains(virtualColumn)) {
            continue;
          }
          if (virtualColumn == VirtualColumn.ROWID && !isVectorizedRowIdentifierEnabled) {
            continue;
          }
          availableVirtualColumnList.add(virtualColumn);
        }

        // All columns: data, partition, and virtual are added.
        logicalColumnNameList.add(columnName);
        logicalTypeInfoList.add(TypeInfoUtils.getTypeInfoFromTypeString(c.getTypeName()));
      }
    }
Decimal types can be specified with different precision and scales e.g. decimal(10,5),
as opposed to other data types which can be represented by constant strings.
The regex matches only the {@link serdeConstants#DECIMAL_TYPE_NAME} prefix of the type.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java