Github user jinfengni commented on a diff in the pull request:
https://github.com/apache/drill/pull/397#discussion_r54680708
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlOperator.java
---
@@ -18,69 +18,43 @@
package org.apache.drill.exec.planner.sql;
-import com.google.common.base.Preconditions;
-import org.apache.drill.common.types.TypeProtos.MajorType;
-import org.apache.drill.common.types.TypeProtos.MinorType;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.sql.SqlCall;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.calcite.sql.SqlFunction;
import org.apache.calcite.sql.SqlFunctionCategory;
import org.apache.calcite.sql.SqlIdentifier;
-import org.apache.calcite.sql.SqlOperatorBinding;
import org.apache.calcite.sql.parser.SqlParserPos;
-import org.apache.calcite.sql.type.SqlTypeName;
-import org.apache.calcite.sql.validate.SqlValidator;
-import org.apache.calcite.sql.validate.SqlValidatorScope;
+import org.apache.drill.exec.expr.fn.DrillFuncHolder;
public class DrillSqlOperator extends SqlFunction {
- static final org.slf4j.Logger logger =
org.slf4j.LoggerFactory.getLogger(DrillSqlOperator.class);
-
- private static final MajorType NONE = MajorType.getDefaultInstance();
- private final MajorType returnType;
+ // static final org.slf4j.Logger logger =
org.slf4j.LoggerFactory.getLogger(DrillSqlOperator.class);
private final boolean isDeterministic;
+ private final List<DrillFuncHolder> functions;
public DrillSqlOperator(String name, int argCount, boolean
isDeterministic) {
- this(name, argCount, MajorType.getDefaultInstance(), isDeterministic);
+ this(name, new ArrayList<DrillFuncHolder>(), argCount, argCount,
isDeterministic);
--- End diff --
It does not make sense to that that a DrillSqlOperator would have an empty
list of DrillFuncHolder. From the code, several places will call this
constructor, like "convert_fromTIMESTAMP_IMPALA", "CastHigh", all should have
corresponding DrillFuncHolder.
Also, DrillDefaultSqlReturnTypeInference would return "any" in case of
empty DrillFuncHolder, while the above cases probably should return non-any
types.
Sounds like when we call this constructor to create a DrillSqlOperator, at
minimum, we need verify that there is at least one DrillFuncHolder exists.
Otherwise, will it hit problem in execution, if no DrillFuncHolder could be
found?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---