[ 
https://issues.apache.org/jira/browse/DRILL-4764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15715899#comment-15715899
 ] 

ASF GitHub Bot commented on DRILL-4764:
---------------------------------------

Github user parthchandra commented on a diff in the pull request:

    https://github.com/apache/drill/pull/673#discussion_r90694144
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/ParquetFixedWidthDictionaryReaders.java
 ---
    @@ -56,6 +58,31 @@ protected void readField(long recordsToReadInThisPass) {
         }
       }
     
    +  /**
    +   * This class uses for reading unsigned integer fields.
    +   */
    +  static class DictionaryUInt4Reader extends 
FixedByteAlignedReader<UInt4Vector> {
    +    DictionaryUInt4Reader(ParquetRecordReader parentReader, int 
allocateSize, ColumnDescriptor descriptor,
    +                        ColumnChunkMetaData columnChunkMetaData, boolean 
fixedLength, UInt4Vector v,
    +                        SchemaElement schemaElement) throws 
ExecutionSetupException {
    +      super(parentReader, allocateSize, descriptor, columnChunkMetaData, 
fixedLength, v, schemaElement);
    +    }
    +
    +    // this method is called by its superclass during a read loop
    +    @Override
    +    protected void readField(long recordsToReadInThisPass) {
    +
    +      recordsReadInThisIteration = Math.min(pageReader.currentPageCount
    +        - pageReader.valuesRead, recordsToReadInThisPass - 
valuesReadInCurrentPass);
    +
    +      if (usingDictionary) {
    +        for (int i = 0; i < recordsReadInThisIteration; i++){
    +          valueVec.getMutator().setSafe(valuesReadInCurrentPass + i, 
pageReader.dictionaryValueReader.readInteger());
    --- End diff --
    
    you probably need to set writer index just as you do in the uint8 case.


> Parquet file with INT_16, etc. logical types not supported by simple SELECT
> ---------------------------------------------------------------------------
>
>                 Key: DRILL-4764
>                 URL: https://issues.apache.org/jira/browse/DRILL-4764
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Execution - Data Types
>    Affects Versions: 1.6.0
>            Reporter: Paul Rogers
>            Assignee: Parth Chandra
>         Attachments: int_16.parquet, int_8.parquet, uint_16.parquet, 
> uint_32.parquet, uint_8.parquet
>
>
> Create a Parquet file with the following schema:
> message int16Data { required int32 index; required int32 value (INT_16); }
> Store it as int_16.parquet in the local file system. Query it with:
> SELECT * from `local`.`root`.`int_16.parquet`;
> The result, in the web UI, is this error:
> org.apache.drill.common.exceptions.UserRemoteException: SYSTEM ERROR: 
> UnsupportedOperationException: unsupported type: INT32 INT_16 Fragment 0:0 
> [Error Id: c63f66b4-e5a9-4a35-9ceb-546b74645dd4 on 172.30.1.28:31010]
> The INT_16 logical (or "original") type simply tells consumers of the file 
> that the data is actually a 16-bit signed int. Presumably, this should tell 
> Drill to use the SmallIntVector (or NullableSmallIntVector) class for 
> storage. Without supporting this annotation, even 16-bit integers must be 
> stored as 32-bits within Drill.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to