Skip to content

Commit 92fcf62

Browse files
authored
Merge 363d6a3 into c0a403c
2 parents c0a403c + 363d6a3 commit 92fcf62

13 files changed

+789
-1
lines changed

ydb/core/kqp/ut/pg/kqp_pg_ut.cpp

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,6 +1698,136 @@ Y_UNIT_TEST_SUITE(KqpPg) {
16981698
}
16991699
}
17001700

1701+
Y_UNIT_TEST(CopyTableSerialColumns) {
1702+
TKikimrRunner kikimr(NKqp::TKikimrSettings().SetWithSampleTables(false).SetEnableNotNullDataColumns(true));
1703+
auto client = kikimr.GetTableClient();
1704+
auto session = client.CreateSession().GetValueSync().GetSession();
1705+
{
1706+
const auto query = Q_(R"(
1707+
--!syntax_pg
1708+
CREATE TABLE PgSerial (
1709+
key serial PRIMARY KEY,
1710+
value int2
1711+
))");
1712+
1713+
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
1714+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1715+
}
1716+
1717+
{
1718+
const auto query = Q_(R"(
1719+
--!syntax_pg
1720+
INSERT INTO PgSerial (value) values (1);
1721+
)");
1722+
1723+
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1724+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1725+
}
1726+
1727+
{
1728+
const auto result = session.CopyTable("/Root/PgSerial", "/Root/copy").GetValueSync();
1729+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
1730+
1731+
auto desc = session.DescribeTable("/Root/copy").ExtractValueSync();
1732+
UNIT_ASSERT_C(desc.IsSuccess(), desc.GetIssues().ToString());
1733+
}
1734+
1735+
{
1736+
const auto query = Q_(R"(
1737+
--!syntax_pg
1738+
SELECT * FROM copy;
1739+
)");
1740+
1741+
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1742+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
1743+
1744+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
1745+
CompareYson(R"(
1746+
[["1";"1"]]
1747+
)", FormatResultSetYson(result.GetResultSet(0)));
1748+
}
1749+
1750+
{
1751+
const auto query = Q_(R"(
1752+
--!syntax_pg
1753+
INSERT INTO copy (value) values (1);
1754+
)");
1755+
1756+
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1757+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1758+
}
1759+
1760+
{
1761+
const auto query = Q_(R"(
1762+
--!syntax_pg
1763+
SELECT * FROM copy;
1764+
)");
1765+
1766+
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1767+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
1768+
1769+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
1770+
CompareYson(R"(
1771+
[["1";"1"];["2";"1"]]
1772+
)", FormatResultSetYson(result.GetResultSet(0)));
1773+
}
1774+
1775+
{
1776+
const auto query = Q_(R"(
1777+
--!syntax_pg
1778+
SELECT * FROM PgSerial;
1779+
)");
1780+
1781+
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1782+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
1783+
1784+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
1785+
CompareYson(R"(
1786+
[["1";"1"]]
1787+
)", FormatResultSetYson(result.GetResultSet(0)));
1788+
}
1789+
1790+
{
1791+
const auto query = Q_(R"(
1792+
--!syntax_pg
1793+
INSERT INTO PgSerial (value) values (1);
1794+
)");
1795+
1796+
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1797+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1798+
}
1799+
1800+
{
1801+
const auto query = Q_(R"(
1802+
--!syntax_pg
1803+
SELECT * FROM copy;
1804+
)");
1805+
1806+
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1807+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
1808+
1809+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
1810+
CompareYson(R"(
1811+
[["1";"1"];["2";"1"]]
1812+
)", FormatResultSetYson(result.GetResultSet(0)));
1813+
}
1814+
1815+
{
1816+
const auto query = Q_(R"(
1817+
--!syntax_pg
1818+
SELECT * FROM PgSerial;
1819+
)");
1820+
1821+
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1822+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
1823+
1824+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
1825+
CompareYson(R"(
1826+
[["1";"1"];["2";"1"]]
1827+
)", FormatResultSetYson(result.GetResultSet(0)));
1828+
}
1829+
}
1830+
17011831
Y_UNIT_TEST(CreateIndex) {
17021832
NKikimrConfig::TAppConfig appConfig;
17031833
appConfig.MutableTableServiceConfig()->SetEnablePreparedDdl(true);;

ydb/core/protos/counters_schemeshard.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ enum ESimpleCounters {
195195
COUNTER_IN_FLIGHT_OPS_TxDropView = 157 [(CounterOpts) = {Name: "InFlightOps/DropView"}];
196196

197197
COUNTER_GRAPHSHARD_COUNT = 158 [(CounterOpts) = {Name: "GraphShards"}];
198+
199+
COUNTER_IN_FLIGHT_OPS_TxCopySequence = 159 [(CounterOpts) = {Name: "InFlightOps/CopySequence"}];
198200
}
199201

200202
enum ECumulativeCounters {
@@ -315,6 +317,7 @@ enum ECumulativeCounters {
315317
COUNTER_FINISHED_OPS_TxCreateView = 95 [(CounterOpts) = {Name: "FinishedOps/CreateView"}];
316318
COUNTER_FINISHED_OPS_TxDropView = 96 [(CounterOpts) = {Name: "FinishedOps/DropView"}];
317319
COUNTER_FINISHED_OPS_TxAlterView = 97 [(CounterOpts) = {Name: "FinishedOps/AlterView"}];
320+
COUNTER_FINISHED_OPS_TxCopySequence = 98 [(CounterOpts) = {Name: "FinishedOps/TxCopySequence"}];
318321
}
319322

320323
enum EPercentileCounters {

ydb/core/protos/flat_scheme_op.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,6 +1295,7 @@ message TSequenceDescription {
12951295
optional uint64 Cache = 8; // number of items to cache, defaults to 1
12961296
optional sint64 Increment = 9; // increment at each call, defaults to 1
12971297
optional bool Cycle = 10; // true when cycle on overflow is allowed
1298+
optional string CopyFromSequence = 11; // for copy sequence
12981299
}
12991300

13001301
message TSequenceSharding {

ydb/core/tx/schemeshard/schemeshard__operation.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,8 @@ ISubOperation::TPtr TOperation::RestorePart(TTxState::ETxType txType, TTxState::
10331033
Y_ABORT("TODO: implement");
10341034
case TTxState::ETxType::TxDropSequence:
10351035
return CreateDropSequence(NextPartId(), txState);
1036+
case TTxState::ETxType::TxCopySequence:
1037+
return CreateCopySequence(NextPartId(), txState);
10361038

10371039
case TTxState::ETxType::TxFillIndex:
10381040
Y_ABORT("deprecated");

0 commit comments

Comments
 (0)