Chun Chang created DRILL-420:
--------------------------------

             Summary: float literal is interpreted as GigInt
                 Key: DRILL-420
                 URL: https://issues.apache.org/jira/browse/DRILL-420
             Project: Apache Drill
          Issue Type: Bug
    Affects Versions: 1.0.0-milestone-2
            Reporter: Chun Chang


>From sqlline, issue the following:
0: jdbc:drill:> select 1.1+2.6 from `customer.json` limit 1;
+------------+
|   EXPR$0   |
+------------+
| 3          |
+------------+
Notice the result is 3 instead of 3.7.

sqlline log shows we are taking in the value as BigInt:
11:42:05.223 [Client-1] DEBUG o.a.d.e.rpc.user.QueryResultHandler - Received 
QueryId part1: -4656127306686443884
part2: -8283317532111349525
 succesfully.  Adding listener 
org.apache.drill.jdbc.DrillResultSet$Listener@5cd38dd
11:42:05.915 [Client-1] DEBUG org.apache.drill.jdbc.DrillResultSet - Result 
arrived QueryResultBatch [header=query_id {
  part1: -4656127306686443884
  part2: -8283317532111349525
}
is_last_chunk: false
row_count: 1
def {
  field {
    def {
      name {
        type: NAME
        name: "EXPR$0"
      }
      major_type {
        minor_type: BIGINT
        mode: REQUIRED
      }
    }
    value_count: 1
    buffer_length: 8
  }
  record_count: 1
  is_selection_vector_2: false
}
, data=SlicedByteBuf(ridx: 0, widx: 8, cap: 8/8, unwrapped: AccountingByteBuf 
[Inner buffer=PooledUnsafeDirectByteBufL(ridx: 76, widx: 76, cap: 76), 
size=76])]
11:42:05.917 [Client-1] DEBUG org.apache.drill.jdbc.DrillResultSet - Result 
arrived QueryResultBatch [header=query_id {
  part1: -4656127306686443884
  part2: -8283317532111349525
}
is_last_chunk: true
row_count: 0
def {
}
, data=null]

drillbit log confirms that:
11:42:05.226 [WorkManager Event Thread] DEBUG 
o.apache.drill.exec.work.WorkManager - Starting pending task 
org.apache.drill.exec.work.foreman.Foreman@4c097753
11:42:05.238 [WorkManager-3] DEBUG o.a.d.e.planner.logical.DrillOptiq - RexCall 
+(1.1, 2.6), {}
11:42:05.238 [WorkManager-3] DEBUG o.a.d.e.planner.logical.DrillOptiq - Binary
11:42:05.242 [WorkManager-3] DEBUG o.a.drill.exec.work.foreman.Foreman - 
Converting logical plan {
  "head" : {
    "version" : 1,
    "generator" : {
      "type" : "org.apache.drill.exec.planner.logical.DrillImplementor",
      "info" : ""
    },
    "type" : "APACHE_DRILL_LOGICAL",
    "resultMode" : "EXEC"
  },
  "storage" : {
    "cp" : {
      "type" : "file",
      "connection" : "classpath:///",
      "workspaces" : null,
      "formats" : null
    }
  },
  "query" : [ {
    "op" : "scan",
    "@id" : 1,
    "storageengine" : "cp",
    "selection" : {
      "format" : {
        "type" : "json"
      },
      "files" : [ "/customer.json" ]
    },
    "ref" : null
  }, {
    "op" : "project",
    "@id" : 2,
    "input" : 1,
    "projections" : [ {
      "ref" : "output.EXPR$0",
      "expr" : " (1)  + (2) "
    } ]
  }, {
    "op" : "limit",
    "@id" : 3,
    "input" : 2,
    "first" : 0,
    "last" : 1
  }, {
    "op" : "store",
    "@id" : 4,
    "input" : 3,
    "target" : null,
    "storageEngine" : "--SCREEN--"
  } ]
}.
11:42:05.244 [WorkManager-3] DEBUG o.a.drill.common.config.DrillConfig - 
Loading configs at the following URLs 
[jar:file:/opt/drill/jars/drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar!/drill-module.conf,
 
jar:file:/opt/drill/jars/drill-common-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar!/drill-module.conf]
11:42:05.250 [WorkManager-3] DEBUG o.a.d.c.l.data.LogicalOperatorBase - Adding 
Logical Operator sub types: [class 
org.apache.drill.common.logical.data.Transform, class 
org.apache.drill.common.logical.data.Limit, class 
org.apache.drill.common.logical.data.Union, class 
org.apache.drill.common.logical.data.Sequence, class 
org.apache.drill.common.logical.data.Scan, class 
org.apache.drill.common.logical.data.Order, class 
org.apache.drill.common.logical.data.WindowFrame, class 
org.apache.drill.common.logical.data.Constant, class 
org.apache.drill.common.logical.data.Project, class 
org.apache.drill.common.logical.data.Join, class 
org.apache.drill.common.logical.data.GroupingAggregate, class 
org.apache.drill.common.logical.data.Store, class 
org.apache.drill.common.logical.data.Filter, class 
org.apache.drill.common.logical.data.RunningAggregate, class 
org.apache.drill.common.logical.data.Flatten]
11:42:05.251 [WorkManager-3] DEBUG o.a.d.c.l.StoragePluginConfigBase - Adding 
Storage Engine Configs including [class 
org.apache.drill.exec.store.ischema.InfoSchemaConfig, class 
org.apache.drill.exec.store.mock.MockStorageEngineConfig, class 
org.apache.drill.exec.store.dfs.FileSystemConfig, class 
org.apache.drill.exec.store.NamedStoragePluginConfig, class 
org.apache.drill.exec.store.dfs.FileSystemFormatConfig, class 
org.apache.drill.exec.store.hive.HiveStoragePluginConfig]
11:42:05.252 [WorkManager-3] DEBUG o.a.d.c.l.FormatPluginConfigBase - Adding 
Format Plugin Configs including [class 
org.apache.drill.exec.store.dfs.NamedFormatPluginConfig, class 
org.apache.drill.exec.store.parquet.ParquetFormatConfig, class 
org.apache.drill.exec.store.easy.json.JSONFormatPlugin$JSONFormatConfig]
11:42:05.269 [WorkManager-3] DEBUG o.a.d.e.s.schedule.BlockMapBuilder - Took 0 
ms to build endpoint map
11:42:05.271 [WorkManager-3] DEBUG o.a.d.e.s.schedule.BlockMapBuilder - Failure 
finding Drillbit running on host localhost.  Skipping affinity to that host.
11:42:05.271 [WorkManager-3] DEBUG o.a.d.e.s.schedule.BlockMapBuilder - 
FileWork group (/customer.json,0) max bytes 0
11:42:05.271 [WorkManager-3] DEBUG o.a.d.e.s.schedule.BlockMapBuilder - Took 0 
ms to set endpoint bytes
11:42:05.272 [WorkManager-3] DEBUG o.a.d.e.s.schedule.AffinityCreator - Took 0 
ms to get operator affinity
11:42:05.273 [WorkManager-3] DEBUG o.a.d.e.s.schedule.AssignmentCreator - Took 
0 ms to apply assignments
11:42:05.276 [WorkManager-3] DEBUG o.a.d.e.p.f.SimpleParallelizer - Root 
fragment:
 handle {
  query_id {
    part1: -4656127306686443884
    part2: -8283317532111349525
  }
  major_fragment_id: 0
  minor_fragment_id: 0
}
network_cost: 0.0
cpu_cost: 0.0
disk_cost: 0.0
memory_cost: 0.0
fragment_json: "{\n  \"pop\" : \"screen\",\n  \"@id\" : 1,\n  \"child\" : {\n   
 \"pop\" : \"selection-vector-remover\",\n    \"@id\" : 2,\n    \"child\" : {\n 
     \"pop\" : \"limit\",\n      \"@id\" : 3,\n      \"child\" : {\n        
\"pop\" : \"project\",\n        \"@id\" : 4,\n        \"exprs\" : [ {\n         
 \"ref\" : \"output.EXPR$0\",\n          \"expr\" : \" (1)  + (2) \"\n        } 
],\n        \"child\" : {\n          \"pop\" : \"fs-sub-scan\",\n          
\"@id\" : 5,\n          \"files\" : [ {\n            \"start\" : 0,\n           
 \"length\" : 1,\n            \"path\" : \"/customer.json\"\n          } ],\n   
       \"storage\" : {\n            \"type\" : \"file\",\n            
\"connection\" : \"classpath:///\",\n            \"workspaces\" : null,\n       
     \"formats\" : null\n          },\n          \"format\" : {\n            
\"type\" : \"json\"\n          }\n        }\n      },\n      \"first\" : 0,\n   
   \"last\" : 1\n    }\n  }\n}"
leaf_fragment: true
assignment {
  address: "qa-node118.qa.lab"
  user_port: 31010
  control_port: 31011
  data_port: 31012
}
foreman {
  address: "qa-node118.qa.lab"
  user_port: 31010
  control_port: 31011
  data_port: 31012
}

11:42:05.277 [WorkManager-3] DEBUG o.a.d.exec.rpc.control.WorkEventBus - Adding 
fragment status listener for queryId part1: -4656127306686443884
part2: -8283317532111349525
.
11:42:05.277 [WorkManager-3] DEBUG o.a.drill.exec.work.foreman.Foreman - 
Storing fragments
11:42:05.277 [WorkManager-3] DEBUG o.a.drill.exec.work.foreman.Foreman - 
Fragments stored.
11:42:05.278 [WorkManager-3] DEBUG o.a.drill.exec.work.foreman.Foreman - 
Submitting fragments to run.
11:42:05.278 [WorkManager-3] DEBUG o.a.d.exec.work.foreman.QueryManager - 
Setting up fragment runs.
11:42:05.278 [WorkManager-3] DEBUG o.a.d.exec.work.foreman.QueryManager - 
Setting up root context.
11:42:05.279 [WorkManager-3] DEBUG o.a.drill.exec.ops.FragmentContext - Getting 
initial memory allocation of 20000000
11:42:05.279 [WorkManager-3] DEBUG o.a.d.exec.work.foreman.QueryManager - 
Setting up incoming buffers
11:42:05.280 [WorkManager-3] DEBUG o.a.d.e.work.batch.IncomingBuffers - Came up 
with a list of 0 required fragments.  Fragments {}
11:42:05.280 [WorkManager-3] DEBUG o.a.d.exec.work.foreman.QueryManager - 
Setting buffers on root context.
11:42:05.281 [WorkManager-3] DEBUG o.a.d.exec.work.foreman.QueryManager - 
Generating Exec tree
11:42:05.313 [WorkManager-3] DEBUG o.a.d.e.p.i.s.RemovingRecordBatch - Created.
11:42:05.314 [WorkManager-3] DEBUG o.a.d.exec.work.foreman.QueryManager - Exec 
tree generated.
11:42:05.314 [WorkManager-3] DEBUG o.a.d.exec.work.foreman.QueryManager - 
Fragment added to local node.
11:42:05.315 [WorkManager-3] DEBUG o.apache.drill.exec.work.WorkManager - 
Adding pending task 
org.apache.drill.exec.work.fragment.FragmentExecutor@4ea74049
11:42:05.315 [WorkManager-3] DEBUG o.a.d.exec.work.foreman.QueryManager - 
Fragment runs setup is complete.
11:42:05.315 [WorkManager Event Thread] DEBUG 
o.apache.drill.exec.work.WorkManager - Starting pending task 
org.apache.drill.exec.work.fragment.FragmentExecutor@4ea74049
11:42:05.316 [WorkManager-3] DEBUG o.a.drill.exec.work.foreman.Foreman - 
Fragments running.
11:42:05.316 [WorkManager-4] DEBUG o.a.d.e.w.fragment.FragmentExecutor - 
Starting fragment runner. 0:0
11:42:05.316 [WorkManager-4] DEBUG o.a.d.exec.work.foreman.QueryManager - New 
fragment status was provided to Foreman of memory_use: 0
batches_completed: 0
records_completed: 0
state: RUNNING
data_processed: 0
handle {
  query_id {
    part1: -4656127306686443884
    part2: -8283317532111349525
  }
  major_fragment_id: 0
  minor_fragment_id: 0
}
running_time: 10523888674029567

11:42:05.889 [WorkManager-4] DEBUG o.a.d.e.p.i.p.ProjectRecordBatch - Added 
eval.
11:42:05.891 [WorkManager-4] DEBUG o.a.d.e.compile.JaninoClassCompiler - 
Compiling:
 1:
