@Override public Expression create(List<Expression> children, StatementContext context) throws SQLException { QueryServices services = context.getConnection().getQueryServices(); boolean useByteBasedRegex = services.getProps().getBoolean(QueryServices.USE_BYTE_BASED_REGEX_ATTRIB, QueryServicesOptions.DEFAULT_USE_BYTE_BASED_REGEX); if (useByteBasedRegex) { return new ByteBasedRegexpReplaceFunction(children); } else { return new StringBasedRegexpReplaceFunction(children); } } }
@Test public void regexpReplace() throws Exception { List<Expression> args = Lists.newArrayList(getInvertedLiteral("blah", PChar.INSTANCE), getLiteral("l.h"), getLiteral("foo")); evaluateAndAssertResult(new ByteBasedRegexpReplaceFunction(args), "bfoo"); evaluateAndAssertResult(new StringBasedRegexpReplaceFunction(args), "bfoo"); }
private String testExpression(String srcStr, String patternStr, String replaceStr, SortOrder sortOrder) throws SQLException { Expression srcExp, patternExp, replaceExp; srcExp = LiteralExpression.newConstant(srcStr, TYPE, sortOrder); patternExp = LiteralExpression.newConstant(patternStr, TYPE, sortOrder); replaceExp = LiteralExpression.newConstant(replaceStr, TYPE, sortOrder); List<Expression> expressions = Lists.newArrayList(srcExp, patternExp, replaceExp); String res1, res2; res1 = evalExp(new ByteBasedRegexpReplaceFunction(expressions)); res2 = evalExp(new StringBasedRegexpReplaceFunction(expressions)); assertEquals(res1, res2); return res1; }
@Override public Expression create(List<Expression> children, StatementContext context) throws SQLException { QueryServices services = context.getConnection().getQueryServices(); boolean useByteBasedRegex = services.getProps().getBoolean(QueryServices.USE_BYTE_BASED_REGEX_ATTRIB, QueryServicesOptions.DEFAULT_USE_BYTE_BASED_REGEX); if (useByteBasedRegex) { return new ByteBasedRegexpReplaceFunction(children); } else { return new StringBasedRegexpReplaceFunction(children); } } }
@Override public Expression create(List<Expression> children, StatementContext context) throws SQLException { QueryServices services = context.getConnection().getQueryServices(); boolean useByteBasedRegex = services.getProps().getBoolean(QueryServices.USE_BYTE_BASED_REGEX_ATTRIB, QueryServicesOptions.DEFAULT_USE_BYTE_BASED_REGEX); if (useByteBasedRegex) { return new ByteBasedRegexpReplaceFunction(children); } else { return new StringBasedRegexpReplaceFunction(children); } } }