Thread: Re: trouble caused by change in 7.3 handling of ''

Re: trouble caused by change in 7.3 handling of ''

From
"Ian Harding"
Date:
Here's what Brand X does...

Knowing that backward compatibility is a large concern for customers, Microsoft incorporated the concept of
compatibilitylevels into SQL Server 7.0. SQL Server 7.0 has three compatibility levels: 60 for SQL Server 6.0
databases,65 for SQL Server 6.5 databases, and 70 for SQL Server 7.0 databases. These levels let legacy databases in
the7.0 environment operate as if they were running under an earlier release of the product. 

The system stored procedure sp_dbcmptlevel lets developers report on and change the compatibility level of their
databases.For example, to set the Northwind database to level 65 compatibility, execute the following command: 

sp_dbcmptlevel [Northwind], 65



Ian Harding
Programmer/Analyst II
Tacoma-Pierce County Health Department
iharding@tpchd.org
(253) 798-3549

>>> "scott.marlowe" <scott.marlowe@ihs.com> 12/19/02 01:41PM >>>
On Thu, 19 Dec 2002, Barry Lind wrote:

> And given one report of a problem, I think that was the correct
> response.  I don't think it is wise to add a GUC parameter for every
> change that impacts one person/one app.  However if multiple people had
> reported the same problem and the impact of the change was clearly
> understood to negatively impact a large number of users then I am sure a
> GUC parameter would have been added a while ago.
>
> The point I was trying to make is that there were probably a hundred
> changes between 7.2 and 7.3 that could have impacted apps, some
> intentional changes, others not (and it wouldn't make sense to add
> parameters for all of them).  Deciding which of these have a significant
> impact on existing apps is part of what the beta period is for.  The
> more people that test their apps during the beta period the better
> change we won't have issues like this in the future.

So, and this is just theorizing, what about having every change that
affects parsing syntacitcally, especially changes like this, be tracked
and handled with a single compatibility GUC var like revert_prev_syntax
that is only around for one version, defaults to off, and handles all the
new versus old syntax.

That way, when there's a new release, say 7.4 from 7.3, you can just strip
out all the code marked as being turned on by this one GUC and move on
with a new empty spot for revert_prev_syntax.

Of course, then you might have a problem where reverting to old syntax
takes away a feature someone wants in one area while removing a problem in
another, but, if you need to revert to the previous versions syntax, then
you probably aren't too worried about whether or not you have every single
shiny new feature...

Just a bit of a ramble.


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org


Re: trouble caused by change in 7.3 handling of ''

From
Bruce Momjian
Date:
A compatibily flag in postgresql.conf for the previous release is
interesting.  One problem is that only some items can be made
compatibable, and once you set it, you get all the backward
compatibility stuff, rather than being able to pick the one you want.

It is an interesting idea, but ultimately, it would be better if we
found the items that would cause problems and add individual
postgresql.conf params for those, to exist for one release.

---------------------------------------------------------------------------

Ian Harding wrote:
> Here's what Brand X does...
>
> Knowing that backward compatibility is a large concern for customers, Microsoft incorporated the concept of
compatibilitylevels into SQL Server 7.0. SQL Server 7.0 has three compatibility levels: 60 for SQL Server 6.0
databases,65 for SQL Server 6.5 databases, and 70 for SQL Server 7.0 databases. These levels let legacy databases in
the7.0 environment operate as if they were running under an earlier release of the product. 
>
> The system stored procedure sp_dbcmptlevel lets developers report on and change the compatibility level of their
databases.For example, to set the Northwind database to level 65 compatibility, execute the following command: 
>
> sp_dbcmptlevel [Northwind], 65
>
>
>
> Ian Harding
> Programmer/Analyst II
> Tacoma-Pierce County Health Department
> iharding@tpchd.org
> (253) 798-3549
>
> >>> "scott.marlowe" <scott.marlowe@ihs.com> 12/19/02 01:41PM >>>
> On Thu, 19 Dec 2002, Barry Lind wrote:
>
> > And given one report of a problem, I think that was the correct
> > response.  I don't think it is wise to add a GUC parameter for every
> > change that impacts one person/one app.  However if multiple people had
> > reported the same problem and the impact of the change was clearly
> > understood to negatively impact a large number of users then I am sure a
> > GUC parameter would have been added a while ago.
> >
> > The point I was trying to make is that there were probably a hundred
> > changes between 7.2 and 7.3 that could have impacted apps, some
> > intentional changes, others not (and it wouldn't make sense to add
> > parameters for all of them).  Deciding which of these have a significant
> > impact on existing apps is part of what the beta period is for.  The
> > more people that test their apps during the beta period the better
> > change we won't have issues like this in the future.
>
> So, and this is just theorizing, what about having every change that
> affects parsing syntacitcally, especially changes like this, be tracked
> and handled with a single compatibility GUC var like revert_prev_syntax
> that is only around for one version, defaults to off, and handles all the
> new versus old syntax.
>
> That way, when there's a new release, say 7.4 from 7.3, you can just strip
> out all the code marked as being turned on by this one GUC and move on
> with a new empty spot for revert_prev_syntax.
>
> Of course, then you might have a problem where reverting to old syntax
> takes away a feature someone wants in one area while removing a problem in
> another, but, if you need to revert to the previous versions syntax, then
> you probably aren't too worried about whether or not you have every single
> shiny new feature...
>
> Just a bit of a ramble.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: trouble caused by change in 7.3 handling of ''

