From 9b59521509a38914aa39ecb5f06347ea54e35ef9 Mon Sep 17 00:00:00 2001 From: li-judong Date: Mon, 12 Dec 2022 10:40:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgs=5Fdump=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=A4=A7=E5=B0=8F=E5=86=99=E6=95=8F=E6=84=9F?= =?UTF-8?q?=E8=87=AA=E5=A2=9E=E5=88=97=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bin/pg_dump/pg_dump.cpp | 4 +-- .../regress/input/dump_auto_increment.source | 5 ++++ .../regress/output/dump_auto_increment.source | 25 +++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/bin/pg_dump/pg_dump.cpp b/src/bin/pg_dump/pg_dump.cpp index 7deb17049..ba5d8989c 100644 --- a/src/bin/pg_dump/pg_dump.cpp +++ b/src/bin/pg_dump/pg_dump.cpp @@ -22865,8 +22865,8 @@ static void dumpTableAutoIncrement(Archive* fout, PQExpBuffer sqlbuf, TableInfo* appendPQExpBuffer(query, "SELECT CASE WHEN is_called AND last_value < max_value THEN last_value + 1 " " WHEN is_called AND last_value >= max_value THEN max_value " - " ELSE last_value END AS last_value FROM %s.%s", - PQgetvalue(res, 0, 0), PQgetvalue(res, 0, 1)); + " ELSE last_value END AS last_value FROM %s", + fmtQualifiedId(fout, PQgetvalue(res, 0, 0), PQgetvalue(res, 0, 1))); PQclear(res); res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); diff --git a/src/test/regress/input/dump_auto_increment.source b/src/test/regress/input/dump_auto_increment.source index b923dff1b..a24488a32 100644 --- a/src/test/regress/input/dump_auto_increment.source +++ b/src/test/regress/input/dump_auto_increment.source @@ -74,10 +74,15 @@ PARTITION BY RANGE (col_1) SUBPARTITION BY list (col_2) INSERT INTO test_dump_autoinc_range_list VALUES(0,1,'1'); INSERT INTO test_dump_autoinc_range_list VALUES(0,6,'6'); +CREATE TABLE "TEST_DUMP_autoinc_word"("Col1" int auto_increment UNIQUE, col2 int default 1) AUTO_INCREMENT = 10; + \! @abs_bindir@/gs_dump dump_autoinc_db -p @portstring@ -f @abs_bindir@/dump_autoinc_test.tar -F t >/dev/null 2>&1; echo $? \! @abs_bindir@/gs_restore -d restore_autoinc_db -p @portstring@ @abs_bindir@/dump_autoinc_test.tar >/dev/null 2>&1; echo $? \c restore_autoinc_db +-- TEST_DUMP_autoinc_word +\d "TEST_DUMP_autoinc_word" +SELECT pg_get_tabledef('"TEST_DUMP_autoinc_word"'::regclass); -- local temp table was not dumped \d+ test_dump_autoinc_ltmp -- check restored tables diff --git a/src/test/regress/output/dump_auto_increment.source b/src/test/regress/output/dump_auto_increment.source index 55596fc4f..d31afbaf2 100644 --- a/src/test/regress/output/dump_auto_increment.source +++ b/src/test/regress/output/dump_auto_increment.source @@ -84,11 +84,36 @@ NOTICE: CREATE TABLE will create implicit sequence "test_dump_autoinc_range_lis NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_dump_autoinc_range_list_pkey" for table "test_dump_autoinc_range_list" INSERT INTO test_dump_autoinc_range_list VALUES(0,1,'1'); INSERT INTO test_dump_autoinc_range_list VALUES(0,6,'6'); +CREATE TABLE "TEST_DUMP_autoinc_word"("Col1" int auto_increment UNIQUE, col2 int default 1) AUTO_INCREMENT = 10; +NOTICE: CREATE TABLE will create implicit sequence "TEST_DUMP_autoinc_word_Col1_seq" for serial column "TEST_DUMP_autoinc_word.Col1" +NOTICE: CREATE TABLE / UNIQUE will create implicit index "TEST_DUMP_autoinc_word_Col1_key" for table "TEST_DUMP_autoinc_word" \! @abs_bindir@/gs_dump dump_autoinc_db -p @portstring@ -f @abs_bindir@/dump_autoinc_test.tar -F t >/dev/null 2>&1; echo $? 0 \! @abs_bindir@/gs_restore -d restore_autoinc_db -p @portstring@ @abs_bindir@/dump_autoinc_test.tar >/dev/null 2>&1; echo $? 0 \c restore_autoinc_db +-- TEST_DUMP_autoinc_word +\d "TEST_DUMP_autoinc_word" + Table "public.TEST_DUMP_autoinc_word" + Column | Type | Modifiers +--------+---------+------------------------- + Col1 | integer | not null AUTO_INCREMENT + col2 | integer | default 1 +Indexes: + "TEST_DUMP_autoinc_word_Col1_key" UNIQUE CONSTRAINT, btree ("Col1") TABLESPACE pg_default + +SELECT pg_get_tabledef('"TEST_DUMP_autoinc_word"'::regclass); + pg_get_tabledef +------------------------------------------------------------------ + SET search_path = public; + + CREATE TABLE "TEST_DUMP_autoinc_word" ( + + "Col1" integer AUTO_INCREMENT NOT NULL, + + col2 integer DEFAULT 1, + + CONSTRAINT "TEST_DUMP_autoinc_word_Col1_key" UNIQUE ("Col1")+ + ) AUTO_INCREMENT = 10 + + WITH (orientation=row, compression=no); +(1 row) + -- local temp table was not dumped \d+ test_dump_autoinc_ltmp -- check restored tables