Re: making relfilenodes 56 bits
Dilip Kumar <dilipbalaut@gmail.com>
From: Dilip Kumar <dilipbalaut@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Andres Freund <andres@anarazel.de>, Heikki Linnakangas <hlinnaka@iki.fi>, Thomas Munro <thomas.munro@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-09-03T08:56:00Z
Lists: pgsql-hackers
Attachments
- v16-0001-Widen-relfilenumber-from-32-bits-to-56-bits.patch (text/x-patch) patch v16-0001
On Sat, Sep 3, 2022 at 1:50 PM Dilip Kumar <dilipbalaut@gmail.com> wrote: > > On Tue, Aug 30, 2022 at 9:23 PM Robert Haas <robertmhaas@gmail.com> wrote: > > > Well, that's very awkward. It doesn't seem like it would be very > > difficult to teach pg_upgrade to call pg_restore without --clean and > > just do the drop database itself, but that doesn't really help, > > because pg_restore will in any event be creating the new database. > > That doesn't seem like something we can practically refactor out, > > because only pg_dump knows what properties to use when creating the > > new database. What we could do is have the dump include a command like > > SELECT pg_binary_upgrade_move_things_out_of_the_way(some_arguments_here), > > but that doesn't really help very much, because passing the whole list > > of relfilenode values from the old database seems pretty certain to be > > a bad idea. The whole idea here was that we'd be able to build a hash > > table on the new database's system table OIDs, and it seems like > > that's not going to work. > > Right. > > > We could try to salvage some portion of the idea by making > > pg_binary_upgrade_move_things_out_of_the_way() take a more restricted > > set of arguments, like the smallest and largest relfilenode values > > from the old database, and then we'd just need to move things that > > overlap. But that feels pretty hit-or-miss to me as to whether it > > actually avoids any work, and > > pg_binary_upgrade_move_things_out_of_the_way() might also be annoying > > to write. So perhaps we have to go back to the drawing board here. > > So as of now, we have two open options 1) the current approach and > what patch is following to use Oid as relfilenode for the system > tables when initially created. 2) call > pg_binary_upgrade_move_things_out_of_the_way() which force rewrite all > the system tables. > > Another idea that I am not very sure how feasible is. Can we change > the dump such that in binary upgrade mode it will not use template0 as > a template database (in creating database command) but instead some > new database as a template e.g. template-XYZ? And later for conflict > checking, we will create this template-XYZ database on the new cluster > and then we will perform all the conflict check (from all the > databases of the old cluster) and rewrite operations on this database. > And later all the databases will be created using template-XYZ as the > template and all the rewriting stuff we have done is still intact. > The problems I could think of are 1) only for a binary upgrade we will > have to change the pg_dump. 2) we will have to use another database > name as the reserved database name but what if that name is already in > use in the previous cluster? While we are still thinking on this issue, I have rebased the patch on the latest head and fixed a couple of minor issues. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com
Commits
-
Fix typos in comments, code and documentation
- 33ab0a2a527e 16.0 cited
-
Increase width of RelFileNumbers from 32 bits to 56 bits.
- 05d4cbf9b6ba 16.0 landed
-
Move RelFileNumber declarations to common/relpath.h.
- 2f47715cc864 16.0 landed
-
Include RelFileLocator fields individually in BufferTag.
- 82ac34db2036 16.0 landed
-
Convert macros to static inline functions (buf_internals.h)
- 3ac88fddd92c 16.0 landed
-
Remove the restriction that the relmap must be 512 bytes.
- d8cd0c6c95c0 16.0 landed
-
Change internal RelFileNode references to RelFileNumber or RelFileLocator.
- b0a55e43299c 16.0 landed
-
Reorder subskiplsn in pg_subscription to avoid alignment issues.
- 79b716cfb7a1 15.0 cited
-
Fix DROP {DATABASE,TABLESPACE} on Windows.
- 4eb2176318d0 15.0 cited
-
Restructure smgr API as per recent proposal. smgr no longer depends on
- 87bd95638552 8.0.0 cited