mirror of https://github.com/postgres/postgres
parent
81276fdd39
commit
b28dfa6d6f
@ -0,0 +1,4 @@ |
||||
# Generated subdirectories |
||||
/log/ |
||||
/results/ |
||||
/tmp_check/ |
@ -0,0 +1,146 @@ |
||||
CREATE EXTENSION adminpack; |
||||
-- create new file |
||||
SELECT pg_file_write('test_file1', 'test1', false); |
||||
pg_file_write |
||||
--------------- |
||||
5 |
||||
(1 row) |
||||
|
||||
SELECT pg_read_file('test_file1'); |
||||
pg_read_file |
||||
-------------- |
||||
test1 |
||||
(1 row) |
||||
|
||||
-- append |
||||
SELECT pg_file_write('test_file1', 'test1', true); |
||||
pg_file_write |
||||
--------------- |
||||
5 |
||||
(1 row) |
||||
|
||||
SELECT pg_read_file('test_file1'); |
||||
pg_read_file |
||||
-------------- |
||||
test1test1 |
||||
(1 row) |
||||
|
||||
-- error, already exists |
||||
SELECT pg_file_write('test_file1', 'test1', false); |
||||
ERROR: file "test_file1" exists |
||||
SELECT pg_read_file('test_file1'); |
||||
pg_read_file |
||||
-------------- |
||||
test1test1 |
||||
(1 row) |
||||
|
||||
-- disallowed file paths |
||||
SELECT pg_file_write('../test_file0', 'test0', false); |
||||
ERROR: path must be in or below the current directory |
||||
SELECT pg_file_write('/tmp/test_file0', 'test0', false); |
||||
ERROR: absolute path not allowed |
||||
SELECT pg_file_write(current_setting('data_directory') || '/test_file4', 'test4', false); |
||||
pg_file_write |
||||
--------------- |
||||
5 |
||||
(1 row) |
||||
|
||||
SELECT pg_file_write(current_setting('data_directory') || '/../test_file4', 'test4', false); |
||||
ERROR: reference to parent directory ("..") not allowed |
||||
-- rename file |
||||
SELECT pg_file_rename('test_file1', 'test_file2'); |
||||
pg_file_rename |
||||
---------------- |
||||
t |
||||
(1 row) |
||||
|
||||
SELECT pg_read_file('test_file1'); -- not there |
||||
ERROR: could not stat file "test_file1": No such file or directory |
||||
SELECT pg_read_file('test_file2'); |
||||
pg_read_file |
||||
-------------- |
||||
test1test1 |
||||
(1 row) |
||||
|
||||
-- error |
||||
SELECT pg_file_rename('test_file1', 'test_file2'); |
||||
WARNING: file "test_file1" is not accessible: No such file or directory |
||||
pg_file_rename |
||||
---------------- |
||||
f |
||||
(1 row) |
||||
|
||||
-- rename file and archive |
||||
SELECT pg_file_write('test_file3', 'test3', false); |
||||
pg_file_write |
||||
--------------- |
||||
5 |
||||
(1 row) |
||||
|
||||
SELECT pg_file_rename('test_file2', 'test_file3', 'test_file3_archive'); |
||||
pg_file_rename |
||||
---------------- |
||||
t |
||||
(1 row) |
||||
|
||||
SELECT pg_read_file('test_file2'); -- not there |
||||
ERROR: could not stat file "test_file2": No such file or directory |
||||
SELECT pg_read_file('test_file3'); |
||||
pg_read_file |
||||
-------------- |
||||
test1test1 |
||||
(1 row) |
||||
|
||||
SELECT pg_read_file('test_file3_archive'); |
||||
pg_read_file |
||||
-------------- |
||||
test3 |
||||
(1 row) |
||||
|
||||
-- unlink |
||||
SELECT pg_file_unlink('test_file1'); -- does not exist |
||||
pg_file_unlink |
||||
---------------- |
||||
f |
||||
(1 row) |
||||
|
||||
SELECT pg_file_unlink('test_file2'); -- does not exist |
||||
pg_file_unlink |
||||
---------------- |
||||
f |
||||
(1 row) |
||||
|
||||
SELECT pg_file_unlink('test_file3'); |
||||
pg_file_unlink |
||||
---------------- |
||||
t |
||||
(1 row) |
||||
|
||||
SELECT pg_file_unlink('test_file3_archive'); |
||||
pg_file_unlink |
||||
---------------- |
||||
t |
||||
(1 row) |
||||
|
||||
SELECT pg_file_unlink('test_file4'); |
||||
pg_file_unlink |
||||
---------------- |
||||
t |
||||
(1 row) |
||||
|
||||
-- superuser checks |
||||
CREATE USER regress_user1; |
||||
SET ROLE regress_user1; |
||||
SELECT pg_file_write('test_file0', 'test0', false); |
||||
ERROR: only superuser may access generic file functions |
||||
SELECT pg_file_rename('test_file0', 'test_file0'); |
||||
ERROR: only superuser may access generic file functions |
||||
CONTEXT: SQL function "pg_file_rename" statement 1 |
||||
SELECT pg_file_unlink('test_file0'); |
||||
ERROR: only superuser may access generic file functions |
||||
SELECT pg_logdir_ls(); |
||||
ERROR: only superuser can list the log directory |
||||
RESET ROLE; |
||||
DROP USER regress_user1; |
||||
-- no further tests for pg_logdir_ls() because it depends on the |
||||
-- server's logging setup |
@ -0,0 +1,60 @@ |
||||
CREATE EXTENSION adminpack; |
||||
|
||||
-- create new file |
||||
SELECT pg_file_write('test_file1', 'test1', false); |
||||
SELECT pg_read_file('test_file1'); |
||||
|
||||
-- append |
||||
SELECT pg_file_write('test_file1', 'test1', true); |
||||
SELECT pg_read_file('test_file1'); |
||||
|
||||
-- error, already exists |
||||
SELECT pg_file_write('test_file1', 'test1', false); |
||||
SELECT pg_read_file('test_file1'); |
||||
|
||||
-- disallowed file paths |
||||
SELECT pg_file_write('../test_file0', 'test0', false); |
||||
SELECT pg_file_write('/tmp/test_file0', 'test0', false); |
||||
SELECT pg_file_write(current_setting('data_directory') || '/test_file4', 'test4', false); |
||||
SELECT pg_file_write(current_setting('data_directory') || '/../test_file4', 'test4', false); |
||||
|
||||
|
||||
-- rename file |
||||
SELECT pg_file_rename('test_file1', 'test_file2'); |
||||
SELECT pg_read_file('test_file1'); -- not there |
||||
SELECT pg_read_file('test_file2'); |
||||
|
||||
-- error |
||||
SELECT pg_file_rename('test_file1', 'test_file2'); |
||||
|
||||
-- rename file and archive |
||||
SELECT pg_file_write('test_file3', 'test3', false); |
||||
SELECT pg_file_rename('test_file2', 'test_file3', 'test_file3_archive'); |
||||
SELECT pg_read_file('test_file2'); -- not there |
||||
SELECT pg_read_file('test_file3'); |
||||
SELECT pg_read_file('test_file3_archive'); |
||||
|
||||
|
||||
-- unlink |
||||
SELECT pg_file_unlink('test_file1'); -- does not exist |
||||
SELECT pg_file_unlink('test_file2'); -- does not exist |
||||
SELECT pg_file_unlink('test_file3'); |
||||
SELECT pg_file_unlink('test_file3_archive'); |
||||
SELECT pg_file_unlink('test_file4'); |
||||
|
||||
|
||||
-- superuser checks |
||||
CREATE USER regress_user1; |
||||
SET ROLE regress_user1; |
||||
|
||||
SELECT pg_file_write('test_file0', 'test0', false); |
||||
SELECT pg_file_rename('test_file0', 'test_file0'); |
||||
SELECT pg_file_unlink('test_file0'); |
||||
SELECT pg_logdir_ls(); |
||||
|
||||
RESET ROLE; |
||||
DROP USER regress_user1; |
||||
|
||||
|
||||
-- no further tests for pg_logdir_ls() because it depends on the |
||||
-- server's logging setup |
Loading…
Reference in new issue