Thread: pgsql: Add missing_ok option to the SQL functions for reading files.

pgsql: Add missing_ok option to the SQL functions for reading files.

From
Heikki Linnakangas
Date:
Add missing_ok option to the SQL functions for reading files.

This makes it possible to use the functions without getting errors, if there
is a chance that the file might be removed or renamed concurrently.
pg_rewind needs to do just that, although this could be useful for other
purposes too. (The changes to pg_rewind to use these functions will come in
a separate commit.)

The read_binary_file() function isn't very well-suited for extensions.c's
purposes anymore, if it ever was. So bite the bullet and make a copy of it
in extension.c, tailored for that use case. This seems better than the
accidental code reuse, even if it's a some more lines of code.

Michael Paquier, with plenty of kibitzing by me.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/cb2acb1081e13b4b27a76c6b5311115528e49c59

Modified Files
--------------
doc/src/sgml/func.sgml           |   42 +++++--
src/backend/commands/extension.c |   69 ++++++++---
src/backend/utils/adt/genfile.c  |  237 +++++++++++++++++++++++++++-----------
src/include/catalog/catversion.h |    2 +-
src/include/catalog/pg_proc.h    |   16 ++-
src/include/utils/builtins.h     |    6 +-
6 files changed, 272 insertions(+), 100 deletions(-)


Re: pgsql: Add missing_ok option to the SQL functions for reading files.

From
Michael Paquier
Date:
On Mon, Jun 29, 2015 at 3:39 AM, Heikki Linnakangas
<heikki.linnakangas@iki.fi> wrote:
> Add missing_ok option to the SQL functions for reading files.
>
> This makes it possible to use the functions without getting errors, if there
> is a chance that the file might be removed or renamed concurrently.
> pg_rewind needs to do just that, although this could be useful for other
> purposes too. (The changes to pg_rewind to use these functions will come in
> a separate commit.)
>
> The read_binary_file() function isn't very well-suited for extensions.c's
> purposes anymore, if it ever was. So bite the bullet and make a copy of it
> in extension.c, tailored for that use case. This seems better than the
> accidental code reuse, even if it's a some more lines of code.

This has been done done as the part of a fix for the issues with
pg_rewind, but perhaps it should be mentioned in the release notes?
--
Michael


Re: pgsql: Add missing_ok option to the SQL functions for reading files.

From
Bruce Momjian
Date:
On Sun, Jul  5, 2015 at 08:44:41PM +0900, Michael Paquier wrote:
> On Mon, Jun 29, 2015 at 3:39 AM, Heikki Linnakangas
> <heikki.linnakangas@iki.fi> wrote:
> > Add missing_ok option to the SQL functions for reading files.
> >
> > This makes it possible to use the functions without getting errors, if there
> > is a chance that the file might be removed or renamed concurrently.
> > pg_rewind needs to do just that, although this could be useful for other
> > purposes too. (The changes to pg_rewind to use these functions will come in
> > a separate commit.)
> >
> > The read_binary_file() function isn't very well-suited for extensions.c's
> > purposes anymore, if it ever was. So bite the bullet and make a copy of it
> > in extension.c, tailored for that use case. This seems better than the
> > accidental code reuse, even if it's a some more lines of code.
>
> This has been done done as the part of a fix for the issues with
> pg_rewind, but perhaps it should be mentioned in the release notes?

Yes, I will pick up that change during the creation of the 9.6 release
notes.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +


Re: pgsql: Add missing_ok option to the SQL functions for reading files.

