Re: BUG #4434: Error inserting into view - unrecognized node type: 313
От | Alex Hunsaker |
---|---|
Тема | Re: BUG #4434: Error inserting into view - unrecognized node type: 313 |
Дата | |
Msg-id | 34d269d40809240038n1bb36a00w5c3ad6a0b6cb9c15@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #4434: Error inserting into view - unrecognized node type: 313 (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-bugs |
On Tue, Sep 23, 2008 at 10:38 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > "Dean Rasheed" <dean_rasheed@hotmail.com> writes: >> CREATE TABLE foo(a int, b int); >> CREATE VIEW foo_v AS SELECT * FROM foo; >> CREATE RULE foo_r AS ON INSERT TO foo_v DO INSTEAD INSERT INTO foo >> VALUES(NEW.a, NEW.b); >> INSERT INTO foo_v VALUES ((SELECT 1), (SELECT 2)), ((SELECT 3), (SELECT 4)); > >> ERROR: unrecognized node type: 313 > > It looks like the parser's code path for multi-row VALUES is neglecting > to detect sublinks and set pstate->p_hasSubLinks. I'm too tired to look > closer tonight; anyone want to poke into it? > > regards, tom lane The below fixes it for me... Its probably in the wrong place, and does not even try to do any detection... but here it is anyway *** a/src/backend/parser/analyze.c --- b/src/backend/parser/analyze.c *************** *** 538,543 **** transformInsertStmt(ParseState *pstate, InsertStmt *stmt) --- 538,545 ---- */ List *valuesLists = selectStmt->valuesLists; + pstate->p_hasSubLinks = true; + Assert(list_length(valuesLists) == 1); /* Do basic expression transformation (same as a ROW() expr) */
В списке pgsql-bugs по дате отправления: