Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Plain View
Drill, mail # dev - [4/6] DRILL-259: Implicit cast functionality


Copy link to this message
-
[4/6] DRILL-259: Implicit cast functionality
jacques@... 2014-01-14, 16:48
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/db020369/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java b/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
index 76d52be..b16d1ff 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
@@ -1,3 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.drill.exec.resolver;
 
 import java.util.HashMap;
@@ -5,462 +23,529 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.drill.common.expression.FunctionCall;
+import org.apache.drill.common.types.TypeProtos.DataMode;
+import org.apache.drill.common.types.TypeProtos.MajorType;
 import org.apache.drill.common.types.TypeProtos.MinorType;
+import org.apache.drill.exec.expr.annotations.FunctionTemplate.NullHandling;
+import org.apache.drill.exec.expr.fn.DrillFuncHolder;
 
 public class TypeCastRules {
-
- private static Map<MinorType, Set<MinorType>> rules;
-
- public TypeCastRules(){
-
-
- rules = new HashMap<MinorType, Set<MinorType>>();
-
-        Set<MinorType> rule;
-
-        /** TINYINT cast able from **/
-        rule = new HashSet<MinorType>();
-        rule.add(MinorType.TINYINT);        
-        rule.add(MinorType.SMALLINT);        
-        rule.add(MinorType.INT);        
-        rule.add(MinorType.BIGINT);        
-        rule.add(MinorType.DECIMAL4);        
-        rule.add(MinorType.DECIMAL8);        
-        rule.add(MinorType.DECIMAL12);        
-        rule.add(MinorType.DECIMAL16);        
-        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<MinorType>();
-        rule.add(MinorType.TINYINT);        
-        rule.add(MinorType.SMALLINT);        
-        rule.add(MinorType.INT);        
-        rule.add(MinorType.BIGINT);        
-        rule.add(MinorType.DECIMAL4);        
-        rule.add(MinorType.DECIMAL8);        
-        rule.add(MinorType.DECIMAL12);        
-        rule.add(MinorType.DECIMAL16);        
-        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<MinorType>();
-        rule.add(MinorType.TINYINT);        
-        rule.add(MinorType.SMALLINT);        
-        rule.add(MinorType.INT);        
-        rule.add(MinorType.BIGINT);        
-        rule.add(MinorType.DECIMAL4);        
-        rule.add(MinorType.DECIMAL8);        
-        rule.add(MinorType.DECIMAL12);        
-        rule.add(MinorType.DECIMAL16);        
-        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<MinorType>();
-        rule.add(MinorType.TINYINT);        
-        rule.add(MinorType.SMALLINT);        
-        rule.add(MinorType.INT);        
-        rule.add(MinorType.BIGINT);        
-        rule.add(MinorType.DECIMAL4);        
-        rule.add(MinorType.DECIMAL8);        
-        rule.add(MinorType.DECIMAL12);        
-        rule.add(MinorType.DECIMAL16);        
-        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);