@@ -264,14 +264,15 @@ class TJsonFilter::TImpl {
264
264
const TVector<TString>& types,
265
265
const TString& whereFilter,
266
266
TCallback callback,
267
- NYql::NPureCalc::IProgramFactoryPtr pureCalcProgramFactory)
268
- : Sql(GenerateSql(whereFilter)) {
267
+ IPureCalcProgramFactory::TPtr pureCalcProgramFactory,
268
+ const IPureCalcProgramFactory::TSettings& factorySettings)
269
+ : Sql(GenerateSql(whereFilter, factorySettings)) {
269
270
Y_ENSURE (columns.size () == types.size (), " Number of columns and types should by equal" );
270
271
271
272
// Program should be stateless because input values
272
273
// allocated on another allocator and should be released
273
274
LOG_ROW_DISPATCHER_DEBUG (" Creating program..." );
274
- Program = pureCalcProgramFactory->MakePushStreamProgram (
275
+ Program = pureCalcProgramFactory->GetFactory (factorySettings)-> MakePushStreamProgram (
275
276
TFilterInputSpec (MakeInputSchema (columns, types)),
276
277
TFilterOutputSpec (MakeOutputSchema ()),
277
278
Sql,
@@ -291,8 +292,9 @@ class TJsonFilter::TImpl {
291
292
}
292
293
293
294
private:
294
- TString GenerateSql (const TString& whereFilter) {
295
+ TString GenerateSql (const TString& whereFilter, const IPureCalcProgramFactory::TSettings& factorySettings ) {
295
296
TStringStream str;
297
+ str << " PRAGMA config.flags(\" LLVM\" , \" " << (factorySettings.EnabledLLVM ? " ON" : " OFF" ) << " \" );\n " ;
296
298
str << " $filtered = SELECT * FROM Input " << whereFilter << " ;\n " ;
297
299
298
300
str << " SELECT " << OffsetFieldName << " , Unwrap(Json::SerializeJson(Yson::From(RemoveMembers(TableRow(), [\" " << OffsetFieldName;
@@ -312,8 +314,9 @@ TJsonFilter::TJsonFilter(
312
314
const TVector<TString>& types,
313
315
const TString& whereFilter,
314
316
TCallback callback,
315
- NYql::NPureCalc::IProgramFactoryPtr pureCalcProgramFactory)
316
- : Impl(std::make_unique<TJsonFilter::TImpl>(columns, types, whereFilter, callback, pureCalcProgramFactory)) {
317
+ IPureCalcProgramFactory::TPtr pureCalcProgramFactory,
318
+ const IPureCalcProgramFactory::TSettings& factorySettings)
319
+ : Impl(std::make_unique<TJsonFilter::TImpl>(columns, types, whereFilter, callback, pureCalcProgramFactory, factorySettings)) {
317
320
}
318
321
319
322
TJsonFilter::~TJsonFilter () {
@@ -332,8 +335,9 @@ std::unique_ptr<TJsonFilter> NewJsonFilter(
332
335
const TVector<TString>& types,
333
336
const TString& whereFilter,
334
337
TCallback callback,
335
- NYql::NPureCalc::IProgramFactoryPtr pureCalcProgramFactory) {
336
- return std::unique_ptr<TJsonFilter>(new TJsonFilter (columns, types, whereFilter, callback, pureCalcProgramFactory));
338
+ IPureCalcProgramFactory::TPtr pureCalcProgramFactory,
339
+ const IPureCalcProgramFactory::TSettings& factorySettings) {
340
+ return std::unique_ptr<TJsonFilter>(new TJsonFilter (columns, types, whereFilter, callback, pureCalcProgramFactory, factorySettings));
337
341
}
338
342
339
343
} // namespace NFq
0 commit comments