mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Support pg_read_[binary_]file (filename, missing_ok).
There wasn't an especially nice way to read all of a file while passing missing_ok = true. Add an additional overloaded variant to support that use-case. While here, refactor the C code to avoid a rats-nest of PG_NARGS checks, instead handling the argument collection in the outer wrapper functions. It's a bit longer this way, but far more straightforward. (Upon looking at the code coverage report for genfile.c, I was impelled to also add a test case for pg_stat_file() -- tgl) Kyotaro Horiguchi Discussion: https://postgr.es/m/20220607.160520.1984541900138970018.horikyota.ntt@gmail.com
This commit is contained in:
@@ -28411,13 +28411,23 @@ SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
|
||||
considered.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When granting privilege on these functions, note that the table entries
|
||||
showing optional parameters are mostly implemented as several physical
|
||||
functions with different parameter lists. Privilege must be granted
|
||||
separately on each such function, if it is to be
|
||||
used. <application>psql</application>'s <command>\df</command> command
|
||||
can be useful to check what the actual function signatures are.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Some of these functions take an optional <parameter>missing_ok</parameter>
|
||||
parameter, which specifies the behavior when the file or directory does
|
||||
not exist. If <literal>true</literal>, the function
|
||||
returns <literal>NULL</literal> or an empty result set, as appropriate.
|
||||
If <literal>false</literal>, an error is raised. The default
|
||||
is <literal>false</literal>.
|
||||
If <literal>false</literal>, an error is raised. (Failure conditions
|
||||
other than <quote>file not found</quote> are reported as errors in any
|
||||
case.) The default is <literal>false</literal>.
|
||||
</para>
|
||||
|
||||
<table id="functions-admin-genfile-table">
|
||||
@@ -28636,7 +28646,7 @@ SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
|
||||
<indexterm>
|
||||
<primary>pg_read_file</primary>
|
||||
</indexterm>
|
||||
<function>pg_read_file</function> ( <parameter>filename</parameter> <type>text</type> <optional>, <parameter>offset</parameter> <type>bigint</type>, <parameter>length</parameter> <type>bigint</type> <optional>, <parameter>missing_ok</parameter> <type>boolean</type> </optional></optional> )
|
||||
<function>pg_read_file</function> ( <parameter>filename</parameter> <type>text</type> <optional>, <parameter>offset</parameter> <type>bigint</type>, <parameter>length</parameter> <type>bigint</type> </optional> <optional>, <parameter>missing_ok</parameter> <type>boolean</type> </optional> )
|
||||
<returnvalue>text</returnvalue>
|
||||
</para>
|
||||
<para>
|
||||
@@ -28661,7 +28671,7 @@ SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
|
||||
<indexterm>
|
||||
<primary>pg_read_binary_file</primary>
|
||||
</indexterm>
|
||||
<function>pg_read_binary_file</function> ( <parameter>filename</parameter> <type>text</type> <optional>, <parameter>offset</parameter> <type>bigint</type>, <parameter>length</parameter> <type>bigint</type> <optional>, <parameter>missing_ok</parameter> <type>boolean</type> </optional></optional> )
|
||||
<function>pg_read_binary_file</function> ( <parameter>filename</parameter> <type>text</type> <optional>, <parameter>offset</parameter> <type>bigint</type>, <parameter>length</parameter> <type>bigint</type> </optional> <optional>, <parameter>missing_ok</parameter> <type>boolean</type> </optional> )
|
||||
<returnvalue>bytea</returnvalue>
|
||||
</para>
|
||||
<para>
|
||||
|
Reference in New Issue
Block a user