Skip to content

Commit 0a3456f

Browse files
committed
Case insensitive substring match factories for KernelLogic (#19075)
1 parent 435ec72 commit 0a3456f

File tree

2 files changed

+49
-13
lines changed

2 files changed

+49
-13
lines changed

ydb/core/formats/arrow/program/kernel_logic.h

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,54 @@ class TLogicMatchString: public IKernelLogic {
148148
}
149149
};
150150

151+
class TLogicMatchAsciiEqualsIgnoreCase: public TLogicMatchString {
152+
private:
153+
static TString GetClassNameStatic() {
154+
return "String.AsciiEqualsIgnoreCase";
155+
}
156+
public:
157+
TLogicMatchAsciiEqualsIgnoreCase() : TLogicMatchString(TIndexCheckOperation::EOperation::Contains, false, false) {
158+
159+
}
160+
static const inline auto Registrator = TFactory::TRegistrator<TLogicMatchAsciiEqualsIgnoreCase>(GetClassNameStatic());
161+
};
162+
163+
class TLogicMatchAsciiContainsIgnoreCase: public TLogicMatchString {
164+
private:
165+
static TString GetClassNameStatic() {
166+
return "String.AsciiContainsIgnoreCase";
167+
}
168+
public:
169+
TLogicMatchAsciiContainsIgnoreCase() : TLogicMatchString(TIndexCheckOperation::EOperation::Contains, false, false) {
170+
171+
}
172+
static const inline auto Registrator = TFactory::TRegistrator<TLogicMatchAsciiContainsIgnoreCase>(GetClassNameStatic());
173+
};
174+
175+
class TLogicMatchAsciiStartsWithIgnoreCase: public TLogicMatchString {
176+
private:
177+
static TString GetClassNameStatic() {
178+
return "String.AsciiStartsWithIgnoreCase";
179+
}
180+
public:
181+
TLogicMatchAsciiStartsWithIgnoreCase() : TLogicMatchString(TIndexCheckOperation::EOperation::StartsWith, false, false) {
182+
183+
}
184+
static const inline auto Registrator = TFactory::TRegistrator<TLogicMatchAsciiStartsWithIgnoreCase>(GetClassNameStatic());
185+
};
186+
187+
class TLogicMatchAsciiEndsWithIgnoreCase: public TLogicMatchString {
188+
private:
189+
static TString GetClassNameStatic() {
190+
return "String.AsciiEndsWithIgnoreCase";
191+
}
192+
public:
193+
TLogicMatchAsciiEndsWithIgnoreCase() : TLogicMatchString(TIndexCheckOperation::EOperation::EndsWith, false, false) {
194+
195+
}
196+
static const inline auto Registrator = TFactory::TRegistrator<TLogicMatchAsciiEndsWithIgnoreCase>(GetClassNameStatic());
197+
};
198+
151199
class TLogicEquals: public IKernelLogic {
152200
private:
153201
using TBase = IKernelLogic;

ydb/core/tx/program/builder.cpp

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,7 @@ TConclusion<std::shared_ptr<IStepFunction>> TProgramBuilder::MakeFunction(const
2121
const NKikimrSSA::TProgram::TAssignment::TFunction& func, std::shared_ptr<NArrow::NSSA::IKernelLogic>& kernelLogic,
2222
std::vector<TColumnChainInfo>& arguments) const {
2323
if (const auto& kernelName = func.GetKernelName(); !kernelName.empty()) {
24-
if (kernelName == "String.AsciiEqualsIgnoreCase") {
25-
kernelLogic = std::make_shared<TLogicMatchString>(TIndexCheckOperation::EOperation::Contains, false, false);
26-
} else if (kernelName == "String.AsciiContainsIgnoreCase") {
27-
kernelLogic = std::make_shared<TLogicMatchString>(TIndexCheckOperation::EOperation::Contains, false, false);
28-
} else if (kernelName == "String.AsciiContainsIgnoreCase") {
29-
kernelLogic = std::make_shared<TLogicMatchString>(TIndexCheckOperation::EOperation::Contains, false, false);
30-
} else if (kernelName == "String.AsciiStartsWithIgnoreCase") {
31-
kernelLogic = std::make_shared<TLogicMatchString>(TIndexCheckOperation::EOperation::StartsWith, false, false);
32-
} else if (kernelName == "String.AsciiEndsWithIgnoreCase") {
33-
kernelLogic = std::make_shared<TLogicMatchString>(TIndexCheckOperation::EOperation::EndsWith, false, false);
34-
} else {
35-
kernelLogic.reset(IKernelLogic::TFactory::Construct(kernelName));
36-
}
24+
kernelLogic.reset(IKernelLogic::TFactory::Construct(kernelName));
3725
} else if (func.HasYqlOperationId()) {
3826
kernelLogic = std::make_shared<TSimpleKernelLogic>(func.GetYqlOperationId());
3927
} else {

0 commit comments

Comments
 (0)