in vector/src/main/java/org/apache/arrow/vector/validate/ValidateVectorTypeVisitor.java [247:359]
public Void visit(BaseFixedWidthVector vector, Void value) {
if (vector instanceof TinyIntVector) {
validateVectorCommon(vector, ArrowType.Int.class);
validateIntVector(vector, 8, true);
} else if (vector instanceof SmallIntVector) {
validateVectorCommon(vector, ArrowType.Int.class);
validateIntVector(vector, 16, true);
} else if (vector instanceof IntVector) {
validateVectorCommon(vector, ArrowType.Int.class);
validateIntVector(vector, 32, true);
} else if (vector instanceof BigIntVector) {
validateVectorCommon(vector, ArrowType.Int.class);
validateIntVector(vector, 64, true);
} else if (vector instanceof UInt1Vector) {
validateVectorCommon(vector, ArrowType.Int.class);
validateIntVector(vector, 8, false);
} else if (vector instanceof UInt2Vector) {
validateVectorCommon(vector, ArrowType.Int.class);
validateIntVector(vector, 16, false);
} else if (vector instanceof UInt4Vector) {
validateVectorCommon(vector, ArrowType.Int.class);
validateIntVector(vector, 32, false);
} else if (vector instanceof UInt8Vector) {
validateVectorCommon(vector, ArrowType.Int.class);
validateIntVector(vector, 64, false);
} else if (vector instanceof BitVector) {
validateVectorCommon(vector, ArrowType.Bool.class);
} else if (vector instanceof DecimalVector || vector instanceof Decimal256Vector) {
validateVectorCommon(vector, ArrowType.Decimal.class);
validateDecimalVector(vector);
} else if (vector instanceof DateDayVector) {
validateVectorCommon(vector, ArrowType.Date.class);
validateDateVector(vector, DateUnit.DAY);
} else if (vector instanceof DateMilliVector) {
validateVectorCommon(vector, ArrowType.Date.class);
validateDateVector(vector, DateUnit.MILLISECOND);
} else if (vector instanceof DurationVector) {
validateVectorCommon(vector, ArrowType.Duration.class);
ArrowType.Duration arrowType = (ArrowType.Duration) vector.getField().getType();
validateOrThrow(
((DurationVector) vector).getUnit() == arrowType.getUnit(),
"Different duration time unit for vector and arrow type. Vector time unit %s, type time unit %s.",
((DurationVector) vector).getUnit(),
arrowType.getUnit());
} else if (vector instanceof Float4Vector) {
validateVectorCommon(vector, ArrowType.FloatingPoint.class);
validateFloatingPointVector(vector, FloatingPointPrecision.SINGLE);
} else if (vector instanceof Float8Vector) {
validateVectorCommon(vector, ArrowType.FloatingPoint.class);
validateFloatingPointVector(vector, FloatingPointPrecision.DOUBLE);
} else if (vector instanceof IntervalDayVector) {
validateVectorCommon(vector, ArrowType.Interval.class);
validateIntervalVector(vector, IntervalUnit.DAY_TIME);
} else if (vector instanceof IntervalMonthDayNanoVector) {
validateVectorCommon(vector, ArrowType.Interval.class);
validateIntervalVector(vector, IntervalUnit.MONTH_DAY_NANO);
} else if (vector instanceof IntervalYearVector) {
validateVectorCommon(vector, ArrowType.Interval.class);
validateIntervalVector(vector, IntervalUnit.YEAR_MONTH);
} else if (vector instanceof TimeMicroVector) {
validateVectorCommon(vector, ArrowType.Time.class);
validateTimeVector(vector, TimeUnit.MICROSECOND, 64);
} else if (vector instanceof TimeMilliVector) {
validateVectorCommon(vector, ArrowType.Time.class);
validateTimeVector(vector, TimeUnit.MILLISECOND, 32);
} else if (vector instanceof TimeNanoVector) {
validateVectorCommon(vector, ArrowType.Time.class);
validateTimeVector(vector, TimeUnit.NANOSECOND, 64);
} else if (vector instanceof TimeSecVector) {
validateVectorCommon(vector, ArrowType.Time.class);
validateTimeVector(vector, TimeUnit.SECOND, 32);
} else if (vector instanceof TimeStampMicroTZVector) {
validateVectorCommon(vector, ArrowType.Timestamp.class);
validateTimeStampVector(vector, TimeUnit.MICROSECOND, true);
} else if (vector instanceof TimeStampMicroVector) {
validateVectorCommon(vector, ArrowType.Timestamp.class);
validateTimeStampVector(vector, TimeUnit.MICROSECOND, false);
} else if (vector instanceof TimeStampMilliTZVector) {
validateVectorCommon(vector, ArrowType.Timestamp.class);
validateTimeStampVector(vector, TimeUnit.MILLISECOND, true);
} else if (vector instanceof TimeStampMilliVector) {
validateVectorCommon(vector, ArrowType.Timestamp.class);
validateTimeStampVector(vector, TimeUnit.MILLISECOND, false);
} else if (vector instanceof TimeStampNanoTZVector) {
validateVectorCommon(vector, ArrowType.Timestamp.class);
validateTimeStampVector(vector, TimeUnit.NANOSECOND, true);
} else if (vector instanceof TimeStampNanoVector) {
validateVectorCommon(vector, ArrowType.Timestamp.class);
validateTimeStampVector(vector, TimeUnit.NANOSECOND, false);
} else if (vector instanceof TimeStampSecTZVector) {
validateVectorCommon(vector, ArrowType.Timestamp.class);
validateTimeStampVector(vector, TimeUnit.SECOND, true);
} else if (vector instanceof TimeStampSecVector) {
validateVectorCommon(vector, ArrowType.Timestamp.class);
validateTimeStampVector(vector, TimeUnit.SECOND, false);
} else if (vector instanceof FixedSizeBinaryVector) {
validateVectorCommon(vector, ArrowType.FixedSizeBinary.class);
ArrowType.FixedSizeBinary arrowType = (ArrowType.FixedSizeBinary) vector.getField().getType();
validateOrThrow(
arrowType.getByteWidth() > 0,
"The byte width of a FixedSizeBinaryVector %s is not positive.",
arrowType.getByteWidth());
validateOrThrow(
arrowType.getByteWidth() == vector.getTypeWidth(),
"Type width mismatch for FixedSizeBinaryVector. Vector type width %s, arrow type width %s.",
vector.getTypeWidth(),
arrowType.getByteWidth());
} else {
throw new IllegalArgumentException(
"Unknown type for fixed width vector " + vector.getClass());
}
return null;
}