Re: trouble caused by change in 7.3 handling of ''
Here's what Brand X does...
Knowing that backward compatibility is a large concern for customers, Microsoft incorporated the concept of compatibility levels 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 the 7.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
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 compatibility levels 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 the 7.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
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 compatibility levels 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 the 7.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
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
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