Re: Issues with ON CONFLICT UPDATE and REINDEX CONCURRENTLY
| От | Michael Paquier |
|---|---|
| Тема | Re: Issues with ON CONFLICT UPDATE and REINDEX CONCURRENTLY |
| Дата | |
| Msg-id | aSOaaVdHU7EJo4kT@paquier.xyz обсуждение исходный текст |
| Ответ на | Re: Issues with ON CONFLICT UPDATE and REINDEX CONCURRENTLY (Álvaro Herrera <alvherre@kurilemu.de>) |
| Список | pgsql-hackers |
On Sun, Nov 23, 2025 at 01:14:37PM +0100, Alvaro Herrera wrote: > Yes, exactly that ... but can this be used by the SQL injection points > functionality? The test is an isolation .spec file, and I didn't find a > way to say "make me sleep when I hit this injection point, but only if > conflict is false". Or maybe I just missed it. (Sorry for the low activity, last week was a crazy conference week and I'm still recovering.) Reading through v13-0001, there is currently no direct way with the existing callbacks to do as you want, which would be to push down a conditional wait inside the callback itself, based on a run-time stack. There would be two ways to do that, by extending the facility: - Simple one: addition of a new dedicated callback, that accepts one single boolean argument. - More complicated one: extend the module injection_points so as it is possible to pass down conditions that should be checked at run-time. I've mentioned that in the past, folks felt meh. Saying that, Mihail's patch to just run the injection point only if conflict == false is OK, and that's what I have seen most hackers do as a matter of simplicity. This makes the injection point footprint in the backend slightly larger but it's not that bad, englobed inside an ifdef. You could also use a secondary point for an else branch defined in execIndexing.c, with a different name and a different callback attached to it if you want to take a special action for the conflict == true case. -- Michael
Вложения
В списке pgsql-hackers по дате отправления: