Re: Why do OLD and NEW have special internal names?
От | Robert Haas |
---|---|
Тема | Re: Why do OLD and NEW have special internal names? |
Дата | |
Msg-id | 603c8f070911051703m7593c301md64523dbde717365@mail.gmail.com обсуждение исходный текст |
Ответ на | Why do OLD and NEW have special internal names? (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Why do OLD and NEW have special internal names?
|
Список | pgsql-hackers |
On Thu, Nov 5, 2009 at 4:33 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > So I was testing the next step of plpgsql modification, namely actually > letting the parser hooks do something, and it promptly blew up in > trigger functions, like so: > > + ERROR: OLD used in query that is not in a rule > + LINE 1: SELECT OLD > + ^ > + QUERY: SELECT OLD > + CONTEXT: SQL statement in PL/PgSQL function "trigger_data" near line 35 > > The reason is that because plpgsql is no longer translating references > to its names into Params before letting the core parser see them, the > kluge in gram.y that changes "OLD" to "*OLD*" and "NEW" to "*NEW*" > kicks in, or actually decides to throw an error instead of kicking in. > > I am wondering what is the point at all of having that kluge. It > certainly doesn't manage to make OLD/NEW not act like reserved words, > in fact rather more the opposite, as shown here. If we just made those > names be ordinary table alias names in rule queries, wouldn't things > work as well or better? > > BTW, this brings up another point, which is that up to now it's often > been possible to use plpgsql variable names that conflict with > core-parser reserved words, so long as you didn't need to use the > reserved word with its special meaning. That will stop working when > this patch goes in. Doesn't bother me any, but if anyone thinks it's > a serious problem, speak now. Any keyword or just fully reserved keywords? ...Robert
В списке pgsql-hackers по дате отправления: