Re: Why don't we have a small reserved OID range for patch revisions? - Mailing list pgsql-hackers
From | Tom Lane |
---|---|
Subject | Re: Why don't we have a small reserved OID range for patch revisions? |
Date | |
Msg-id | 25980.1551325280@sss.pgh.pa.us Whole thread Raw |
In response to | Re: Why don't we have a small reserved OID range for patch revisions? (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>) |
Responses |
Re: Why don't we have a small reserved OID range for patch revisions?
|
List | pgsql-hackers |
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes: > On 2019-02-27 22:27, Tom Lane wrote: >>> OID collision doesn't seem to be a significant problem (for me). >> Um, I beg to differ. It's not at all unusual for pending patches to >> bit-rot for no reason other than suddenly getting an OID conflict. >> I don't have to look far for a current example: > I'm not saying it doesn't happen, but that it's not a significant > problem overall. I do not think you are correct. It may not be a big problem across all our incoming patches, but that's only because most of them don't have anything to do with hand-assigned OIDs. Among those that do, I think there is a significant problem. To try to quantify this a bit, I looked through v12-cycle and pending patches that touch the catalog data. We've only committed 12 patches adding new hand-assigned OIDs since v11 was branched off. (I suspect that's lower than in a typical cycle, but have not attempted to quantify things further back.) Of those, only two seem to have needed OID adjustments after initial posting, but that's mostly because most of them were committer-originated patches that got pushed within a week or two. That's certainly not the typical wait time for a patch submitted by anybody else. Also, a lot of these patches recycled OIDs that'd recently been freed by patches such as the abstime-ectomy, which means that the amount of OID conflict created for pending patches is probably *really* low in this cycle-so-far, compared to our historical norms. Of what's in the queue to be reviewed right now, there are just 20 (out of 150-plus) patches that touch the catalog/*.dat files. I got this number by groveling through the cfbot's reports of patch applications, to see which patches touched those files. It might omit some patches that the cfbot failed to make sense of. Also, I'm pretty sure that a few of these patches don't actually assign any new OIDs but just change existing entries, or create only entries with auto-assigned OIDs. I did not try to separate those out, however, since the point here is to estimate for how many patches a committer would even need to think about this. Of those twenty patches, three have unresolved OID conflicts right now: multivariate MCV lists and histograms commontype polymorphics log10/hyper functions Another one has recently had to resolve an OID conflict: SortSupport implementation on inet/cdir which is notable considering that that thread is less than three weeks old. (The log10 and commontype threads aren't really ancient either.) I spent some extra effort looking at the patches that both create more than a few new OIDs and have been around for awhile: Generic type subscripting KNN for btree Custom compression methods SQL/JSON: functions SQL/JSON: jsonpath Generated columns BRIN bloom indexes The first four of those have all had to reassign OIDs during their lifetime. jsonpath has avoided doing so by choosing fairly high-numbered OIDs (6K range) to begin with; which I trust you will agree is a solution that doesn't scale for long. I'm not entirely sure that the last two haven't had to renumber OIDs; I ran out of energy before poking through their history in detail. In short, this situation may look fine from the perspective of a committer with a relatively short timeline to commit, but it's pretty darn awful for everybody else. The only way to avoid a ~ 50% failure rate is to choose OIDs above 6K, and once everybody starts doing it like that, things are going to get very unpleasant very quickly. regards, tom lane
pgsql-hackers by date: