Re: [HACKERS] Re: [SQL] Proposed Changes to PostgreSQL - Mailing list pgsql-hackers

From Chris Bitmead
Subject Re: [HACKERS] Re: [SQL] Proposed Changes to PostgreSQL
Date
Msg-id 389A157B.1EDF669@nimrod.itg.telecom.com.au
Whole thread Raw
In response to Re: [SQL] Proposed Changes to PostgreSQL  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: [HACKERS] Re: [SQL] Proposed Changes to PostgreSQL  ("Ross J. Reedstrom" <reedstrm@wallace.ece.rice.edu>)
List pgsql-hackers
Tom, I agree with most of what you say. If we want to have ** be the
default
syntax for getting sub-columns I can live with that (for suggestion (3))

But for (2), I do feel very strongly that getting sub-tuples should be
the
"default default", and a SET GETSUBCLASSES=true should be the default
setting.

I've been using the postgres inheritance for a real system and I can
say with certainty that this is a massive source of errors. Not 
wanting sub-class tuples seems rarely needed, and leaving off the "*" is
something that too often seems forgotten. I often can trawl through
code and realise that some query is missing the "*" but it hasn't been
discovered yet. In fact I find that almost all queries require the "*"
when you have a proper OO model, and not using "*" is usually laziness.

Also when adding a sub-class where there previously was none, one 
usually has to trawl through the queries and add "*" to all of them
because as I said, there are almost never occasions where "*" is not
required in real life OO models.

So I understand the compatibility issue here, but I really feel strongly
that this should be changed now before there really are a lot of people
using it. Sure, have as many compatibility modes as you like, but I
think
this is a broken enough design that the default should be changed.
Apparently Illustra/Informix agreed.

Tom Lane wrote:
> 
> "Mark Hollomon" <mhh@nortelnetworks.com> writes:
> > How about a set variable?
> 
> > SET GETSUBCLASSES = true
> 
> > With the '*' and ONLY being explicit overrides to the setting
> > of the variable. The default would be 'false'.
> 
> I like that a lot.  Clean, flexible, doesn't break any existing
> applications.
> 
> Perhaps the business of whether to fetch extra columns from subclasses
> could be done similarly.  I am beginning to understand why Chris wants
> to do that, and I see that it would support a particular style of
> database programming very nicely.  But I really fail to see why it's
> necessary to change the default behavior to cater to those apps rather
> than existing ones.  Let the new apps use a variant syntax; don't
> expect people to change existing code in order to avoid getting tripped
> up by a new feature.
> 
> Note that "oh they won't see the extra columns if they're using an
> old API" doesn't answer my objection.  I'm concerned about the
> performance hit from fetching those columns and transferring them to
> the client, as well as the memory hit of storing them in query results
> on the client side.  We should *not* set things up in such a way that
> that happens by default when the client didn't ask for it and isn't
> even using an API that can support it.  That's why it'd be a mistake
> to redefine the existing query syntax to act this way.
> 
> The suggestion of "SELECT ** FROM ..." sounds pretty good to me,
> actually.  I don't really see any need for changing the behavior of
> anything that looks like a standard SQL query.  Applications that
> need this feature will know that they need it and can issue a query
> that specifically requests it.
> 
> > I would not object to a configuration switch that would change the
> > default.
> 
> Mmm, I think that would probably not be such a hot idea.  That would
> introduce a pretty fundamental semantics incompatibility between
> different installations, which would hurt script portability, complicate
> debugging and support, yadda yadda.  I think a SET variable is enough...
> 
>                         regards, tom lane


pgsql-hackers by date:

Previous
From: Chris Bitmead
Date:
Subject: Re: [HACKERS] Re: [SQL] Proposed Changes to PostgreSQL
Next
From: Chris Bitmead
Date:
Subject: Re: [HACKERS] how to deal with sparse/to-be populated tables