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

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

vvysotskyi commented on pull request #1844: DRILL-7326: Support repeated lists 
for CTAS parquet format
URL: https://github.com/apache/drill/pull/1844#discussion_r315675367
 
 

 ##########
 File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetRecordWriter.java
 ##########
 @@ -302,6 +308,40 @@ private Type getType(MaterializedField field) {
     }
   }
 
+  /**
+   * Adds element type to {@code listBuilder} based on Drill's
+   * {@code elementField}.
+   *
+   * @param listBuilder list schema builder
+   * @param elementField Drill's type of list elements
+   */
+  private void addElementType(ListBuilder<GroupType> listBuilder, 
MaterializedField elementField) {
+    if (elementField.getDataMode() == DataMode.REPEATED) {
+      MaterializedField child2 = elementField.getChildren().iterator().next();
+      ListBuilder<GroupType> inner = 
org.apache.parquet.schema.Types.requiredList();
+      addElementType(inner, child2);
+      listBuilder.setElementType(inner.named("element"));
+    } else {
+      Type element = getType(elementField);
+      // element may have internal name '$data$',
+      // rename it to 'element' according to Parquet list schema
+      if (element.isPrimitive()) {
 
 Review comment:
   Is it possible when the `element` is not primitive? Or if we currently don't 
assume such cases, should we throw an exception for non-primitive elements?
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Support repeated lists for CTAS parquet format
> ----------------------------------------------
>
>                 Key: DRILL-7326
>                 URL: https://issues.apache.org/jira/browse/DRILL-7326
>             Project: Apache Drill
>          Issue Type: New Feature
>    Affects Versions: 1.16.0
>            Reporter: Pavel Semenov
>            Assignee: Igor Guzenko
>            Priority: Major
>
> *STEPS TO REPRODUCE*
>  # Create json file with which has double nesting array as a value e.g.
> {code:java}"stringx2":[["asd","фывфы","asg"],["as","acz","gte"],["as","tdf","dsd"]]
>  {code}
>  # Use CTAS to create table in drill with created json file
>  # Observe the result
> *EXPECTED RESULT*
>  Table is created
> *ACTUAL RESULT*
>  UnsupportedOperationException appears on attempting to create the table
> *ADDITIONAL INFO*
>  It is possible to create table with with *single* nested array
>  Error log
> {code:java}
> Error: SYSTEM ERROR: UnsupportedOperationException: Unsupported type LIST
> Fragment 0:0
> Please, refer to logs for more information.
> [Error Id: c48c6154-30a1-49c8-ac3b-7c2f898a7f4e on node1.cluster.com:31010]
> (java.lang.UnsupportedOperationException) Unsupported type LIST
>  org.apache.drill.exec.store.parquet.ParquetRecordWriter.getType():295
>  org.apache.drill.exec.store.parquet.ParquetRecordWriter.newSchema():226
>  org.apache.drill.exec.store.parquet.ParquetRecordWriter.updateSchema():211
>  org.apache.drill.exec.physical.impl.WriterRecordBatch.setupNewSchema():160
>  org.apache.drill.exec.physical.impl.WriterRecordBatch.innerNext():108
>  org.apache.drill.exec.record.AbstractRecordBatch.next():186
>  org.apache.drill.exec.record.AbstractRecordBatch.next():126
>  org.apache.drill.exec.record.AbstractRecordBatch.next():116
>  org.apache.drill.exec.record.AbstractUnaryRecordBatch.innerNext():63
>  
> org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext():141
>  org.apache.drill.exec.record.AbstractRecordBatch.next():186
>  org.apache.drill.exec.physical.impl.BaseRootExec.next():104
>  org.apache.drill.exec.physical.impl.ScreenCreator$ScreenRoot.innerNext():83
>  org.apache.drill.exec.physical.impl.BaseRootExec.next():94
>  org.apache.drill.exec.work.fragment.FragmentExecutor$1.run():296
>  org.apache.drill.exec.work.fragment.FragmentExecutor$1.run():283
>  java.security.AccessController.doPrivileged():-2
>  javax.security.auth.Subject.doAs():422
>  org.apache.hadoop.security.UserGroupInformation.doAs():1669
>  org.apache.drill.exec.work.fragment.FragmentExecutor.run():283
>  org.apache.drill.common.SelfCleaningRunnable.run():38
>  java.util.concurrent.ThreadPoolExecutor.runWorker():1149
>  java.util.concurrent.ThreadPoolExecutor$Worker.run():624
>  java.lang.Thread.run():748 (state=,code=0)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to