String strLikePattern = likePattern.toString(); parseSimplePattern(strLikePattern); if (type == PatternType.COMPLEX) { p = Pattern.compile(likePatternToRegExp(strLikePattern)); result.set(find(s, simplePattern, startS, endS));
@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; }
public Checker tryCreate(String pattern) { // anchor the pattern to the start:end of the whole string. return new ComplexChecker("^" + UDFLike.likePatternToRegExp(pattern) + "$"); } }
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); } }
@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; }
public Checker tryCreate(String pattern) { // anchor the pattern to the start:end of the whole string. return new ComplexChecker("^" + UDFLike.likePatternToRegExp(pattern) + "$"); } }
String strLikePattern = likePattern.toString(); parseSimplePattern(strLikePattern); if (type == PatternType.COMPLEX) { p = Pattern.compile(likePatternToRegExp(strLikePattern)); result.set(find(s, simplePattern, startS, endS));
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)); 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 Checker tryCreate(String pattern) { return new ComplexChecker(UDFLike.likePatternToRegExp(pattern)); } }
String strLikePattern = likePattern.toString(); parseSimplePattern(strLikePattern); if (type == PatternType.COMPLEX) { p = Pattern.compile(likePatternToRegExp(strLikePattern)); result.set(find(s, simplePattern, startS, endS));
String strLikePattern = likePattern.toString(); parseSimplePattern(strLikePattern); if (type == PatternType.COMPLEX) { p = Pattern.compile(likePatternToRegExp(strLikePattern)); result.set(find(s, simplePattern, startS, endS));