1//===----------------------------------------------------------------------===//
2// DuckDB
3//
4// duckdb/optimizer/rule/like_optimizations.hpp
5//
6//
7//===----------------------------------------------------------------------===//
8
9#pragma once
10
11#include "duckdb/optimizer/rule.hpp"
12#include "duckdb/function/scalar/string_functions.hpp"
13
14namespace duckdb {
15
16// The Like Optimization rule rewrites LIKE to optimized scalar functions (e.g.: prefix, suffix, and contains)
17class LikeOptimizationRule : public Rule {
18public:
19 explicit LikeOptimizationRule(ExpressionRewriter &rewriter);
20
21 unique_ptr<Expression> Apply(LogicalOperator &op, vector<reference<Expression>> &bindings, bool &changes_made,
22 bool is_root) override;
23
24 unique_ptr<Expression> ApplyRule(BoundFunctionExpression &expr, ScalarFunction function, string pattern,
25 bool is_not_like);
26};
27
28} // namespace duckdb
29