Re: 10.0 - Mailing list pgsql-hackers

From Mark Dilger
Subject Re: 10.0
Date
Msg-id 5B17DDD0-1C5C-4F2F-9EC3-0AF0052BDDC0@gmail.com
Whole thread Raw
In response to Re: 10.0  ("David G. Johnston" <david.g.johnston@gmail.com>)
Responses Re: 10.0  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-hackers
> On Jun 20, 2016, at 9:38 AM, David G. Johnston <david.g.johnston@gmail.com> wrote:
>
> On Mon, Jun 20, 2016 at 12:28 PM, Mark Dilger <hornschnorter@gmail.com> wrote:
>
> > On Jun 20, 2016, at 8:53 AM, Mark Dilger <hornschnorter@gmail.com> wrote:
> >
> >
> > This is not a plea for keeping the three part versioning system.  It's just
> > a plea not to have a 2 part versioning system masquerading as a three
> > part versioning system, or vice versa.
>
> To clarify my concern, I never want to have to write code like this:
>
>         CASE WHEN pg_version eq '11.1' OR pg_version eq '11.0.1' THEN foo()
>                    WHEN pg_version eq '11.2' OR pg_version eq '11.0.2' THEN bar()
>                 ....
> or
>
>         if (0 == strcmp(pg_version_string, "11.1") || 0 == strcmp(pg_version_string, "11.0.1"))
>                 foo();
>         else if (0 == strcmp(pg_version_string, "11.2") || 0 == strcmp(pg_version_string, "11.0.2"))
>                 bar();
>
> either in sql, perl, c, java, or anywhere else.  As soon as you have two different
> formats for the version string, you get into this hell.  Yeah, ok, you may have
> a sql level function for this, but I'm thinking about applications somewhat removed
> from a direct connection to the database, where you can't be sure which format
> you'll be handed.
>
> Now you argue for keeping the middle number on pure compatibility grounds.​..

I am not arguing for that.  I'm arguing against having two different versions of the
same thing.  If you go with a two part versioning scheme that is sometimes written as a
three part versioning scheme, you make every bit of code that deals with it from now on
have to deal with both possible versions in order to be robust.

My preference is to have a three part versioning scheme where all three parts have
different purposes.  But since the community seems to have no interest in that, and
have largely (if not universally) rejected that idea, I'm falling back to merely arguing
that if we're going to have a two part versioning system, we should do that everywhere,
and if we can't do that everywhere, then we should do that nowhere.

You appear to be arguing that we should have a versioning scheme that is sometimes
two parts, and sometimes three parts, but when three parts, always make the middle
number zero.  The part of that which bothers me most is not the "always zero" part.   It's
the "sometimes two parts, sometimes three parts" part.

mark


pgsql-hackers by date:

Previous
From: Mark Dilger
Date:
Subject: Re: 10.0
Next
From: Alvaro Herrera
Date:
Subject: Re: 10.0