Re: BUG #16714: INSERT ON CONFLICT DO UPDATE fails to infer constraint if it's not at top-level partition

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: BUG #16714: INSERT ON CONFLICT DO UPDATE fails to infer constraint if it's not at top-level partition
Дата
Msg-id 20201119000656.4uucddwfxb3u3veq@alap3.anarazel.de
обсуждение исходный текст
Ответ на Re: BUG #16714: INSERT ON CONFLICT DO UPDATE fails to infer constraint if it's not at top-level partition  (Andy S <gatekeeper.mail@gmail.com>)
Список pgsql-bugs
Hi,

On 2020-11-19 02:49:20 +0300, Andy S wrote:
> Oh! What a gem I mined in sources:
> 
> branch: REL_11_STABLE
> src/backend/executor/nodeModifyTable.c:
>          * BEFORE ROW INSERT Triggers.
>          *
>          * Note: We fire BEFORE ROW TRIGGERS for every attempted insertion
> in an
>          * INSERT ... ON CONFLICT statement.  We cannot check for constraint
>          * violations before firing these triggers, because they can change
> the
>          * values to insert.  Also, they can run arbitrary user-defined
> code with
>          * side-effects that we can't cancel by just not inserting the
> tuple.
>          */
> 
> Still not the place where ON CONFLICT could be validated on per-row
> basis?

On conflict arbiter determination happens much earlier - and that can't,
as I have explained earlier, really be changed. We need to know which
index etc this applies to during parse analysis, not during execution
time. This happens as part of transformOnConflictClause() called from
transformInsertStmt().

Greetings,

Andres Freund



В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #16722: PG hanging on COPY when table has close to 2^32 toasts in the table.
Следующее
От: Vik Fearing
Дата:
Сообщение: Re: BUG #16726: Invalid input syntax is not a useful error message