File tree Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -435,4 +435,25 @@ SELECT COUNT(*) FROM public.t;");
435435 UNIT_ASSERT_C (res.Root , " Failed to parse statement, root is nullptr" );
436436 UNIT_ASSERT_STRINGS_EQUAL (res.Root ->ToString (), expectedAst.Root ->ToString ());
437437 }
438+
439+ Y_UNIT_TEST (BlockEngine) {
440+ auto res = PgSqlToYql (" set blockEngine='auto'; select 1;" );
441+ UNIT_ASSERT (res.Root );
442+ UNIT_ASSERT_STRING_CONTAINS (res.Root ->ToString (), " (let world (Configure! world (DataSource 'config) 'BlockEngine 'auto))" );
443+
444+ res = PgSqlToYql (" set Blockengine='force'; select 1;" );
445+ UNIT_ASSERT (res.Root );
446+ UNIT_ASSERT_STRING_CONTAINS (res.Root ->ToString (), " (let world (Configure! world (DataSource 'config) 'BlockEngine 'force))" );
447+
448+ res = PgSqlToYql (" set BlockEngine='disable'; select 1;" );
449+ UNIT_ASSERT (res.Root );
450+ UNIT_ASSERT (!res.Root ->ToString ().Contains (" BlockEngine" ));
451+
452+ res = PgSqlToYql (" set BlockEngine='foo'; select 1;" );
453+ UNIT_ASSERT (!res.Root );
454+ UNIT_ASSERT_EQUAL (res.Issues .Size (), 1 );
455+
456+ auto issue = *(res.Issues .begin ());
457+ UNIT_ASSERT (issue.GetMessage ().Contains (" VariableSetStmt, not supported BlockEngine option value: foo" ));
458+ }
438459}
Original file line number Diff line number Diff line change @@ -5918,3 +5918,28 @@ Y_UNIT_TEST_SUITE(TopicsDDL) {
59185918 )" , false );
59195919 }
59205920}
5921+
5922+ Y_UNIT_TEST_SUITE (BlockEnginePragma) {
5923+ Y_UNIT_TEST (Basic) {
5924+ const TVector<TString> values = {" auto" , " force" , " disable" };
5925+ for (const auto & value : values) {
5926+ const auto query = TStringBuilder () << " pragma Blockengine='" << value << " '; select 1;" ;
5927+ NYql::TAstParseResult res = SqlToYql (query);
5928+ UNIT_ASSERT (res.Root );
5929+
5930+ TVerifyLineFunc verifyLine = [&](const TString& word, const TString& line) {
5931+ Y_UNUSED (word);
5932+ UNIT_ASSERT_STRING_CONTAINS (line, TStringBuilder () << R"( Configure! world (DataSource '"config") '"BlockEngine" '")" << value << " \" " );
5933+ };
5934+
5935+ TWordCountHive elementStat ({" BlockEngine" });
5936+ VerifyProgram (res, elementStat, verifyLine);
5937+ UNIT_ASSERT (elementStat[" BlockEngine" ] == ((value == " disable" ) ? 0 : 1 ));
5938+ }
5939+ }
5940+
5941+ Y_UNIT_TEST (UnknownSetting) {
5942+ ExpectFailWithError (" use plato; pragma BlockEngine='foo';" ,
5943+ " <main>:1:31: Error: Expected `disable|auto|force' argument for: BlockEngine\n " );
5944+ }
5945+ }
You can’t perform that action at this time.
0 commit comments