As far as I can tell, postgresql has the following object-relational
features:
(1) OIDs -- no longer on by default for user tables, and I can't
remember seeing OIDs recommended for users. Used in system tables, but
the main special property of OIDs (that they are hidden) is annoying
more than anything else. Who wants to select from a system table without
seeing the OIDs?
(2) Inheritance -- useful feature, mostly for partitioning. Occasionally
suggested to model actual inheritance in the OO sense, but often as one
of a couple alternatives.
(3) Dot function call syntax: "select foo.count from foo" -- surprising
to most people, and I don't recall ever seeing it suggested for actual
use. I would go so far as to say we should deprecate this syntax,
because I think it's more likely to be some kind of mistake than
anything else.
Given all this, why do we still call postgres an object-relational
system (in the first sentence of our "About" page)? Is it time to drop
"object" and just call ourselves a relational (and/or SQL) system? If
someone comes to postgres for our OO support, they are probably going to
be disappointed.
Thoughts?
Regards,
Jeff Davis