@@ -2483,6 +2483,167 @@ Y_UNIT_TEST_SUITE(KqpPg) {
2483
2483
}
2484
2484
}
2485
2485
2486
+ Y_UNIT_TEST (AlterTempTables) {
2487
+ NKikimrConfig::TAppConfig appConfig;
2488
+ appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
2489
+ auto setting = NKikimrKqp::TKqpSetting ();
2490
+ auto serverSettings = TKikimrSettings ()
2491
+ .SetAppConfig (appConfig)
2492
+ .SetKqpSettings ({setting});
2493
+ TKikimrRunner kikimr (
2494
+ serverSettings.SetWithSampleTables (false ).SetEnableTempTables (true ));
2495
+ auto clientConfig = NGRpcProxy::TGRpcClientConfig (kikimr.GetEndpoint ());
2496
+ auto client = kikimr.GetQueryClient ();
2497
+
2498
+ auto settings = NYdb::NQuery::TExecuteQuerySettings ()
2499
+ .Syntax (NYdb::NQuery::ESyntax::Pg)
2500
+ .StatsMode (NYdb::NQuery::EStatsMode::Basic);
2501
+ {
2502
+ auto session = client.GetSession ().GetValueSync ().GetSession ();
2503
+ auto id = session.GetId ();
2504
+ {
2505
+ const auto query = Q_ (R"(
2506
+ --!syntax_pg
2507
+ CREATE TABLE PgTemp (
2508
+ key int2 PRIMARY KEY,
2509
+ value int2))" );
2510
+
2511
+ auto result =
2512
+ session.ExecuteQuery (query, NYdb::NQuery::TTxControl::NoTx (), settings).ExtractValueSync ();
2513
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
2514
+ auto stats = NYdb::TProtoAccessor::GetProto (*result.GetStats ());
2515
+ UNIT_ASSERT_VALUES_EQUAL (stats.compilation ().from_cache (), false );
2516
+ }
2517
+
2518
+ {
2519
+ auto result = session.ExecuteSchemeQuery (R"(
2520
+ ALTER TABLE PgTemp DROP COLUMN value;
2521
+ )" , NYdb::NQuery::TTxControl::NoTx (), settings).ExtractValueSync ();
2522
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
2523
+ auto stats = NYdb::TProtoAccessor::GetProto (*result.GetStats ());
2524
+ UNIT_ASSERT_VALUES_EQUAL (stats.compilation ().from_cache (), false );
2525
+ }
2526
+
2527
+ {
2528
+ const auto query = Q_ (R"(
2529
+ --!syntax_pg
2530
+ DROP TABLE PgTemp;
2531
+ )" );
2532
+
2533
+ auto result =
2534
+ session.ExecuteQuery (query, NYdb::NQuery::TTxControl::NoTx (), settings).ExtractValueSync ();
2535
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
2536
+ auto stats = NYdb::TProtoAccessor::GetProto (*result.GetStats ());
2537
+ UNIT_ASSERT_VALUES_EQUAL (stats.compilation ().from_cache (), false );
2538
+ }
2539
+
2540
+ {
2541
+ const auto query = Q_ (R"(
2542
+ --!syntax_pg
2543
+ CREATE TABLE PgTemp (
2544
+ key int2 PRIMARY KEY,
2545
+ value int2))" );
2546
+
2547
+ auto result =
2548
+ session.ExecuteQuery (query, NYdb::NQuery::TTxControl::NoTx (), settings).ExtractValueSync ();
2549
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
2550
+ auto stats = NYdb::TProtoAccessor::GetProto (*result.GetStats ());
2551
+ UNIT_ASSERT_VALUES_EQUAL (stats.compilation ().from_cache (), false );
2552
+
2553
+ auto resultInsert = session.ExecuteQuery (R"(
2554
+ INSERT INTO PgTemp VALUES(1, 1);
2555
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx (), settings).ExtractValueSync ();
2556
+ UNIT_ASSERT_VALUES_EQUAL_C (
2557
+ resultInsert.GetStatus (), EStatus::SUCCESS, resultInsert.GetIssues ().ToString ());
2558
+ }
2559
+
2560
+ {
2561
+ const auto query = Q_ (R"(
2562
+ --!syntax_pg
2563
+ SELECT * FROM PgTemp;
2564
+ )" );
2565
+
2566
+ auto result = session.ExecuteQuery (
2567
+ query, NYdb::NQuery::TTxControl::BeginTx ().CommitTx (), settings).ExtractValueSync ();
2568
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
2569
+ auto stats = NYdb::TProtoAccessor::GetProto (*result.GetStats ());
2570
+ UNIT_ASSERT_VALUES_EQUAL (stats.compilation ().from_cache (), false );
2571
+
2572
+ UNIT_ASSERT_C (!result.GetResultSets ().empty (), " results are empty" );
2573
+ CompareYson (R"(
2574
+ [["1";"1"]]
2575
+ )" , FormatResultSetYson (result.GetResultSet (0 )));
2576
+ }
2577
+
2578
+ {
2579
+ auto result = session.ExecuteSchemeQuery (R"(
2580
+ ALTER TABLE PgTemp DROP COLUMN value;
2581
+ )" , NYdb::NQuery::TTxControl::NoTx (), settings).ExtractValueSync ();
2582
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
2583
+ auto stats = NYdb::TProtoAccessor::GetProto (*result.GetStats ());
2584
+ UNIT_ASSERT_VALUES_EQUAL (stats.compilation ().from_cache (), false );
2585
+ }
2586
+
2587
+ {
2588
+ const auto query = Q_ (R"(
2589
+ --!syntax_pg
2590
+ SELECT * FROM PgTemp;
2591
+ )" );
2592
+
2593
+ auto result = session.ExecuteQuery (
2594
+ query, NYdb::NQuery::TTxControl::BeginTx ().CommitTx (), settings).ExtractValueSync ();
2595
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
2596
+ auto stats = NYdb::TProtoAccessor::GetProto (*result.GetStats ());
2597
+ UNIT_ASSERT_VALUES_EQUAL (stats.compilation ().from_cache (), false );
2598
+
2599
+ UNIT_ASSERT_C (!result.GetResultSets ().empty (), " results are empty" );
2600
+ CompareYson (R"(
2601
+ [["1"]]
2602
+ )" , FormatResultSetYson (result.GetResultSet (0 )));
2603
+ }
2604
+
2605
+ {
2606
+ const auto query = Q_ (R"(
2607
+ --!syntax_pg
2608
+ DROP TABLE PgTemp;
2609
+ )" );
2610
+
2611
+ auto result =
2612
+ session.ExecuteQuery (query, NYdb::NQuery::TTxControl::NoTx (), settings).ExtractValueSync ();
2613
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
2614
+ auto stats = NYdb::TProtoAccessor::GetProto (*result.GetStats ());
2615
+ UNIT_ASSERT_VALUES_EQUAL (stats.compilation ().from_cache (), false );
2616
+ }
2617
+
2618
+ {
2619
+ const auto querySelect = Q_ (R"(
2620
+ --!syntax_pg
2621
+ SELECT * FROM PgTemp;
2622
+ )" );
2623
+
2624
+ auto resultSelect = client.ExecuteQuery (
2625
+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
2626
+ UNIT_ASSERT (!resultSelect.IsSuccess ());
2627
+ }
2628
+
2629
+ bool allDoneOk = true ;
2630
+ NTestHelpers::CheckDelete (clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);
2631
+
2632
+ UNIT_ASSERT (allDoneOk);
2633
+ }
2634
+
2635
+ {
2636
+ const auto querySelect = Q_ (R"(
2637
+ --!syntax_pg
2638
+ SELECT * FROM PgTemp;
2639
+ )" );
2640
+
2641
+ auto resultSelect = client.ExecuteQuery (
2642
+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
2643
+ UNIT_ASSERT (!resultSelect.IsSuccess ());
2644
+ }
2645
+ }
2646
+
2486
2647
Y_UNIT_TEST (ValuesInsert) {
2487
2648
TKikimrRunner kikimr (NKqp::TKikimrSettings ().SetWithSampleTables (false ));
2488
2649
auto testSingleType = [&kikimr] (const TPgTypeTestSpec& spec) {
0 commit comments