On Wed, Aug 28, 2024 at 08:28:03PM -0500, Nathan Bossart wrote: > On Thu, Aug 29, 2024 at 08:00:52AM +0900, Michael Paquier wrote: >> Indeed, pg_sequence_read_tuple() would not reflect the reality, some >> ideas: >> - pg_sequence_read_data >> - pg_sequence_get_data >> - pg_sequence_data >> - More consistent with other catalog functions: pg_get_sequence_data, >> as we have already in the tree a lot of pg_get_* functions. > > pg_get_sequence_data() sounds fine to me.
Okay, here is a v2 of the patch using this name for the function. -- Michael
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 4abc6d9526..85f42be1b3 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -3330,11 +3330,11 @@ prorettype => 'int8', proargtypes => 'regclass', prosrc => 'pg_sequence_last_value' }, { oid => '9876', descr => 'return sequence tuple, for use by pg_dump', - proname => 'pg_sequence_read_tuple', provolatile => 'v', proparallel => 'u', + proname => 'pg_get_sequence_data', provolatile => 'v', proparallel => 'u', prorettype => 'record', proargtypes => 'regclass', - proallargtypes => '{regclass,int8,int8,bool}', proargmodes => '{i,o,o,o}', - proargnames => '{sequence_oid,last_value,log_cnt,is_called}', - prosrc => 'pg_sequence_read_tuple' }, + proallargtypes => '{regclass,int8,bool}', proargmodes => '{i,o,o}', + proargnames => '{sequence_oid,last_value,is_called}', + prosrc => 'pg_get_sequence_data' }, { oid => '275', descr => 'return the next oid for a system table', proname => 'pg_nextoid', provolatile => 'v', proparallel => 'u', diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 8c1131f020..5e41088d01 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -1781,23 +1781,22 @@ pg_sequence_parameters(PG_FUNCTION_ARGS) * without needing to individually query each sequence relation. */ Datum -pg_sequence_read_tuple(PG_FUNCTION_ARGS) +pg_get_sequence_data(PG_FUNCTION_ARGS) { +#define SEQUENCE_READ_TUPLE_COLS 2 Oid relid = PG_GETARG_OID(0); SeqTable elm; Relation seqrel; - Datum values[SEQ_COL_LASTCOL] = {0}; - bool isnull[SEQ_COL_LASTCOL] = {0}; + Datum values[SEQUENCE_READ_TUPLE_COLS] = {0}; + bool isnull[SEQUENCE_READ_TUPLE_COLS] = {0}; TupleDesc resultTupleDesc; HeapTuple resultHeapTuple; Datum result; - resultTupleDesc = CreateTemplateTupleDesc(SEQ_COL_LASTCOL); + resultTupleDesc = CreateTemplateTupleDesc(SEQUENCE_READ_TUPLE_COLS); TupleDescInitEntry(resultTupleDesc, (AttrNumber) 1, "last_value", INT8OID, -1, 0); - TupleDescInitEntry(resultTupleDesc, (AttrNumber) 2, "log_cnt", - INT8OID, -1, 0); - TupleDescInitEntry(resultTupleDesc, (AttrNumber) 3, "is_called", + TupleDescInitEntry(resultTupleDesc, (AttrNumber) 2, "is_called", BOOLOID, -1, 0); resultTupleDesc = BlessTupleDesc(resultTupleDesc); @@ -1818,8 +1817,7 @@ pg_sequence_read_tuple(PG_FUNCTION_ARGS) seq = read_seq_tuple(seqrel, &buf, &seqtuple); values[0] = Int64GetDatum(seq->last_value); - values[1] = Int64GetDatum(seq->log_cnt); - values[2] = BoolGetDatum(seq->is_called); + values[1] = BoolGetDatum(seq->is_called); UnlockReleaseBuffer(buf); } @@ -1831,6 +1829,7 @@ pg_sequence_read_tuple(PG_FUNCTION_ARGS) resultHeapTuple = heap_form_tuple(resultTupleDesc, values, isnull); result = HeapTupleGetDatum(resultHeapTuple); PG_RETURN_DATUM(result); +#undef SEQUENCE_READ_TUPLE_COLS } diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index b6e01d3d29..f7720ad53b 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -17381,7 +17381,7 @@ collectSequences(Archive *fout) * versions, but for now it seems unlikely to be worth it. * * Since version 18, we can gather the sequence data in this query with - * pg_sequence_read_tuple(), but we only do so for non-schema-only dumps. + * pg_get_sequence_data(), but we only do so for non-schema-only dumps. */ if (fout->remoteVersion < 100000) return; @@ -17401,7 +17401,7 @@ collectSequences(Archive *fout) "seqcache, seqcycle, " "last_value, is_called " "FROM pg_catalog.pg_sequence, " - "pg_sequence_read_tuple(seqrelid) " + "pg_get_sequence_data(seqrelid) " "ORDER BY seqrelid;"; res = ExecuteSqlQuery(fout, query, PGRES_TUPLES_OK); diff --git a/src/test/regress/expected/sequence.out b/src/test/regress/expected/sequence.out index e749c4574e..15925d99c8 100644 --- a/src/test/regress/expected/sequence.out +++ b/src/test/regress/expected/sequence.out @@ -839,11 +839,11 @@ SELECT nextval('test_seq1'); 3 (1 row) --- pg_sequence_read_tuple -SELECT * FROM pg_sequence_read_tuple('test_seq1'); - last_value | log_cnt | is_called -------------+---------+----------- - 10 | 32 | t +-- pg_get_sequence_data +SELECT * FROM pg_get_sequence_data('test_seq1'); + last_value | is_called +------------+----------- + 10 | t (1 row) DROP SEQUENCE test_seq1; diff --git a/src/test/regress/sql/sequence.sql b/src/test/regress/sql/sequence.sql index ea447938ae..2c220b6074 100644 --- a/src/test/regress/sql/sequence.sql +++ b/src/test/regress/sql/sequence.sql @@ -413,7 +413,7 @@ SELECT nextval('test_seq1'); SELECT nextval('test_seq1'); SELECT nextval('test_seq1'); --- pg_sequence_read_tuple -SELECT * FROM pg_sequence_read_tuple('test_seq1'); +-- pg_get_sequence_data +SELECT * FROM pg_get_sequence_data('test_seq1'); DROP SEQUENCE test_seq1;
signature.asc
Description: PGP signature