On Fri, Jul 22, 2022 at 4:21 PM vignesh C <vignes...@gmail.com> wrote: > > On Wed, Jul 20, 2022 at 4:57 PM Dilip Kumar <dilipbal...@gmail.com> wrote: > > > > On Mon, Jul 18, 2022 at 4:51 PM Dilip Kumar <dilipbal...@gmail.com> wrote: > > > > > > I was doing some more testing by setting the FirstNormalRelFileNumber > > > to a high value(more than 32 bits) I have noticed a couple of problems > > > there e.g. relpath is still using OIDCHARS macro which says max > > > relfilenumber file name can be only 10 character long which is no > > > longer true. So there we need to change this value to 20 and also > > > need to carefully rename the macros and other variable names used for > > > this purpose. > > > > > > Similarly there was some issue in macro in buf_internal.h while > > > fetching the relfilenumber. So I will relook into all those issues > > > and repost the patch soon. > > > > I have fixed these existing issues and there was also some issue in > > pg_dump.c which was creating problems in upgrading to the same version > > while using a higher range of the relfilenumber. > > > > There was also an issue where the user table from the old cluster's > > relfilenode could conflict with the system table of the new cluster. > > As a solution currently for system table object (while creating > > storage first time) we are keeping the low range of relfilenumber, > > basically we are using the same relfilenumber as OID so that during > > upgrade the normal user table from the old cluster will not conflict > > with the system tables in the new cluster. But with this solution > > Robert told me (in off list chat) a problem that in future if we want > > to make relfilenumber completely unique within a cluster by > > implementing the CREATEDB differently then we can not do that as we > > have created fixed relfilenodes for the system tables. > > > > I am not sure what exactly we can do to avoid that because even if we > > do something to avoid that in the new cluster the old cluster might > > be already using the non-unique relfilenode so after upgrading the new > > cluster will also get those non-unique relfilenode. > > Thanks for the patch, my comments from the initial review: > 1) Since we have changed the macros to inline functions, should we > change the function names similar to the other inline functions in the > same file like: ClearBufferTag, InitBufferTag & BufferTagsEqual: > -#define BUFFERTAGS_EQUAL(a,b) \ > -( \ > - RelFileLocatorEquals((a).rlocator, (b).rlocator) && \ > - (a).blockNum == (b).blockNum && \ > - (a).forkNum == (b).forkNum \ > -) > +static inline void > +CLEAR_BUFFERTAG(BufferTag *tag) > +{ > + tag->rlocator.spcOid = InvalidOid; > + tag->rlocator.dbOid = InvalidOid; > + tag->rlocator.relNumber = InvalidRelFileNumber; > + tag->forkNum = InvalidForkNumber; > + tag->blockNum = InvalidBlockNumber; > +} > > 2) We could move this macros along with the other macros at the top of the > file: > +/* > + * The freeNext field is either the index of the next freelist entry, > + * or one of these special values: > + */ > +#define FREENEXT_END_OF_LIST (-1) > +#define FREENEXT_NOT_IN_LIST (-2) > > 3) typo thn should be then: > + * can raise it as necessary if we end up with more mapped relations. For > + * now, we just pick a round number that is modestly larger thn the expected > + * number of mappings. > + */ >
Few more typos in 0004 patch as well: the a value interger previosly currenly > 4) There is one whitespace issue: > git am v10-0004-Widen-relfilenumber-from-32-bits-to-56-bits.patch > Applying: Widen relfilenumber from 32 bits to 56 bits > .git/rebase-apply/patch:1500: space before tab in indent. > (relfilenumber)))); \ > warning: 1 line adds whitespace errors. > > Regards, > Vignesh > Regards, Amul