Andres Freund <and...@anarazel.de> writes: > On 2018-02-11 21:50:32 -0500, Mat Arye wrote: >> In particular, in the commit >> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=1597948c962a1407c01fc492c44917c097efa92e >> the structure of the ColumnDef struct changed.
> Ugh. I personally would say that's because that commit did stuff that we > normally trie hard not to do. While ColumnDef at least isn't serialized > into catalogs, we normally trie hard to break struct layout. Peter, > shouldn't that field at the very least have been added at the end? Yeah. The position of the field makes sense for HEAD, but it would have been good practice to add it at the end in released branches. That's what we normally do when we have to make struct changes in back branches. That isn't a 100% fix for ABI compatibility problems --- if you're making new instances of the node type in an extension, you still lose --- but it avoids problems in many cases. Not sure what to do about it at this point. We could move that field to the end for 10.3, leaving 10.2 as the only ABI-incompatible minor release, but I don't know that that really makes things any better than leaving it as-is. Somewhere around the dot-two minor release is where uptake of a new PG branch starts to become significant, IME, so preserving ABI compatibility going forward from 10.2 might be more useful than preserving it against 10.0/10.1. regards, tom lane