Could postgres be much cleaner if a future release skipped backward compatibility?

From: Ron Mayer <rm_pg(at)cheapcomplexdevices(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Could postgres be much cleaner if a future release skipped backward compatibility?
Date: 2009-10-19 21:08:40
Message-ID: 4ADCD558.1020100@cheapcomplexdevices.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Tom Lane wrote:
> What are the probabilities that the OpenACSes of the world will just
> set the value to "backward compatible" instead of touching their code?

Would postgres get considerably cleaner if a hypothetical 9.0 release
skipped backward compatibility and removed anything that's only
maintained for historical reasons?

I notice the docs are filled with passages like the quotes
below - which suggest that there's a fair amount of stuff
that might be done differently if it weren't for backward
compatibility.

"For historical reasons (i.e., this is clearly wrong but it's far
too late to change it), subscripting of fixed-length array types
starts from zero, rather than from one as for variable-length arrays. "

"Most of the alternative names listed in the "Aliases" column are
the names used internally by PostgreSQL for historical reasons.
In addition, some internally used or deprecated types are available,
but are not listed here. "

"Note: The name "oid2name" is historical, and is actually
rather misleading"

"Note: Native Kerberos authentication has been deprecated
and should be used only for backward compatibility."

"Old-style functions are now deprecated because of portability
problems and lack of functionality, but they are still
supported for compatibility reasons. "

"Although they still work, they are deprecated due to poor
error handling, inconvenient methods of detecting end-of-data,
and lack of support for binary or nonblocking transfers."

"The PostgreSQL usage of SELECT INTO to represent table
creation is historical. It is best to use CREATE TABLE AS
for this purpose in new code. "

"regular expression metasyntax ...
option...m: historical synonym for n"

"Such comments are more a historical artifact than a useful facility,
and their use is deprecated; use the expanded syntax instead."

"The CAST syntax conforms to SQL; the syntax with :: is historical
PostgreSQL usage."

"timeofday() is a historical PostgreSQL function."

"(This does not match non-slice behavior and is done for
historical reasons.)"

"The SQL standard requires the use of the ISO 8601 format. The name of
the "SQL" output format is a historical accident."

"attribute ... The historical way to specify optional pieces of
information about the function. "
Caution

"Caution: If the configuration parameter standard_conforming_strings
is off, then PostgreSQL recognizes backslash escapes in both regular
and escape string constants. This is for backward compatibility
with the historical"

"historical alias for stddev_samp ... historical alias for var_samp"

"For historical reasons, this variable contains two independent components"

"For historical reasons, the same function doesn't just return a
boolean result; instead it has to store the flag at the location
indicated by the third argument. "

"For historical reasons, there are two levels of notice handling,"

"Note that subscripting is 1-based, whereas for historical
reasons proargtypes is subscripted from 0 "

"The term attribute is equivalent to column and is used
for historical reasons. "

"For historical reasons, ALTER TABLE can be used with
sequences too; but the only variants of ALTER TABLE
that are allowed with sequences are...."

"While this still works, it is deprecated and the special
meaning of \. can be expected to be removed in a future release."

"Use of this parameter is deprecated as of PostgreSQL 8.3;"

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2009-10-19 21:14:40 Re: per table random-page-cost?
Previous Message Eric B. Ridge 2009-10-19 21:01:07 Re: Controlling changes in plpgsql variable resolution