@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { bw.set(false); /**If field value or any constant string pattern value is null then return null*/ if (arguments[0].get() == null || isConstantNullPatternContain) { return null; } /**If all patterns are constant string and no pattern have null value the do short circuit boolean check * Else evaluate all patterns if any pattern contains null value then return null otherwise at last return matching result * */ Text columnValue = (Text) converters[0].convert(arguments[0].get()); Text pattern = new Text(); UDFLike likeUdf = new UDFLike(); for (int idx = 1; idx < arguments.length; idx++) { if (arguments[idx].get() == null) { return null; } pattern.set(converters[idx].convert(arguments[idx].get()).toString()); if (likeUdf.evaluate(columnValue, pattern).get() && !bw.get()) { bw.set(true); if (isAllPatternsConstant) { return bw; } } } return bw; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { bw.set(true); /**If field value or any constant string pattern value is null then return null*/ if (arguments[0].get() == null || isConstantNullPatternContain) { return null; } /**If all patterns are constant string and no pattern have null value the do short circuit boolean check * Else evaluate all patterns if any pattern contains null value then return null otherwise at last return matching result * */ Text columnValue = (Text) converters[0].convert(arguments[0].get()); Text pattern = new Text(); UDFLike likeUdf = new UDFLike(); for (int idx = 1; idx < arguments.length; idx++) { if (arguments[idx].get() == null) { return null; } pattern.set((Text) converters[idx].convert(arguments[idx].get())); if (!likeUdf.evaluate(columnValue, pattern).get() && bw.get()) { bw.set(false); if (isAllPatternsConstant) { return bw; } } } return bw; }
long negative = 0; Random control = new Random(1234); UDFLike udf = new UDFLike(); for (String pattern : patterns) { VectorExpression expr = new FilterStringColLikeStringScalar(0, pattern.getBytes(StandardCharsets.UTF_8));