in exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java [51:685]
private static void initTypeRules() {
rules = new HashMap<>();
Set<MinorType> rule;
/** TINYINT cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.TINYINT, rule);
/** SMALLINT cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.SMALLINT, rule);
/** INT cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.INT, rule);
/** BIGINT cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.BIGINT, rule);
/** UINT4 cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.UINT4, rule);
/** UINT8 cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.UINT8, rule);
/** DECIMAL9 cast able from **/
rule = new HashSet<>();
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.VARDECIMAL);
rules.put(MinorType.DECIMAL9, rule);
/** DECIMAL18 cast able from **/
rule = new HashSet<>();
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.VARDECIMAL);
rules.put(MinorType.DECIMAL18, rule);
/** DECIMAL28Dense cast able from **/
rule = new HashSet<>();
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.VARDECIMAL);
rules.put(MinorType.DECIMAL28DENSE, rule);
/** DECIMAL28Sparse cast able from **/
rule = new HashSet<>();
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.VARDECIMAL);
rules.put(MinorType.DECIMAL28SPARSE, rule);
/* VARDECIMAL cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.VARDECIMAL);
rules.put(MinorType.VARDECIMAL, rule);
/** DECIMAL38Dense cast able from **/
rule = new HashSet<>();
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rules.put(MinorType.DECIMAL38DENSE, rule);
/** DECIMAL38Sparse cast able from **/
rule = new HashSet<>();
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.VARDECIMAL);
rules.put(MinorType.DECIMAL38SPARSE, rule);
/** MONEY cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.MONEY, rule);
/** DATE cast able from **/
rule = new HashSet<>();
rule.add(MinorType.DATE);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.DATE, rule);
/** TIME cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TIME);
rule.add(MinorType.DATE);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.TIME, rule);
/** TIMESTAMP cast able from **/
rule = new HashSet<>();
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VARBINARY);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DATE);
rule.add(MinorType.TIMESTAMPTZ);
rules.put(MinorType.TIMESTAMP, rule);
/** TIMESTAMPTZ cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.DATE);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIME);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.TIMESTAMPTZ, rule);
/** Interval cast able from **/
rule = new HashSet<>();
rule.add(MinorType.INTERVAL);
rule.add(MinorType.INTERVALDAY);
rule.add(MinorType.INTERVALYEAR);
rule.add(MinorType.DATE);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.INTERVAL, rule);
/** INTERVAL YEAR cast able from **/
rule = new HashSet<>();
rule.add(MinorType.INTERVALYEAR);
rule.add(MinorType.INTERVAL);
rule.add(MinorType.INTERVALDAY);
rule.add(MinorType.DATE);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.INTERVALYEAR, rule);
/** INTERVAL DAY cast able from **/
rule = new HashSet<>();
rule.add(MinorType.INTERVALDAY);
rule.add(MinorType.INTERVALYEAR);
rule.add(MinorType.INTERVAL);
rule.add(MinorType.DATE);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.INTERVALDAY, rule);
/** FLOAT4 cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rules.put(MinorType.FLOAT4, rule);
/** FLOAT8 cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rules.put(MinorType.FLOAT8, rule);
/** BIT cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rules.put(MinorType.BIT, rule);
/** FIXEDCHAR cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.MONEY);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.DATE);
rule.add(MinorType.TIME);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.INTERVAL);
rule.add(MinorType.INTERVALYEAR);
rule.add(MinorType.INTERVALDAY);
rules.put(MinorType.FIXEDCHAR, rule);
/** FIXED16CHAR cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.DATE);
rule.add(MinorType.TIME);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.INTERVAL);
rule.add(MinorType.INTERVALYEAR);
rule.add(MinorType.INTERVALDAY);
rules.put(MinorType.FIXED16CHAR, rule);
/** FIXEDBINARY cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rule.add(MinorType.FIXEDBINARY);
rules.put(MinorType.FIXEDBINARY, rule);
/** VARCHAR cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.DATE);
rule.add(MinorType.TIME);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.INTERVAL);
rule.add(MinorType.INTERVALYEAR);
rule.add(MinorType.INTERVALDAY);
rules.put(MinorType.VARCHAR, rule);
/** VAR16CHAR cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.FIXEDCHAR);
rule.add(MinorType.FIXED16CHAR);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VAR16CHAR);
rule.add(MinorType.VARBINARY);
rule.add(MinorType.FIXEDBINARY);
rule.add(MinorType.DATE);
rule.add(MinorType.TIME);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.INTERVAL);
rule.add(MinorType.INTERVALYEAR);
rule.add(MinorType.INTERVALDAY);
rules.put(MinorType.VAR16CHAR, rule);
/** VARBINARY cast able from **/
rule = new HashSet<>();
rule.add(MinorType.TINYINT);
rule.add(MinorType.SMALLINT);
rule.add(MinorType.INT);
rule.add(MinorType.BIGINT);
rule.add(MinorType.UINT1);
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
rule.add(MinorType.DECIMAL9);
rule.add(MinorType.DECIMAL18);
rule.add(MinorType.DECIMAL28SPARSE);
rule.add(MinorType.DECIMAL28DENSE);
rule.add(MinorType.DECIMAL38SPARSE);
rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.VARDECIMAL);
rule.add(MinorType.MONEY);
rule.add(MinorType.TIMESTAMP);
rule.add(MinorType.TIMESTAMPTZ);
rule.add(MinorType.FLOAT4);
rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
rule.add(MinorType.VARCHAR);
rule.add(MinorType.VARBINARY);
rule.add(MinorType.FIXEDBINARY);
rules.put(MinorType.VARBINARY, rule);
rules.put(MinorType.MAP, Sets.newHashSet(MinorType.MAP));
rules.put(MinorType.LIST, Sets.newHashSet(MinorType.LIST));
rules.put(MinorType.UNION, Sets.newHashSet(MinorType.UNION));
rules.put(MinorType.DICT, Sets.newHashSet(MinorType.DICT));
}