2:      package org.apache.drill.exec.test.generated;
3:
4:      import org.apache.drill.exec.exception.SchemaChangeException;
5:      import org.apache.drill.exec.expr.holders.BigIntHolder;
6:      import org.apache.drill.exec.ops.FragmentContext;
7:      import org.apache.drill.exec.record.RecordBatch;
8:      import org.apache.drill.exec.vector.BigIntVector;
9:
10:     public class ProjectorGen29 {
11:
12:         BigIntVector vv3;
13:
14:         public void doSetup(FragmentContext context, RecordBatch incoming, 
RecordBatch outgoing)
15:             throws SchemaChangeException
16:         {
17:             {
18:                 /** start SETUP for function add **/
19:                 {
20:                      {}
21:                 }
22:                 /** end SETUP for function add **/
23:                 Object tmp4 = (outgoing).getValueAccessorById(0, 
BigIntVector.class).getValueVector();
24:                 if (tmp4 == null) {
25:                     throw new SchemaChangeException("Failure while loading 
vector vv3 with id: TypedFieldId [type=minor_type: BIGINT\nmode: REQUIRED\n, 
fieldId=0, isSuperReader=false].");
26:                 }
27:                 vv3 = ((BigIntVector) tmp4);
28:             }
29:         }
30:
31:         public void doEval(int inIndex, int outIndex)
32:             throws SchemaChangeException
33:         {
34:             {
35:                 BigIntHolder out0 = new BigIntHolder();
36:                 out0 .value = 1L;
37:                 BigIntHolder out1 = new BigIntHolder();
38:                 out1 .value = 2L;
39:                 BigIntHolder out2 = new BigIntHolder();
40:                 {
41:                     final BigIntHolder out = new BigIntHolder();
42:                     BigIntHolder in1 = out0;
43:                     BigIntHolder in2 = out1;
44:
45:         out.value = (long) (in1.value + in2.value);
46:
47:                     out2 = out;
48:                 }
49:                 vv3 .getMutator().set((outIndex), out2 .value);
50:             }
51:         }
52:
53:     }

11:42:05.900 [WorkManager-4] DEBUG o.a.drill.exec.compile.MergeAdapter - 
Skipping copy of 'doSetup()' since it is abstract or listed elsewhere.
11:42:05.901 [WorkManager-4] DEBUG o.a.drill.exec.compile.MergeAdapter - 
Skipping copy of 'doEval()' since it is abstract or listed elsewhere.
11:42:05.903 [WorkManager-4] DEBUG o.a.drill.exec.ops.FragmentContext - Compile 
time: 13 millis.
11:42:05.909 [WorkManager-4] DEBUG o.a.d.e.compile.JaninoClassCompiler - 
Compiling:
 1:
2:      package org.apache.drill.exec.test.generated;
3:
4:      import org.apache.drill.exec.exception.SchemaChangeException;
5:      import org.apache.drill.exec.ops.FragmentContext;
6:      import org.apache.drill.exec.record.RecordBatch;
7:      import org.apache.drill.exec.vector.BigIntVector;
8:
9:      public class CopierGen30 {
10:
11:         BigIntVector vv0;
12:         BigIntVector vv2;
13:
14:         public void doSetup(FragmentContext context, RecordBatch incoming, 
RecordBatch outgoing)
15:             throws SchemaChangeException
16:         {
17:             {
18:                 Object tmp1 = (incoming).getValueAccessorById(0, 
BigIntVector.class).getValueVector();
19:                 if (tmp1 == null) {
20:                     throw new SchemaChangeException("Failure while loading 
vector vv0 with id: TypedFieldId [type=minor_type: BIGINT\nmode: REQUIRED\n, 
fieldId=0, isSuperReader=false].");
21:                 }
22:                 vv0 = ((BigIntVector) tmp1);
23:                 Object tmp3 = (outgoing).getValueAccessorById(0, 
BigIntVector.class).getValueVector();
24:                 if (tmp3 == null) {
25:                     throw new SchemaChangeException("Failure while loading 
vector vv2 with id: TypedFieldId [type=minor_type: BIGINT\nmode: REQUIRED\n, 
fieldId=0, isSuperReader=false].");
26:                 }
27:                 vv2 = ((BigIntVector) tmp3);
28:             }
29:         }
30:
31:         public void doEval(int inIndex, int outIndex)
32:             throws SchemaChangeException
33:         {
34:             {
35:                 vv2 .copyFrom((inIndex), (outIndex), vv0);
36:             }
37:         }
38:
39:     }

11:42:05.914 [WorkManager-4] DEBUG o.a.drill.exec.compile.MergeAdapter - 
Skipping copy of 'doSetup()' since it is abstract or listed elsewhere.
11:42:05.914 [WorkManager-4] DEBUG o.a.drill.exec.compile.MergeAdapter - 
Skipping copy of 'doEval()' since it is abstract or listed elsewhere.
11:42:05.916 [WorkManager-4] DEBUG o.a.drill.exec.ops.FragmentContext - Compile 
time: 7 millis.
11:42:05.918 [WorkManager-4] DEBUG o.a.d.exec.work.foreman.QueryManager - New 
fragment status was provided to Foreman of memory_use: 0
batches_completed: 2
records_completed: 1
state: FINISHED
data_processed: 0
handle {
  query_id {
    part1: -4656127306686443884
    part2: -8283317532111349525
  }
  major_fragment_id: 0
  minor_fragment_id: 0
}
running_time: 601395390

11:42:05.921 [WorkManager-4] DEBUG o.a.d.e.w.fragment.FragmentExecutor - 
Fragment runner complete. 0:0



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to