Re: Deprecating RULES - Mailing list pgsql-hackers

From Peter Geoghegan
Subject Re: Deprecating RULES
Date
Msg-id CAEYLb_VwC-gFyHc57vN1Yd7Ob32R2bR1hftoaD3Qt4wKx8mbnw@mail.gmail.com
Whole thread Raw
In response to Re: Deprecating RULES  (Greg Stark <stark@mit.edu>)
Responses Re: Deprecating RULES  (Bruce Momjian <bruce@momjian.us>)
Re: Deprecating RULES  (Dimitri Fontaine <dimitri@2ndQuadrant.fr>)
List pgsql-hackers
On 15 October 2012 00:30, Greg Stark <stark@mit.edu> wrote:
> In fact it's not a very good analogy because the situation is
> *precisely* the same -- rules *are* macros and manipulate the raw sql
> before it's run and the reason they can't be replaced by triggers is
> because, like functions, triggers happen after the code is compiled
> and run.

I quite like this analogy, because it nicely illustrates the problems
with rules.

C, and the C preprocessor, are essential the same now as they were in
the early 1970s. I think that *an emphasis* on a preprocessing stage
of translation is a fairly discredited idea (though there are some
sensible uses, particularly where alternatives are not available). C99
introduced inline functions, probably in no small part because it is
quite obvious that they are often superior to macros. Consider the two
most successful programming languages that were obviously influenced
by C: Java and C++. The first doesn't have a preprocessor, and the
second strongly encourages using numerous alternatives to macros where
possible, which is almost always. Maybe you don't like this analogy,
because you consider C to be a systems programming language, and as
such think it is only right and proper that programmers should be
given enough rope to hang themselves. Perhaps you're right, but the
same surely cannot be said for SQL. The original appeal of SQL was
that it was supposedly possible for non-programmers to write it.

Clearly deprecating rules implies some loss of functionality - there
is no exact, drop-in equivalent to something that magically rewrites
SQL that isn't equally baroque and problematic. If that's the bar,
then detractors of rules should stop wasting their breath, because the
bar has been set impossibly high.

On a *practical* level triggers are complete replacements for
user-defined rules. All that it takes to be able to *always* say that
one language feature is not equivalent to another, and on that basis
the other should not be deprecated, is a sufficient degree of pedantry
(not that I'm implying that you or anyone else was being pedantic, or
that concerns raised should not be heeded).

-- 
Peter Geoghegan       http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Deprecating RULES
Next
From: Andrew Dunstan
Date:
Subject: Re: Deprecating RULES