On Thu, 11 Oct 2001, Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Can I get a status on this?
>
> It's not gonna happen for 7.2, I think ...
>
> regards, tom lane
I'd love it to go out with 7.2 but I've had no time to work on this patch
lately. The reason I need time is that, after having fiddled a fair bit,
I've decided that there really needs to be support for the creation of a
new relfilenode in the storage manager.
The current patch works like this:
Create new heap (heap_create())
Copy tuples from old heap to new heap via index scan
Form a new pg_class tuple
simple_heap_update()
update catalogue indices
rebuild existing indices
This causes an overflow in the localbuf.c so I guess this is wrong
(included in patch on 24/sep) =). I've looked at various combinations of
this:
memcpy() the old Relation into a new Relation, update smgrunlink() the old
Relation and heap_storage_create() the new relation. This dies because
smgrunlink only schedules the drop, where as heap_storage_create() actually
creates a file on the file system (open() returns with EEXIST).
I've also tried just copying the structure but heap_open() relies on OID
not relfilenode.
I'm probably going about it the wrong way, but it strikes me that there
needs to be a way to abstract the relfilenode from OID in the heap access
code so that one can easily manipulate the heap on disk without having to
play with OIDs.
I would have included code examples/clearer description but the box I
don't have access to the box I created the patches on atm =(.
Gavin