From
Bruce Momjian
Date:
I have another interesting idea.  What if we create a postgresql.conf
param called prev_compatible that exists in every release.  We default
it to false/0.  If it always exists, we can add features under its
control even in minor releases.  Most interesting would be to have it be
an int and make a bitmask for up to 32 features that could be made
backward compatible to the previous release.  This would give us an
option in future releases.

---------------------------------------------------------------------------

Ian Harding wrote:
> Here's what Brand X does...
>
> Knowing that backward compatibility is a large concern for customers, Microsoft incorporated the concept of
compatibilitylevels into SQL Server 7.0. SQL Server 7.0 has three compatibility levels: 60 for SQL Server 6.0
databases,65 for SQL Server 6.5 databases, and 70 for SQL Server 7.0 databases. These levels let legacy databases in
the7.0 environment operate as if they were running under an earlier release of the product. 
>
> The system stored procedure sp_dbcmptlevel lets developers report on and change the compatibility level of their
databases.For example, to set the Northwind database to level 65 compatibility, execute the following command: 
>
> sp_dbcmptlevel [Northwind], 65
>
>
>
> Ian Harding
> Programmer/Analyst II
> Tacoma-Pierce County Health Department
> iharding@tpchd.org
> (253) 798-3549
>
> >>> "scott.marlowe" <scott.marlowe@ihs.com> 12/19/02 01:41PM >>>
> On Thu, 19 Dec 2002, Barry Lind wrote:
>
> > And given one report of a problem, I think that was the correct
> > response.  I don't think it is wise to add a GUC parameter for every
> > change that impacts one person/one app.  However if multiple people had
> > reported the same problem and the impact of the change was clearly
> > understood to negatively impact a large number of users then I am sure a
> > GUC parameter would have been added a while ago.
> >
> > The point I was trying to make is that there were probably a hundred
> > changes between 7.2 and 7.3 that could have impacted apps, some
> > intentional changes, others not (and it wouldn't make sense to add
> > parameters for all of them).  Deciding which of these have a significant
> > impact on existing apps is part of what the beta period is for.  The
> > more people that test their apps during the beta period the better
> > change we won't have issues like this in the future.
>
> So, and this is just theorizing, what about having every change that
> affects parsing syntacitcally, especially changes like this, be tracked
> and handled with a single compatibility GUC var like revert_prev_syntax
> that is only around for one version, defaults to off, and handles all the
> new versus old syntax.
>
> That way, when there's a new release, say 7.4 from 7.3, you can just strip
> out all the code marked as being turned on by this one GUC and move on
> with a new empty spot for revert_prev_syntax.
>
> Of course, then you might have a problem where reverting to old syntax
> takes away a feature someone wants in one area while removing a problem in
> another, but, if you need to revert to the previous versions syntax, then
> you probably aren't too worried about whether or not you have every single
> shiny new feature...
>
> Just a bit of a ramble.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: trouble caused by change in 7.3 handling of ''

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> I have another interesting idea.  What if we create a postgresql.conf
> param called prev_compatible that exists in every release.  We default
> it to false/0.  If it always exists, we can add features under its
> control even in minor releases.  Most interesting would be to have it be
> an int and make a bitmask for up to 32 features that could be made
> backward compatible to the previous release.

Including the definition of the individual bits' behavior?

That strikes me as a mess.  No one could ever be very sure what behavior
they were getting or not getting by setting such a thing.  But they
could be quite sure that their code would break in interesting ways in
the next release.

If we're going to have compatibility flags, they should be clearly
defined, clearly named, and control just one feature apiece (cf.
transform_null_equals).

            regards, tom lane

Re: trouble caused by change in 7.3 handling of ''

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > I have another interesting idea.  What if we create a postgresql.conf
> > param called prev_compatible that exists in every release.  We default
> > it to false/0.  If it always exists, we can add features under its
> > control even in minor releases.  Most interesting would be to have it be
> > an int and make a bitmask for up to 32 features that could be made
> > backward compatible to the previous release.
>
> Including the definition of the individual bits' behavior?
>
> That strikes me as a mess.  No one could ever be very sure what behavior
> they were getting or not getting by setting such a thing.  But they
> could be quite sure that their code would break in interesting ways in
> the next release.
>
> If we're going to have compatibility flags, they should be clearly
> defined, clearly named, and control just one feature apiece (cf.
> transform_null_equals).

You would define the bits in the release notes.  postgresql.conf only
gets created as part of initdb, and because minor releases don't initdb,
it would be easier to have a single variable that always exists.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073