[ 
https://issues.apache.org/jira/browse/CALCITE-6292?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alessandro Solimando updated CALCITE-6292:
------------------------------------------
    Component/s: arrow-adapter

> Support more Arrow type
> -----------------------
>
>                 Key: CALCITE-6292
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6292
>             Project: Calcite
>          Issue Type: Sub-task
>          Components: arrow-adapter
>            Reporter: hongyu guo
>            Priority: Major
>
> All arrow type:
> {code:java}
> public static enum ArrowTypeID {
>     Null(Type.Null),
>     Struct(Type.Struct_),
>     List(Type.List),
>     LargeList(Type.LargeList),
>     FixedSizeList(Type.FixedSizeList),
>     Union(Type.Union),
>     Map(Type.Map),
>     Int(Type.Int),
>     FloatingPoint(Type.FloatingPoint),
>     Utf8(Type.Utf8),
>     LargeUtf8(Type.LargeUtf8),
>     Binary(Type.Binary),
>     LargeBinary(Type.LargeBinary),
>     FixedSizeBinary(Type.FixedSizeBinary),
>     Bool(Type.Bool),
>     Decimal(Type.Decimal),
>     Date(Type.Date),
>     Time(Type.Time),
>     Timestamp(Type.Timestamp),
>     Interval(Type.Interval),
>     Duration(Type.Duration),
>     NONE(Type.NONE);
> }
> {code}
> we support now:
> {code:java}
>   public static ArrowFieldType of(ArrowType arrowType) {
>     switch (arrowType.getTypeID()) {
>     case Int:
>       int bitWidth = ((ArrowType.Int) arrowType).getBitWidth();
>       switch (bitWidth) {
>       case 64:
>         return LONG;
>       case 32:
>         return INT;
>       case 16:
>         return SHORT;
>       case 8:
>         return BYTE;
>       default:
>         throw new IllegalArgumentException("Unsupported Int bit width: " + 
> bitWidth);
>       }
>     case Bool:
>       return BOOLEAN;
>     case Utf8:
>       return STRING;
>     case FloatingPoint:
>       FloatingPointPrecision precision = ((ArrowType.FloatingPoint) 
> arrowType).getPrecision();
>       switch (precision) {
>       case SINGLE:
>         return FLOAT;
>       case DOUBLE:
>         return DOUBLE;
>       default:
>         throw new IllegalArgumentException("Unsupported Floating point 
> precision: " + precision);
>       }
>     case Date:
>       return DATE;
>     case Decimal:
>       return DECIMAL;
>     default:
>       throw new IllegalArgumentException("Unsupported type: " + arrowType);
>     }
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to