From
Michael Paquier
Date:
On Fri, Aug 28, 2015 at 9:39 PM, Bruce Momjian <bruce@momjian.us> wrote:
> On Sun, Jul  5, 2015 at 08:44:41PM +0900, Michael Paquier wrote:
>> On Mon, Jun 29, 2015 at 3:39 AM, Heikki Linnakangas
>> <heikki.linnakangas@iki.fi> wrote:
>> > Add missing_ok option to the SQL functions for reading files.
>> >
>> > This makes it possible to use the functions without getting errors, if there
>> > is a chance that the file might be removed or renamed concurrently.
>> > pg_rewind needs to do just that, although this could be useful for other
>> > purposes too. (The changes to pg_rewind to use these functions will come in
>> > a separate commit.)
>> >
>> > The read_binary_file() function isn't very well-suited for extensions.c's
>> > purposes anymore, if it ever was. So bite the bullet and make a copy of it
>> > in extension.c, tailored for that use case. This seems better than the
>> > accidental code reuse, even if it's a some more lines of code.
>>
>> This has been done done as the part of a fix for the issues with
>> pg_rewind, but perhaps it should be mentioned in the release notes?
>
> Yes, I will pick up that change during the creation of the 9.6 release
> notes.

Even if it has been introduced in 9.5?
--
Michael


Re: pgsql: Add missing_ok option to the SQL functions for reading files.

From
Bruce Momjian
Date:
On Fri, Aug 28, 2015 at 09:41:08PM +0900, Michael Paquier wrote:
> On Fri, Aug 28, 2015 at 9:39 PM, Bruce Momjian <bruce@momjian.us> wrote:
> > On Sun, Jul  5, 2015 at 08:44:41PM +0900, Michael Paquier wrote:
> >> On Mon, Jun 29, 2015 at 3:39 AM, Heikki Linnakangas
> >> <heikki.linnakangas@iki.fi> wrote:
> >> > Add missing_ok option to the SQL functions for reading files.
> >> >
> >> > This makes it possible to use the functions without getting errors, if there
> >> > is a chance that the file might be removed or renamed concurrently.
> >> > pg_rewind needs to do just that, although this could be useful for other
> >> > purposes too. (The changes to pg_rewind to use these functions will come in
> >> > a separate commit.)
> >> >
> >> > The read_binary_file() function isn't very well-suited for extensions.c's
> >> > purposes anymore, if it ever was. So bite the bullet and make a copy of it
> >> > in extension.c, tailored for that use case. This seems better than the
> >> > accidental code reuse, even if it's a some more lines of code.
> >>
> >> This has been done done as the part of a fix for the issues with
> >> pg_rewind, but perhaps it should be mentioned in the release notes?
> >
> > Yes, I will pick up that change during the creation of the 9.6 release
> > notes.
>
> Even if it has been introduced in 9.5?

Well, this is where I got lost then, because I only see it going into
master, which, uh, I thought was 9.6, but I am now realizing this was
committed before we branched.  :-(  This will be picked up when the 9.5
release notes are updated to match git.

Actually, I now see this in the 9.5 release notes:

   <simpara>Current as of 2015-08-03</simpara>

This was updated by Tom:

    ecc2d16b (Tom Lane         2015-08-03 12:29:10 -0400   10)   <simpara>Current as of 2015-08-03</simpara>

and I see Tom added it properly:

    <!--
    2015-06-28 [cb2acb1] Heikki..: Add missing_ok option to the SQL functions for..
    -->
           <para>
            Add an optional <replaceable>missing_ok</> argument to <link
            linkend="functions-admin-genfile-table"><function>pg_read_file()</></>
            and related functions (Michael Paquier, Heikki Linnakangas)
           </para>
          </listitem>

so, after all that detail, I think we are good.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +


Re: pgsql: Add missing_ok option to the SQL functions for reading files.

From
Bruce Momjian
Date:
On Fri, Aug 28, 2015 at 10:17:44AM -0400, Bruce Momjian wrote:
> and I see Tom added it properly:
>
>     <!--
>     2015-06-28 [cb2acb1] Heikki..: Add missing_ok option to the SQL functions for..
>     -->
>            <para>
>             Add an optional <replaceable>missing_ok</> argument to <link
>             linkend="functions-admin-genfile-table"><function>pg_read_file()</></>
>             and related functions (Michael Paquier, Heikki Linnakangas)
>            </para>
>           </listitem>
>
> so, after all that detail, I think we are good.

I think the crux of the issue is that I am coming to these emails late,
and much of the maintenance is happening with little visibility.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +