@@ -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 );;
0 commit comments