# name: test/optimizer/like_optimizer.test # description: Test Like Optimization Rules # group: [optimizer] statement ok CREATE TABLE test(S VARCHAR); statement ok INSERT INTO test VALUES ('aaa'); statement ok PRAGMA explain_output = OPTIMIZED_ONLY; # no special symbols optimization: aaa -> S=a query I nosort nosymbols EXPLAIN SELECT S LIKE 'aaa' FROM test ---- query I nosort nosymbols EXPLAIN SELECT S='aaa' FROM test ---- # prefix optimization: aaa% -> prefix(aaa) query I nosort prefix EXPLAIN SELECT S LIKE 'aaa%' FROM test ---- query I nosort prefix EXPLAIN SELECT prefix(S, 'aaa') FROM test ---- query I nosort prefix EXPLAIN SELECT S LIKE 'aaa%%%%' FROM test ---- # suffix optimization: %aaa -> suffix(aaa) query I nosort suffix EXPLAIN SELECT S LIKE '%aaa' FROM test ---- query I nosort suffix EXPLAIN SELECT suffix(S, 'aaa') FROM test ---- query I nosort suffix EXPLAIN SELECT S LIKE '%%%%aaa' FROM test ---- # contains optimization: %aaa% -> contains(aaa) query I nosort contains EXPLAIN SELECT S LIKE '%aaa%' FROM test ---- query I nosort contains EXPLAIN SELECT contains(S, 'aaa') FROM test ---- query I nosort contains EXPLAIN SELECT S LIKE '%%%%aaa%%' FROM test ---- # NOT LIKE # no special symbols optimization: aaa -> S<>a query I nosort notlikenosymbols EXPLAIN SELECT S NOT LIKE 'aaa' FROM test ---- query I nosort notlikenosymbols EXPLAIN SELECT S<>'aaa' FROM test ---- # prefix optimization: aaa% -> prefix(aaa) query I nosort notlikeprefix EXPLAIN SELECT S NOT LIKE 'aaa%' FROM test ---- query I nosort notlikeprefix EXPLAIN SELECT NOT(prefix(S, 'aaa')) FROM test ---- query I nosort notlikeprefix EXPLAIN SELECT S NOT LIKE 'aaa%%%%' FROM test ---- # suffix optimization: %aaa -> suffix(aaa) query I nosort notlikesuffix EXPLAIN SELECT S NOT LIKE '%aaa' FROM test ---- query I nosort notlikesuffix EXPLAIN SELECT NOT(suffix(S, 'aaa')) FROM test ---- query I nosort notlikesuffix EXPLAIN SELECT S NOT LIKE '%%%%aaa' FROM test ---- # contains optimization: %aaa% -> contains(aaa) query I nosort notlikecontains EXPLAIN SELECT S NOT LIKE '%aaa%' FROM test ---- query I nosort notlikecontains EXPLAIN SELECT NOT(contains(S, 'aaa')) FROM test ---- query I nosort notlikecontains EXPLAIN SELECT S NOT LIKE '%%%%aaa%%' FROM test ----