#include #include #include #include #include #include #include namespace { class TWorkerHolderOutputSpec: public NYql::NPureCalc::TOutputSpecBase { public: const NYT::TNode& GetSchema() const override { static const NYT::TNode Entity = NYT::TNode::CreateEntity(); return Entity; } }; } // namespace template <> struct NYql::NPureCalc::TOutputSpecTraits { static const constexpr bool IsPartial = false; static const constexpr bool SupportPullListMode = true; using TPullListReturnType = const NYql::TRuntimeSettings*; static TPullListReturnType ConvertPullListWorkerToOutputType( const TWorkerHolderOutputSpec&, NYql::NPureCalc::TWorkerHolder worker) { return &worker->GetGraph().GetContext().RuntimeSettings; } }; Y_UNIT_TEST_SUITE(TestRuntimeSettings) { Y_UNIT_TEST(DefaultRuntimeSettings) { using namespace NYql::NPureCalc; auto factory = MakeProgramFactory(); auto program = factory->MakePullListProgram( TProtobufInputSpec(), TWorkerHolderOutputSpec(), "SELECT X FROM Input", ETranslationMode::SQL); // The worker must use the default runtime settings singleton, not a custom copy. UNIT_ASSERT_EQUAL(program->Apply(EmptyStream()), NYql::NPureCalc::NPrivate::GetDefaultRuntimeSettings().Get()); } } // Y_UNIT_TEST_SUITE(TestRuntimeSettings)