Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
None
-
None
Description
If we join two tables with = predicate on two CHAR columns, drill will fail.
SELECT S.S_ACCTBAL, S.S_NAME, N.N_NAME
FROM
( SELECT CAST(_MAP['S_ACCTBAL'] AS numeric) AS S_ACCTBAL,
CAST(_MAP['S_NAME'] AS VARCHAR) AS S_NAME,
_MAP['S_SUPPKEY'] AS S_SUPPKEY
FROM "/Users/jni//work/tpc-h-parquet/supplier") S
join
( SELECT CAST(_MAP['N_NAME'] AS VARCHAR) AS N_NAME,
_MAP['N_NATIONKEY'] AS N_NATIONKEY
FROM "/Users/jni//work/tpc-h-parquet/nation" ) N
on S.S_NAME = N.N_NAME;
The error is raised when compiling a generated code for the join = predicate .
message: "Screen received stop request sent. < SchemaChangeException:[ org.apache.drill.exec.exception.ClassTransformationException: Failure generating transformation classes for value:
If we replace the CHAR = predicate with a BIGINT = predicate, the query will run successfully.
SELECT S.S_ACCTBAL, S.S_NAME, N.N_NAME
FROM
( SELECT CAST(_MAP['S_ACCTBAL'] AS numeric) AS S_ACCTBAL,
CAST(_MAP['S_NAME'] AS VARCHAR) AS S_NAME,
_MAP['S_SUPPKEY'] AS S_SUPPKEY
FROM "/Users/jni//work/tpc-h-parquet/supplier") S
join
( SELECT CAST(_MAP['N_NAME'] AS VARCHAR) AS N_NAME,
_MAP['N_NATIONKEY'] AS N_NATIONKEY
FROM "/Users/jni//work/tpc-h-parquet/nation" ) N
on S.S_SUPPKEY = N.N_NATIONKEY;
Therefore, seems the CHAR join = predicate is not working properly.