private void validateAndVectorizeMapOperators(TableScanOperator tableScanOperator,
        boolean isTez, VectorTaskColumnInfo vectorTaskColumnInfo)
            throws VectorizerCannotVectorizeException {

      Operator<? extends OperatorDesc> dummyVectorOperator =
          validateAndVectorizeOperatorTree(tableScanOperator, false, isTez, vectorTaskColumnInfo);

      // Fixup parent and child relations.
      List<Operator<? extends OperatorDesc>> vectorChildren = dummyVectorOperator.getChildOperators();
      tableScanOperator.setChildOperators(vectorChildren);

      final int vectorChildCount = vectorChildren.size();
      for (int i = 0; i < vectorChildCount; i++) {

        Operator<? extends OperatorDesc> vectorChild = vectorChildren.get(i);

        // Replace any occurrence of dummyVectorOperator with our TableScanOperator.
        List<Operator<? extends OperatorDesc>> vectorChildParents = vectorChild.getParentOperators();
        final int vectorChildParentCount = vectorChildParents.size();
        for (int p = 0; p < vectorChildParentCount; p++) {
          Operator<? extends OperatorDesc> vectorChildParent = vectorChildParents.get(p);
          if (vectorChildParent == dummyVectorOperator) {
            vectorChildParents.set(p, tableScanOperator);
          }
        }
      }

      // And, finally, save the VectorizationContext.
      tableScanOperator.setTaskVectorizationContext(
          ((VectorizationOperator) dummyVectorOperator).getInputVectorizationContext());

      // Modify TableScanOperator in-place so it knows to operate vectorized.
      vectorizeTableScanOperatorInPlace(tableScanOperator, vectorTaskColumnInfo);
    }
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