Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
shnikd committed Mar 20, 2024
1 parent 8429899 commit 6454f59
Show file tree
Hide file tree
Showing 2 changed files with 236 additions and 0 deletions.
161 changes: 161 additions & 0 deletions ydb/core/kqp/ut/pg/kqp_pg_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2483,6 +2483,167 @@ Y_UNIT_TEST_SUITE(KqpPg) {
}
}

Y_UNIT_TEST(AlterTempTables) {
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()
.Syntax(NYdb::NQuery::ESyntax::Pg)
.StatsMode(NYdb::NQuery::EStatsMode::Basic);
{
auto session = client.GetSession().GetValueSync().GetSession();
auto id = session.GetId();
{
const auto query = Q_(R"(
--!syntax_pg
CREATE TABLE PgTemp (
key int2 PRIMARY KEY,
value int2))");

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 result = session.ExecuteSchemeQuery(R"(
ALTER TABLE PgTemp 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_pg
DROP TABLE PgTemp;
)");

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_pg
CREATE TABLE PgTemp (
key int2 PRIMARY KEY,
value int2))");

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"(
INSERT INTO PgTemp 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_pg
SELECT * FROM PgTemp;
)");

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.ExecuteSchemeQuery(R"(
ALTER TABLE PgTemp 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_pg
SELECT * FROM PgTemp;
)");

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_pg
DROP TABLE PgTemp;
)");

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_pg
SELECT * FROM PgTemp;
)");

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_pg
SELECT * FROM PgTemp;
)");

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

Y_UNIT_TEST(ValuesInsert) {
TKikimrRunner kikimr(NKqp::TKikimrSettings().SetWithSampleTables(false));
auto testSingleType = [&kikimr] (const TPgTypeTestSpec& spec) {
Expand Down
75 changes: 75 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,81 @@ 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 session = client.GetSession().GetValueSync().GetSession();
auto id = session.GetId();

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

auto result = session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx()).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
}

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

auto result = session.ExecuteQuery(
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
}

{
auto result = session.ExecuteSchemeQuery(R"(
ALTER TABLE Temp RENAME TO TempAlter;
)", NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
}

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

auto result = session.ExecuteQuery(
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
}

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 6454f59

Please sign in to comment.