@Override public ExprNodeDesc clone() { List<ExprNodeDesc> cloneCh = new ArrayList<ExprNodeDesc>(chidren.size()); for (ExprNodeDesc ch : chidren) { cloneCh.add(ch.clone()); } ExprNodeGenericFuncDesc clone = new ExprNodeGenericFuncDesc(typeInfo, FunctionRegistry.cloneGenericUDF(genericUDF), funcText, cloneCh); return clone; }
private static ExprNodeDesc buildAnd(List<ExprNodeDesc> values) { if (values.size() == 1) { return values.get(0); } else { return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(), "and", values); } }
public static ExprNodeGenericFuncDesc makeUnaryPredicate( String fn, ExprNodeDesc arg) throws SemanticException { return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, FunctionRegistry.getFunctionInfo(fn).getGenericUDF(), Lists.newArrayList(arg)); } /**
public static ExprNodeGenericFuncDesc makeBinaryPredicate( String fn, ExprNodeDesc left, ExprNodeDesc right) throws SemanticException { return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, FunctionRegistry.getFunctionInfo(fn).getGenericUDF(), Lists.newArrayList(left, right)); } public static ExprNodeGenericFuncDesc makeUnaryPredicate(
public ExprNodeGenericFuncDesc binaryPredicate(String function, ExprNodeDesc lhs, ExprNodeDesc rhs) throws SemanticException { return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, FunctionRegistry.getFunctionInfo(function).getGenericUDF(), Lists.newArrayList(lhs, rhs)); }
private static ExprNodeGenericFuncDesc buildEquals(ExprNodeDesc columnDesc, ExprNodeDesc valueDesc) { return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, new GenericUDFOPEqual(), "=", Lists.newArrayList(columnDesc, valueDesc)); }
private static ExprNodeGenericFuncDesc extractResidualCondition(IndexPredicateAnalyzer analyzer, List<IndexSearchCondition> searchConditions, ExprNodeGenericFuncDesc inputExpr) { if (inputExpr == null) { return analyzer.translateOriginalConditions(searchConditions); } List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(); children.add(analyzer.translateOriginalConditions(searchConditions)); children.add(inputExpr); return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, FunctionRegistry.getGenericUDFForAnd(), children); }
private static ExprNodeGenericFuncDesc extractStorageHandlerCondition(IndexPredicateAnalyzer analyzer, List<IndexSearchCondition> searchConditions, ExprNodeGenericFuncDesc inputExpr) { if (inputExpr == null) { return analyzer.translateSearchConditions(searchConditions); } List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(); children.add(analyzer.translateSearchConditions(searchConditions)); children.add(inputExpr); return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, FunctionRegistry.getGenericUDFForAnd(), children); }
private ExprBuilder fn(String name, TypeInfo ti, int args) throws Exception { List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(); for (int i = 0; i < args; ++i) { children.add(stack.pop()); } stack.push(new ExprNodeGenericFuncDesc(ti, FunctionRegistry.getFunctionInfo(name).getGenericUDF(), children)); return this; }
private static ExprNodeDesc and(ExprNodeDesc left, ExprNodeDesc right) { return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(), Arrays.<ExprNodeDesc>asList(left, right)); } }
private static ExprNodeDesc or(ExprNodeDesc left, ExprNodeDesc right) { return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, new GenericUDFOPOr(), Arrays.<ExprNodeDesc>asList(left, right)); }
private void createTestSarg( ObjectInspector inspector, GenericUDF udf, List<ExprNodeDesc> childExpr) { childExpr.add(new ExprNodeColumnDesc(Long.class, "userid", "T", false)); childExpr.add(new ExprNodeConstantDesc(100)); conf.set("hive.io.filter.expr.serialized", SerializationUtilities.serializeExpression( new ExprNodeGenericFuncDesc(inspector, udf, childExpr))); }
private static ExprNodeDesc getListIndexNode(ExprNodeDesc node, ExprNodeDesc index) throws Exception { ArrayList<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(2); children.add(node); children.add(index); return new ExprNodeGenericFuncDesc(((ListTypeInfo) node.getTypeInfo()) .getListElementTypeInfo(), FunctionRegistry.getGenericUDFForIndex(), children); }
private static ExprNodeGenericFuncDesc or(List<ExprNodeDesc> children) { return new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, new GenericUDFOPOr(), children); }
private static ExprNodeGenericFuncDesc greaterThanEq(List<ExprNodeDesc> children) { return new ExprNodeGenericFuncDesc(children.get(0).getTypeInfo(), new GenericUDFOPEqualOrGreaterThan(), children); } }
private static ExprNodeGenericFuncDesc eq(List<ExprNodeDesc> children) { return new ExprNodeGenericFuncDesc(children.get(0).getTypeInfo(), new GenericUDFOPEqual(), children); }
private Operator<TableScanDesc> getTsOp(int i) { Table tblMetadata = new Table("db", "table"); TableScanDesc desc = new TableScanDesc("alias"/*+ cCtx.nextOperatorId()*/, tblMetadata); List<ExprNodeDesc> as = Lists.newArrayList(new ExprNodeConstantDesc(TypeInfoFactory.intTypeInfo, Integer.valueOf(i)), new ExprNodeColumnDesc(TypeInfoFactory.intTypeInfo, "c1", "aa", false)); ExprNodeGenericFuncDesc f1 = new ExprNodeGenericFuncDesc(TypeInfoFactory.intTypeInfo, udf, as); desc.setFilterExpr(f1); Operator<TableScanDesc> ts = OperatorFactory.get(cCtx, desc); return ts; }
public void testIsPermanentFunction() throws Exception { // Setup exprNode GenericUDF udf = new GenericUDFCurrentTimestamp(); List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(); ExprNodeGenericFuncDesc fnExpr = new ExprNodeGenericFuncDesc(TypeInfoFactory.timestampTypeInfo, udf, children); assertFalse("Function not added as permanent yet", FunctionRegistry.isPermanentFunction(fnExpr)); // Now register as permanent function FunctionResource[] emptyResources = new FunctionResource[] {}; FunctionRegistry.registerPermanentFunction("default.perm_current_timestamp", GenericUDFCurrentTimestamp.class.getName(), true, emptyResources); assertTrue("Function should now be recognized as permanent function", FunctionRegistry.isPermanentFunction(fnExpr)); }
private Operator<TableScanDesc> getTsOp(int i) { Table tblMetadata = new Table("db", "table"); TableScanDesc desc = new TableScanDesc("alias_" + cCtx.nextOperatorId(), tblMetadata); List<ExprNodeDesc> as = Lists.newArrayList(new ExprNodeConstantDesc(TypeInfoFactory.intTypeInfo, Integer.valueOf(i)), new ExprNodeColumnDesc(TypeInfoFactory.intTypeInfo, "c1", "aa", false)); ExprNodeGenericFuncDesc f1 = new ExprNodeGenericFuncDesc(TypeInfoFactory.intTypeInfo, udf, as); desc.setFilterExpr(f1); Operator<TableScanDesc> ts = OperatorFactory.get(cCtx, desc); return ts; }
@Test public void testSerializeTimestamp() { Timestamp ts = Timestamp.ofEpochMilli(1374554702000L, 123456); ExprNodeConstantDesc constant = new ExprNodeConstantDesc(ts); List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(1); children.add(constant); ExprNodeGenericFuncDesc desc = new ExprNodeGenericFuncDesc(TypeInfoFactory.timestampTypeInfo, new GenericUDFFromUtcTimestamp(), children); assertEquals(desc.getExprString(), SerializationUtilities.deserializeExpression( SerializationUtilities.serializeExpression(desc)).getExprString()); }