On Wed, Nov 23, 2022 at 11:06 PM Kirk Wolak <[email protected]> wrote:
> On Tue, Nov 22, 2022 at 11:43 PM David G. Johnston <
> [email protected]> wrote:
>
>> On Tue, Nov 22, 2022 at 8:42 PM Kirk Wolak <[email protected]> wrote:
>>
>>>
>>> ..
>> The wiki is an excellent place to prototype and coordinate. Beyond that,
>> this idea falls outside what should be discussed on this thread. Here,
>> let's either patch the docs with some examples, or not.
>>
>> David J.
>>
>
> David, as requested. I took this page, and created examples in each row
> of each function.
> I took a little liberty to normalize the warning about the error message
> between the last 2 functions (currval()/lastval()).
> I also decorated the comments with -- prefix (because I HATE not being
> able to quickly copy code and paste and use it).
> Also, I added a CREATE SEQUENCE in each block, so that the resulting code
> will work if you cut/paste it in.
> [Who knows, eventually we could add CSS that adds the copy and maybe an
> Open in PGFiddle someday]
>
> Now I edited this as pure sgml. I have no idea how to make this into html
> to view. Do you guys use specific tooling?
>
> Have a look. Cut it to shreds. But I believe this is functional and
> informative.
>
> Regards Kirk
>
Apologies, I am new to the tools and this approach. I just got the
makefile working for the documentation.
When I got it working, I tested copying/pasting each chunk. And caught an
error.
Here is the updated version.
Regards Kirk
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 82fba48d5f..ee36ba8690 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -17625,6 +17625,12 @@ $.* ? (@ like_regex "^\\d+$")
command.
</para>
<para>
+<programlisting>
+CREATE SEQUENCE myseq;
+SELECT nextval('myseq'::regclass); <lineannotation>-- returns
1</lineannotation>
+</programlisting>
+ </para>
+ <para>
This function requires <literal>USAGE</literal>
or <literal>UPDATE</literal> privilege on the sequence.
</para></entry>
@@ -17657,11 +17663,12 @@ $.* ? (@ like_regex "^\\d+$")
Furthermore, the value reported by <function>currval</function> is not
changed in this case. For example,
<programlisting>
-SELECT setval('myseq', 42); <lineannotation>Next
<function>nextval</function> will return 43</lineannotation>
-SELECT setval('myseq', 42, true); <lineannotation>Same as
above</lineannotation>
-SELECT setval('myseq', 42, false); <lineannotation>Next
<function>nextval</function> will return 42</lineannotation>
+CREATE SEQUENCE myseq;
+SELECT setval('myseq', 42); <lineannotation>-- The next
<function>nextval</function>('myseq') will return 43</lineannotation>
+SELECT setval('myseq', 42, true); <lineannotation>-- Same as
above</lineannotation>
+SELECT setval('myseq', 42, false); <lineannotation>-- The next
<function>nextval</function>('myseq') will return 42</lineannotation>
</programlisting>
- The result returned by <function>setval</function> is just the value
of its
+ The result returned by <function>setval</function> is the value of its
second argument.
</para>
<para>
@@ -17686,6 +17693,12 @@ SELECT setval('myseq', 42, false);
<lineannotation>Next <function>nextval</fu
returning a session-local value, it gives a predictable answer whether
or not other sessions have executed <function>nextval</function> since
the current session did.
+<programlisting>
+CREATE SEQUENCE myseq;
+<lineannotation>-- SELECT currval('myseq'::regclass); -- would throw an error
here</lineannotation>
+SELECT nextval('myseq'::regclass); <lineannotation>-- returns
1</lineannotation>
+SELECT currval('myseq'::regclass); <lineannotation>-- returns
1</lineannotation>
+</programlisting>
</para>
<para>
This function requires <literal>USAGE</literal>
@@ -17707,9 +17720,14 @@ SELECT setval('myseq', 42, false);
<lineannotation>Next <function>nextval</fu
identical to <function>currval</function>, except that instead
of taking the sequence name as an argument it refers to whichever
sequence <function>nextval</function> was most recently applied to
- in the current session. It is an error to call
- <function>lastval</function> if <function>nextval</function>
- has not yet been called in the current session.
+ in the current session. (An error is reported if
<function>nextval</function> has
+ never been called in this session.)
+<programlisting>
+CREATE SEQUENCE myseq;
+<lineannotation>-- SELECT lastval(); -- would throw an error
here</lineannotation>
+SELECT nextval('myseq'::regclass); <lineannotation>-- returns
1</lineannotation>
+SELECT lastval(); <lineannotation>-- returns 1</lineannotation>
+</programlisting>
</para>
<para>
This function requires <literal>USAGE</literal>