private Checker borrowChecker() { FilterStringColLikeStringScalar fil = new FilterStringColLikeStringScalar(); return fil.createChecker(new String(pattern, StandardCharsets.UTF_8)); }
@Test public void testStringLikeMultiByte() throws HiveException { FilterStringColLikeStringScalar expr; VectorizedRowBatch batch; // verify that a multi byte LIKE expression matches a matching string batch = makeStringBatchMixedCharSize(); expr = new FilterStringColLikeStringScalar(0, ('%' + new String(multiByte) + '%').getBytes(StandardCharsets.UTF_8)); expr.transientInit(); expr.evaluate(batch); Assert.assertEquals(1, batch.size); // verify that a multi byte LIKE expression doesn't match a non-matching string batch = makeStringBatchMixedCharSize(); expr = new FilterStringColLikeStringScalar(0, ('%' + new String(multiByte) + 'x').getBytes(StandardCharsets.UTF_8)); expr.transientInit(); expr.evaluate(batch); Assert.assertEquals(0, batch.size); }
UDFLike udf = new UDFLike(); for (String pattern : patterns) { VectorExpression expr = new FilterStringColLikeStringScalar(0, pattern.getBytes(StandardCharsets.UTF_8)); expr.transientInit(); VectorizedRowBatch batch = VectorizedRowGroupGenUtil.getVectorizedRowBatch(1, 1, 1);
expr = new FilterStringColLikeStringScalar(0, "abc%".getBytes()); expr.transientInit(); expr.evaluate(vrb); Assert.assertEquals(FilterStringColLikeStringScalar.BeginChecker.class, expr.checker.getClass()); expr = new FilterStringColLikeStringScalar(0, "%abc".getBytes(StandardCharsets.UTF_8)); expr.transientInit(); expr.evaluate(vrb); Assert.assertEquals(FilterStringColLikeStringScalar.EndChecker.class, expr.checker.getClass()); expr = new FilterStringColLikeStringScalar(0, "%abc%".getBytes()); expr.transientInit(); expr.evaluate(vrb); Assert.assertEquals(FilterStringColLikeStringScalar.MiddleChecker.class, expr.checker.getClass()); expr = new FilterStringColLikeStringScalar(0, "%abc%de".getBytes()); expr.transientInit(); expr.evaluate(vrb); Assert.assertEquals(FilterStringColLikeStringScalar.ChainedChecker.class, expr.checker.getClass()); expr = new FilterStringColLikeStringScalar(0, "%abc_%de".getBytes()); expr.transientInit(); expr.evaluate(vrb); Assert.assertEquals(FilterStringColLikeStringScalar.ComplexChecker.class, expr.checker.getClass());
batch = makeStringBatchMixedCharSize(); pattern = new Text(mixPercentPattern); FilterStringColLikeStringScalar expr = new FilterStringColLikeStringScalar(0, mixPercentPattern); expr.transientInit(); expr.evaluate(batch); expr.evaluate(batch); initialBatchSize = batch.size; batch.cols[0].isRepeating = true; expr.evaluate(batch); batch.cols[0].isRepeating = true; batch.cols[0].isNull[0] = true; expr.evaluate(batch); batch.cols[0].isRepeating = true; batch.cols[0].noNulls = true; expr.evaluate(batch);
private Checker borrowChecker() { FilterStringColLikeStringScalar fil = new FilterStringColLikeStringScalar(); return fil.createChecker(new String(pattern, StandardCharsets.UTF_8)); }