aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBulat Gayazov <bylatgr@gmail.com>2023-10-17 07:24:42 +0300
committerbrgayazov <bulat@ydb.tech>2023-10-17 07:40:01 +0300
commit09ebdf72fbd10c00e6f3c2db0d686a8ef17d8c59 (patch)
tree0facc5af3bda23cc7a38f7cb5b2ccf5e4c65120a
parenta2b4b55fa00ab6fb08251f0c723ca88a1f2d165e (diff)
downloadydb-09ebdf72fbd10c00e6f3c2db0d686a8ef17d8c59.tar.gz
Fixed bug with wrong primary key in ydb tools pg-convert command
Fixed bug with wrong primary key in ydb tools pg-convert command Pull Request resolved: https://github.com/ydb-platform/ydb/pull/399
-rw-r--r--ydb/public/lib/ydb_cli/common/pg_dump_parser.cpp1
-rw-r--r--ydb/public/lib/ydb_cli/common/pg_dump_parser_ut.cpp8
2 files changed, 7 insertions, 2 deletions
diff --git a/ydb/public/lib/ydb_cli/common/pg_dump_parser.cpp b/ydb/public/lib/ydb_cli/common/pg_dump_parser.cpp
index 634d3dc372..d0e17dedef 100644
--- a/ydb/public/lib/ydb_cli/common/pg_dump_parser.cpp
+++ b/ydb/public/lib/ydb_cli/common/pg_dump_parser.cpp
@@ -164,6 +164,7 @@ void TPgDumpParser::ApplyToken(TSQLCommandNode* root) {
void TPgDumpParser::PrimaryKeyCheck() {
if (IsPrimaryKey) {
PrimaryKeyByTable[TableName] = PrimaryKeyName;
+ IsPrimaryKey = false;
}
}
diff --git a/ydb/public/lib/ydb_cli/common/pg_dump_parser_ut.cpp b/ydb/public/lib/ydb_cli/common/pg_dump_parser_ut.cpp
index 3b5d9bf233..e51b3d1d4c 100644
--- a/ydb/public/lib/ydb_cli/common/pg_dump_parser_ut.cpp
+++ b/ydb/public/lib/ydb_cli/common/pg_dump_parser_ut.cpp
@@ -96,7 +96,9 @@ Y_UNIT_TEST_SUITE(PgDumpParserTests) {
"ALTER TABLE ONLY public.pgbench_accounts\n"
" ADD CONSTRAINT pgbench_accounts_pkey PRIMARY KEY (aid);\n"
"ALTER TABLE ONLY public.pgbench_branches\n"
- " ADD CONSTRAINT pgbench_branches_pkey PRIMARY KEY (bid);\n";
+ " ADD CONSTRAINT pgbench_branches_pkey PRIMARY KEY (bid);\n"
+ "ALTER TABLE ONLY public.pgbench_accounts\n"
+ " ADD CONSTRAINT c_widget_field_6 FOREIGN KEY (value_sysmapid) REFERENCES public.sysmaps(sysmapid) ON DELETE CASCADE;\n";
TString result =
"CREATE TABLE pgbench_accounts (\n"
" aid integer NOT NULL,\n"
@@ -124,7 +126,9 @@ Y_UNIT_TEST_SUITE(PgDumpParserTests) {
"-- ALTER TABLE ONLY public.pgbench_accounts\n"
"-- ADD CONSTRAINT pgbench_accounts_pkey PRIMARY KEY (aid);\n"
"-- ALTER TABLE ONLY public.pgbench_branches\n"
- "-- ADD CONSTRAINT pgbench_branches_pkey PRIMARY KEY (bid);\n";
+ "-- ADD CONSTRAINT pgbench_branches_pkey PRIMARY KEY (bid);\n"
+ "-- ALTER TABLE ONLY public.pgbench_accounts\n"
+ "-- ADD CONSTRAINT c_widget_field_6 FOREIGN KEY (value_sysmapid) REFERENCES public.sysmaps(sysmapid) ON DELETE CASCADE;\n";
UNIT_ASSERT_EQUAL(ParseDump(data), result);
UNIT_ASSERT_EQUAL(ParseDumpFixedString(data), result);
}