Все следующие варианты использования pg_read_file () работают нормально:
select pg_read_file('myFile.txt'); -- ok full file
select pg_read_file('myFile-notExists',0,10,true); -- NULL is Ok!
Но это проблемные c:
select pg_read_file('myFile-notExists.txt'); -- ERROR... It is not what I need
select pg_read_file('myFile.txt',0,10,true); -- ok not null, but need full file!
... Я пытаюсь решить проблему с помощью функции переноса:
CREATE or replace FUNCTION pg_read_file(f text, missing_ok boolean) RETURNS text AS $$
SELECT pg_read_file(f,0,922337203,missing_ok)
-- the max 9223372036854775807 is too large, also 9223372036854775800, ....
$$ LANGUAGE SQL IMMUTABLE;
Но там написано «ОШИБКА: запрошенная длина слишком велика» для тестов на максимальной длине ... Поэтому я использую случайную константу . Question1 : какое значение "максимальный размер файла"?
select pg_read_file('myFile-notExists.txt',true); -- Ok! NULL is what I need
select pg_read_file('myFile.txt',true); -- Ok! full file.
Вопрос2 : есть ли другой способ решить эту проблему?
По стандарту PostgreSQL v12 \df pg_read_file
говорит:
Schema | Name | Result data type | Argument data types | Type
------------+--------------+------------------+-------------------------------+------
pg_catalog | pg_read_file | text | text | func
pg_catalog | pg_read_file | text | text, bigint, bigint | func
pg_catalog | pg_read_file | text | text, bigint, bigint, boolean | func
Почему pg_read_file(text,boolean)
отсутствует в pg_catalog? Это приведет к несогласованности с другими модулями или расширениями?