aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/sequence.c19
-rw-r--r--src/test/regress/expected/create_table_like.out28
-rw-r--r--src/test/regress/sql/create_table_like.sql2
3 files changed, 28 insertions, 21 deletions
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index ef3ca8c00b7..dcc0aa536a0 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -1752,12 +1752,19 @@ sequence_options(Oid relid)
elog(ERROR, "cache lookup failed for sequence %u", relid);
pgsform = (Form_pg_sequence) GETSTRUCT(pgstuple);
- options = lappend(options, makeDefElem("cache", (Node *) makeInteger(pgsform->seqcache), -1));
- options = lappend(options, makeDefElem("cycle", (Node *) makeInteger(pgsform->seqcycle), -1));
- options = lappend(options, makeDefElem("increment", (Node *) makeInteger(pgsform->seqincrement), -1));
- options = lappend(options, makeDefElem("maxvalue", (Node *) makeInteger(pgsform->seqmax), -1));
- options = lappend(options, makeDefElem("minvalue", (Node *) makeInteger(pgsform->seqmin), -1));
- options = lappend(options, makeDefElem("start", (Node *) makeInteger(pgsform->seqstart), -1));
+ /* Use makeFloat() for 64-bit integers, like gram.y does. */
+ options = lappend(options,
+ makeDefElem("cache", (Node *) makeFloat(psprintf(INT64_FORMAT, pgsform->seqcache)), -1));
+ options = lappend(options,
+ makeDefElem("cycle", (Node *) makeInteger(pgsform->seqcycle), -1));
+ options = lappend(options,
+ makeDefElem("increment", (Node *) makeFloat(psprintf(INT64_FORMAT, pgsform->seqincrement)), -1));
+ options = lappend(options,
+ makeDefElem("maxvalue", (Node *) makeFloat(psprintf(INT64_FORMAT, pgsform->seqmax)), -1));
+ options = lappend(options,
+ makeDefElem("minvalue", (Node *) makeFloat(psprintf(INT64_FORMAT, pgsform->seqmin)), -1));
+ options = lappend(options,
+ makeDefElem("start", (Node *) makeFloat(psprintf(INT64_FORMAT, pgsform->seqstart)), -1));
ReleaseSysCache(pgstuple);
diff --git a/src/test/regress/expected/create_table_like.out b/src/test/regress/expected/create_table_like.out
index 52ff18c8ca2..8d4543bfe8d 100644
--- a/src/test/regress/expected/create_table_like.out
+++ b/src/test/regress/expected/create_table_like.out
@@ -66,13 +66,13 @@ SELECT * FROM inhg; /* Two records with three columns in order x=x, xx=text, y=y
(2 rows)
DROP TABLE inhg;
-CREATE TABLE test_like_id_1 (a int GENERATED ALWAYS AS IDENTITY, b text);
+CREATE TABLE test_like_id_1 (a bigint GENERATED ALWAYS AS IDENTITY, b text);
\d test_like_id_1
Table "public.test_like_id_1"
- Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+------------------------------
- a | integer | | not null | generated always as identity
- b | text | | |
+ Column | Type | Collation | Nullable | Default
+--------+--------+-----------+----------+------------------------------
+ a | bigint | | not null | generated always as identity
+ b | text | | |
INSERT INTO test_like_id_1 (b) VALUES ('b1');
SELECT * FROM test_like_id_1;
@@ -83,11 +83,11 @@ SELECT * FROM test_like_id_1;
CREATE TABLE test_like_id_2 (LIKE test_like_id_1);
\d test_like_id_2
- Table "public.test_like_id_2"
- Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+---------
- a | integer | | not null |
- b | text | | |
+ Table "public.test_like_id_2"
+ Column | Type | Collation | Nullable | Default
+--------+--------+-----------+----------+---------
+ a | bigint | | not null |
+ b | text | | |
INSERT INTO test_like_id_2 (b) VALUES ('b2');
ERROR: null value in column "a" violates not-null constraint
@@ -100,10 +100,10 @@ SELECT * FROM test_like_id_2; -- identity was not copied
CREATE TABLE test_like_id_3 (LIKE test_like_id_1 INCLUDING IDENTITY);
\d test_like_id_3
Table "public.test_like_id_3"
- Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+------------------------------
- a | integer | | not null | generated always as identity
- b | text | | |
+ Column | Type | Collation | Nullable | Default
+--------+--------+-----------+----------+------------------------------
+ a | bigint | | not null | generated always as identity
+ b | text | | |
INSERT INTO test_like_id_3 (b) VALUES ('b3');
SELECT * FROM test_like_id_3; -- identity was copied and applied
diff --git a/src/test/regress/sql/create_table_like.sql b/src/test/regress/sql/create_table_like.sql
index 32d861621bf..42cad6826b0 100644
--- a/src/test/regress/sql/create_table_like.sql
+++ b/src/test/regress/sql/create_table_like.sql
@@ -37,7 +37,7 @@ INSERT INTO inhg VALUES ('x', 'foo', 'y'); /* fails due to constraint */
SELECT * FROM inhg; /* Two records with three columns in order x=x, xx=text, y=y */
DROP TABLE inhg;
-CREATE TABLE test_like_id_1 (a int GENERATED ALWAYS AS IDENTITY, b text);
+CREATE TABLE test_like_id_1 (a bigint GENERATED ALWAYS AS IDENTITY, b text);
\d test_like_id_1
INSERT INTO test_like_id_1 (b) VALUES ('b1');
SELECT * FROM test_like_id_1;