public static int getIndexPosition()

in paimon-format/src/main/java/org/apache/orc/impl/RecordReaderUtils.java [125:178]


    public static int getIndexPosition(
            OrcProto.ColumnEncoding.Kind columnEncoding,
            TypeDescription.Category columnType,
            OrcProto.Stream.Kind streamType,
            boolean isCompressed,
            boolean hasNulls) {
        if (streamType == OrcProto.Stream.Kind.PRESENT) {
            return 0;
        }
        int compressionValue = isCompressed ? 1 : 0;
        int base = hasNulls ? (BITFIELD_POSITIONS + compressionValue) : 0;
        switch (columnType) {
            case BOOLEAN:
            case BYTE:
            case SHORT:
            case INT:
            case LONG:
            case FLOAT:
            case DOUBLE:
            case DATE:
            case STRUCT:
            case MAP:
            case LIST:
            case UNION:
                return base;
            case CHAR:
            case VARCHAR:
            case STRING:
                if (columnEncoding == OrcProto.ColumnEncoding.Kind.DICTIONARY
                        || columnEncoding == OrcProto.ColumnEncoding.Kind.DICTIONARY_V2) {
                    return base;
                } else {
                    if (streamType == OrcProto.Stream.Kind.DATA) {
                        return base;
                    } else {
                        return base + BYTE_STREAM_POSITIONS + compressionValue;
                    }
                }
            case BINARY:
            case DECIMAL:
                if (streamType == OrcProto.Stream.Kind.DATA) {
                    return base;
                }
                return base + BYTE_STREAM_POSITIONS + compressionValue;
            case TIMESTAMP:
            case TIMESTAMP_INSTANT:
                if (streamType == OrcProto.Stream.Kind.DATA) {
                    return base;
                }
                return base + RUN_LENGTH_INT_POSITIONS + compressionValue;
            default:
                throw new IllegalArgumentException("Unknown type " + columnType);
        }
    }