@@ -2496,6 +2496,90 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
2496
2496
UNIT_ASSERT_STRING_CONTAINS_C (result.GetIssues ().ToString (), " Invalid type for column: Value." , result.GetIssues ().ToString ());
2497
2497
}
2498
2498
}
2499
+
2500
+ Y_UNIT_TEST_TWIN (CreateAsSelectPath, UseTablePathPrefix) {
2501
+ const auto dirPath = UseTablePathPrefix ? " " : " /Root/test/" ;
2502
+ const auto pragma = UseTablePathPrefix ? " PRAGMA TablePathPrefix(\" /Root/test\" );" : " " ;
2503
+
2504
+ NKikimrConfig::TAppConfig appConfig;
2505
+ appConfig.MutableTableServiceConfig ()->SetEnableOlapSink (true );
2506
+ appConfig.MutableTableServiceConfig ()->SetEnableOltpSink (true );
2507
+ appConfig.MutableTableServiceConfig ()->SetEnableCreateTableAs (true );
2508
+ appConfig.MutableTableServiceConfig ()->SetEnablePerStatementQueryExecution (true );
2509
+ auto settings = TKikimrSettings ()
2510
+ .SetAppConfig (appConfig)
2511
+ .SetWithSampleTables (false )
2512
+ .SetEnableTempTables (true )
2513
+ .SetAuthToken (" user0@builtin" );;
2514
+ TKikimrRunner kikimr (settings);
2515
+
2516
+ {
2517
+ auto driverConfig = TDriverConfig ()
2518
+ .SetEndpoint (kikimr.GetEndpoint ())
2519
+ .SetAuthToken (" root@builtin" );
2520
+ auto driver = TDriver (driverConfig);
2521
+ auto schemeClient = NYdb::NScheme::TSchemeClient (driver);
2522
+
2523
+ {
2524
+ auto result = schemeClient.MakeDirectory (" /Root/test" ).ExtractValueSync ();
2525
+ AssertSuccessResult (result);
2526
+ }
2527
+ {
2528
+ NYdb::NScheme::TPermissions permissions (" user0@builtin" ,
2529
+ {" ydb.generic.read" , " ydb.generic.write" }
2530
+ );
2531
+ auto result = schemeClient.ModifyPermissions (" /Root/test" ,
2532
+ NYdb::NScheme::TModifyPermissionsSettings ().AddGrantPermissions(permissions)
2533
+ ).ExtractValueSync();
2534
+ AssertSuccessResult (result);
2535
+ }
2536
+ }
2537
+
2538
+ const TString query = std::format (R"(
2539
+ {1}
2540
+ CREATE TABLE `{0}Source` (
2541
+ Col1 Uint64 NOT NULL,
2542
+ Col2 Int32,
2543
+ PRIMARY KEY (Col1)
2544
+ );
2545
+ )" , dirPath, pragma);
2546
+
2547
+ auto client = kikimr.GetQueryClient ();
2548
+ auto result = client.ExecuteQuery (query, NYdb::NQuery::TTxControl::NoTx ()).ExtractValueSync ();
2549
+ UNIT_ASSERT_C (result.GetStatus () == NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
2550
+
2551
+ {
2552
+ auto prepareResult = client.ExecuteQuery (std::format (R"(
2553
+ {1}
2554
+ REPLACE INTO `{0}Source` (Col1, Col2) VALUES
2555
+ (1u, 1), (100u, 100), (10u, 10);
2556
+ )" , dirPath, pragma), NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
2557
+ UNIT_ASSERT_C (prepareResult.IsSuccess (), prepareResult.GetIssues ().ToString ());
2558
+ }
2559
+
2560
+ {
2561
+ auto prepareResult = client.ExecuteQuery (std::format (R"(
2562
+ {1}
2563
+ CREATE TABLE `{0}Destination1` (
2564
+ PRIMARY KEY (Col1)
2565
+ )
2566
+ AS SELECT Col2 As Col1, Col1 As Col2
2567
+ FROM `{0}Source`;
2568
+ )" , dirPath, pragma), NYdb::NQuery::TTxControl::NoTx ()).ExtractValueSync ();
2569
+ UNIT_ASSERT_C (prepareResult.IsSuccess (), prepareResult.GetIssues ().ToString ());
2570
+ }
2571
+
2572
+ {
2573
+ auto it = client.StreamExecuteQuery (std::format (R"(
2574
+ {1}
2575
+ SELECT Col1, Col2 FROM `{0}Destination1`;
2576
+ )" , dirPath, pragma), NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
2577
+ UNIT_ASSERT_VALUES_EQUAL_C (it.GetStatus (), EStatus::SUCCESS, it.GetIssues ().ToString ());
2578
+ TString output = StreamResultToYson (it);
2579
+ CompareYson (output, R"( [[[1];[1u]];[[10];[10u]];[[100];[100u]]])" );
2580
+ }
2581
+ }
2582
+
2499
2583
}
2500
2584
2501
2585
} // namespace NKqp
0 commit comments