paul-rogers commented on a change in pull request #1862: DRILL-7385: Convert 
PCAP Format Plugin to EVF
URL: https://github.com/apache/drill/pull/1862#discussion_r331767234
 
 

 ##########
 File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/schema/Schema.java
 ##########
 @@ -78,4 +81,23 @@ public ColumnDto getColumnByIndex(int i) {
   public int getNumberOfColumns() {
     return columns.size();
   }
+
+  public TupleMetadata buildSchema(SchemaBuilder builder) {
+    for(ColumnDto column : columns) {
+      if(column.getColumnType() == PcapTypes.BOOLEAN) {
+        builder.addNullable(column.getColumnName(), TypeProtos.MinorType.BIT);
+      } else if(column.getColumnType() == PcapTypes.INTEGER) {
+        builder.addNullable(column.getColumnName(), TypeProtos.MinorType.INT);
+      } else if(column.getColumnType() == PcapTypes.STRING) {
+        builder.addNullable(column.getColumnName(), 
TypeProtos.MinorType.VARCHAR);
+      } else if(column.getColumnType() == PcapTypes.TIMESTAMP) {
+        builder.addNullable(column.getColumnName(), 
TypeProtos.MinorType.TIMESTAMP);
+      } else if(column.getColumnType() == PcapTypes.LONG) {
+        builder.addNullable(column.getColumnName(), 
TypeProtos.MinorType.BIGINT);
 
 Review comment:
   Nit: would be simpler to do something like the following:
   
   ```
     for (ColumnTdo column : columns) {
       builder.addNullable(column.getColumnName(), convertType(column));
     }
   ...
   MinorType convertType(ColumnDto column) {
     switch (column.getColumnType()) {
       case PcapTypes.BOOLEAN:
         return MinorType.BIT;
      ...
   ```
   
   The above requires that we handle the case of a type that is not in the 
switch: maybe throw an exception or some such.
   
   Also, if the types are integers and configuous (which they are of PcapTypes 
is an enum), then you can create a mapping table:
   
   ```
     MinorType typeMap[] = new int[PcapTypes.getSize()];
     typeMap[PcapTypes.BOOLEAN.getOrdinal()] = MinorType.BIT;
     ...
   ```
   
   Then:
   
   ```
     for (ColumnTdo column : columns) {
       builder.addNullable(column.getColumnName(), 
typeMap[column.getColumType().getOrdinal());
   ```
   
   The mapping table is the fastest solution. But, this is not super critical 
in a once-per-file activity.

----------------------------------------------------------------
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:
[email protected]


With regards,
Apache Git Services

Reply via email to