private FieldWriter makeFieldWriter()

in athena-federation-sdk/src/main/java/com/amazonaws/athena/connector/lambda/data/writers/GeneratedRowWriter.java [138:183]


    private FieldWriter makeFieldWriter(FieldVector vector)
    {
        Field field = vector.getField();
        String fieldName = field.getName();
        Types.MinorType fieldType = Types.getMinorTypeForArrowType(field.getType());
        Extractor extractor = extractors.get(fieldName);
        ConstraintProjector constraint = constraints.get(fieldName);
        FieldWriterFactory factory = fieldWriterFactories.get(fieldName);

        if (factory != null) {
            return factory.create(vector, extractor, constraint);
        }

        if (extractor == null) {
            throw new IllegalStateException("Missing extractor for field[" + fieldName + "]");
        }

        switch (fieldType) {
            case INT:
                return new IntFieldWriter((IntExtractor) extractor, (IntVector) vector, constraint);
            case BIGINT:
                return new BigIntFieldWriter((BigIntExtractor) extractor, (BigIntVector) vector, constraint);
            case DATEMILLI:
                return new DateMilliFieldWriter((DateMilliExtractor) extractor, (DateMilliVector) vector, constraint);
            case DATEDAY:
                return new DateDayFieldWriter((DateDayExtractor) extractor, (DateDayVector) vector, constraint);
            case TINYINT:
                return new TinyIntFieldWriter((TinyIntExtractor) extractor, (TinyIntVector) vector, constraint);
            case SMALLINT:
                return new SmallIntFieldWriter((SmallIntExtractor) extractor, (SmallIntVector) vector, constraint);
            case FLOAT4:
                return new Float4FieldWriter((Float4Extractor) extractor, (Float4Vector) vector, constraint);
            case FLOAT8:
                return new Float8FieldWriter((Float8Extractor) extractor, (Float8Vector) vector, constraint);
            case DECIMAL:
                return new DecimalFieldWriter((DecimalExtractor) extractor, (DecimalVector) vector, constraint);
            case BIT:
                return new BitFieldWriter((BitExtractor) extractor, (BitVector) vector, constraint);
            case VARCHAR:
                return new VarCharFieldWriter((VarCharExtractor) extractor, (VarCharVector) vector, constraint);
            case VARBINARY:
                return new VarBinaryFieldWriter((VarBinaryExtractor) extractor, (VarBinaryVector) vector, constraint);
            default:
                throw new RuntimeException(fieldType + " is not supported");
        }
    }