public inbox for [email protected]  
help / color / mirror / Atom feed
From: Michael Paquier <[email protected]>
To: Tomas Vondra <[email protected]>
Cc: Peter Smith <[email protected]>
Cc: Postgres hackers <[email protected]>
Subject: Re: Sequence Access Methods, round two
Date: Tue, 12 Mar 2024 08:44:34 +0900
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
	<[email protected]>
	<CAHut+Ps27m0bCmmPYNXC282phpm1vkS+_kmHRR=mKHDuJd0C9Q@mail.gmail.com>
	<[email protected]>
	<[email protected]>
	<[email protected]>

On Tue, Feb 27, 2024 at 10:27:13AM +0900, Michael Paquier wrote:
> On Thu, Feb 22, 2024 at 05:36:00PM +0100, Tomas Vondra wrote:
>> 0001
>> ------
>> 
>> I think this bit in pg_proc.dat is not quite right:
>> 
>>   proallargtypes => '{regclass,bool,int8}', proargmodes => '{i,o,o}',
>>   proargnames => '{seqname,is_called,last_value}',
>> 
>> the first argument should not be "seqname" but rather "seqid".
> 
> Ah, right.  There are not many system functions that use regclass as
> arguments, but the existing ones refer more to IDs, not names.

This patch set is not going to be merged for this release, so I am
going to move it to the next commit fest to continue the discussion in
v18~.

Anyway, there is one piece of this patch set that I think has a lot of
value outside of the discussion with access methods, which is to
redesign pg_sequence_last_value so as it returns a (last_value,
is_called) tuple rather than a (last_value).  This has the benefit of
switching pg_dump to use this function rather than relying on a scan
of the heap table used by a sequence to retrieve the state of a
sequence dumped.  This is the main diff:
-    appendPQExpBuffer(query,
-                      "SELECT last_value, is_called FROM %s",
-                      fmtQualifiedDumpable(tbinfo));
+    /*
+     * In versions 17 and up, pg_sequence_last_value() has been switched to
+     * return a tuple with last_value and is_called.
+     */
+    if (fout->remoteVersion >= 170000)
+        appendPQExpBuffer(query,
+                          "SELECT last_value, is_called "
+                          "FROM pg_sequence_last_value('%s')",
+                          fmtQualifiedDumpable(tbinfo));
+    else
+        appendPQExpBuffer(query,
+                          "SELECT last_value, is_called FROM %s",
+                          fmtQualifiedDumpable(tbinfo));

Are there any objections to that?  pg_sequence_last_value() is
something that we've only been relying on internally for the catalog 
pg_sequences.
--
Michael


Attachments:

  [application/pgp-signature] signature.asc (833B, ../[email protected]/2-signature.asc)
  download

view thread (8+ messages)

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected]
  Subject: Re: Sequence Access Methods, round two
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox