diff -r d3899857a81d -r 277a5896a2ec src/server/plugins/postgresql/pgtest.c --- a/src/server/plugins/postgresql/pgtest.c Sun Apr 17 12:04:41 2022 +0200 +++ b/src/server/plugins/postgresql/pgtest.c Mon Apr 18 10:53:13 2022 +0200 @@ -64,6 +64,8 @@ ucx_test_register(suite, test_pg_vfs_open); ucx_test_register(suite, test_pg_vfs_io); ucx_test_register(suite, test_pg_vfs_stat); + ucx_test_register(suite, test_pg_vfs_mkdir); + ucx_test_register(suite, test_pg_vfs_unlink); PGresult *result = PQexec(test_connection, "BEGIN"); PQclear(result); @@ -113,6 +115,8 @@ vfs_close(file); UCX_TEST_END; + + testutil_destroy_session(sn); } UCX_TEST(test_pg_vfs_io) { @@ -161,6 +165,7 @@ UCX_TEST_END; + testutil_destroy_session(sn); } UCX_TEST(test_pg_vfs_stat) { @@ -201,8 +206,44 @@ UCX_TEST_ASSERT(testfail != 0, "stat 3 should fail"); UCX_TEST_END; + + testutil_destroy_session(sn); } UCX_TEST(test_pg_vfs_mkdir) { } + +UCX_TEST(test_pg_vfs_unlink) { + Session *sn = testutil_session(); + Request *rq = testutil_request(sn->pool, "PUT", "/"); + rq->vfs = create_test_pgvfs(sn, rq); + VFSContext *vfs = vfs_request_context(sn, rq); + + UCX_TEST_BEGIN; + + SYS_FILE f1 = vfs_open(vfs, "/test_unlink1", O_WRONLY|O_CREAT); + UCX_TEST_ASSERT(f1, "cannot create test file"); + system_fwrite(f1, "test", 4); + + PgFile *pgfile = f1->data; + Oid oid = pgfile->oid; + + vfs_close(f1); + + int r = vfs_unlink(vfs, "/test_unlink1"); + UCX_TEST_ASSERT(r == 0, "unlink failed"); + + f1 = vfs_open(vfs, "/test_unlink1", O_RDONLY); + UCX_TEST_ASSERT(f1 == NULL, "test file not deleted"); + + int pgfd = lo_open(test_connection, oid, INV_READ); + UCX_TEST_ASSERT(pgfd < 0, "large object not deleted"); + + r = vfs_unlink(vfs, "/test_unlink1"); + UCX_TEST_ASSERT(r, "unlink should fail"); + + UCX_TEST_END; + + testutil_destroy_session(sn); +}