@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; }
for (int i=0; i < 1024; i++) { String input = generateCandidate(control,pattern); BooleanWritable like = udf.evaluate(new Text(input), pText); batch.reset(); bcv.initBuffer();
public BooleanWritable evaluate(Text s, Text likePattern) { if(s != null && likePattern != null) { s.set(s.toString().toLowerCase()); likePattern.set(likePattern.toString().toLowerCase()); } return super.evaluate(s, likePattern); } }