On 2018/09/12 19:29, Rajkumar Raghuwanshi wrote:
> Hi,
>
> I am getting below error while creating temp root partition table with on
> commit. getting same error from v10 onwards.
>
> [edb@localhost bin]$ ./psql postgres
> psql (10.5)
> Type "help" for help.
>
> postgres=# CREATE TEMP TABLE test ( c1 varchar, c2 int) PARTITION BY RANGE
> (c1) ON COMMIT DELETE ROWS;
> ERROR: could not open file "base/13164/t3_16388": No such file or directory
Oops, good catch.
The infamous missing-relkind-check in heap_truncate() seems to be behind
this. Perhaps, a patch like the attached will do?
Thanks,
Amit
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 9176f6280b..3f0be39940 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -3174,7 +3174,8 @@ heap_truncate(List *relids)
Relation rel = lfirst(cell);
/* Truncate the relation */
- heap_truncate_one_rel(rel);
+ if (rel->rd_rel->relkind == RELKIND_RELATION)
+ heap_truncate_one_rel(rel);
/* Close the relation, but keep exclusive lock on it until
commit */
heap_close(rel, NoLock);