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
Re: Deprecating RULES |
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: