Skip to content

Commit

Permalink
Merge 368ef14 into bec27f9
Browse files Browse the repository at this point in the history
  • Loading branch information
shnikd committed Mar 20, 2024
2 parents bec27f9 + 368ef14 commit cfae648
Showing 1 changed file with 163 additions and 0 deletions.
163 changes: 163 additions & 0 deletions ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1043,6 +1043,169 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
}
}

Y_UNIT_TEST(AlterTempTable) {
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnablePreparedDdl(true);
auto setting = NKikimrKqp::TKqpSetting();
auto serverSettings = TKikimrSettings()
.SetAppConfig(appConfig)
.SetKqpSettings({setting});
TKikimrRunner kikimr(
serverSettings.SetWithSampleTables(false).SetEnableTempTables(true));
auto clientConfig = NGRpcProxy::TGRpcClientConfig(kikimr.GetEndpoint());
auto client = kikimr.GetQueryClient();
auto settings = NYdb::NQuery::TExecuteQuerySettings()
.StatsMode(NYdb::NQuery::EStatsMode::Basic);
{
auto session = client.GetSession().GetValueSync().GetSession();
auto id = session.GetId();

{
const auto query = Q_(R"(
--!syntax_v1
CREATE TEMP TABLE Temp (
Key Int32 NOT NULL,
Value Int32,
PRIMARY KEY (Key)
);)");

auto result =
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
}

{
const auto query = Q_(R"(
--!syntax_v1
ALTER TABLE Temp DROP COLUMN Value;
)");
auto result =
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
}

{
const auto query = Q_(R"(
--!syntax_v1
DROP TABLE Temp;
)");

auto result =
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
}

{
const auto query = Q_(R"(
--!syntax_v1
CREATE TEMP TABLE Temp (
Key Int32 NOT NULL,
Value Int32,
PRIMARY KEY (Key)
);)");

auto result =
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);

auto resultInsert = session.ExecuteQuery(R"(
UPSERT INTO Temp (Key, Value) VALUES (1, 1);
)", NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(
resultInsert.GetStatus(), EStatus::SUCCESS, resultInsert.GetIssues().ToString());
}

{
const auto query = Q_(R"(
--!syntax_v1
SELECT * FROM Temp;
)");

auto result = session.ExecuteQuery(
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);

UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
CompareYson(R"([[1;[1]]])", FormatResultSetYson(result.GetResultSet(0)));
}

{
auto result = session.ExecuteQuery(R"(
ALTER TABLE Temp DROP COLUMN Value;
)", NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
}

{
const auto query = Q_(R"(
--!syntax_v1
SELECT * FROM Temp;
)");

auto result = session.ExecuteQuery(
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);

UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
CompareYson(R"([[1]])", FormatResultSetYson(result.GetResultSet(0)));
}

{
const auto query = Q_(R"(
--!syntax_v1
DROP TABLE Temp;
)");

auto result =
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
}

{
const auto querySelect = Q_(R"(
--!syntax_v1
SELECT * FROM Temp;
)");

auto resultSelect = client.ExecuteQuery(
querySelect, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT(!resultSelect.IsSuccess());
}

bool allDoneOk = true;
NTestHelpers::CheckDelete(clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);

UNIT_ASSERT(allDoneOk);
}

{
const auto querySelect = Q_(R"(
--!syntax_v1
SELECT * FROM Temp;
)");

auto resultSelect = client.ExecuteQuery(
querySelect, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT(!resultSelect.IsSuccess());
}
}

Y_UNIT_TEST(TempTablesDrop) {
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnablePreparedDdl(true);
Expand Down

0 comments on commit cfae648

Please sign in to comment.