Re: Issues with ON CONFLICT UPDATE and REINDEX CONCURRENTLY
Michael Paquier <michael@paquier.xyz>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Replace flaky CIC/RI isolation tests with a TAP test
- e1c971945d62 19 (unreleased) landed
-
Disable recently added CIC/RI isolation tests
- 77038d6d0b49 19 (unreleased) landed
-
Fix infer_arbiter_index for partitioned tables
- 81f72115cf18 19 (unreleased) landed
-
Stabilize tests some more
- a4a0fa0c7587 19 (unreleased) landed
-
Put back alternative-output expected files
- be25c7767728 19 (unreleased) landed
-
Remove doc and code comments about ON CONFLICT deficiencies
- 758479213d57 19 (unreleased) landed
-
Avoid use of NOTICE to wait for snapshot invalidation
- 5dee7a603f66 19 (unreleased) landed
-
Fix ON CONFLICT with REINDEX CONCURRENTLY and partitions
- 90eae926abbb 19 (unreleased) landed
-
Fix ON CONFLICT ON CONSTRAINT during REINDEX CONCURRENTLY
- 2bc7e886fc1b 19 (unreleased) landed
-
Fix new test for CATCACHE_FORCE_RELEASE builds
- 9e8fa05d3412 19 (unreleased) landed
-
Improve test case stability
- 417ac9c1eeeb 19 (unreleased) landed
-
Fix infer_arbiter_index during concurrent index operations
- bc32a12e0db2 19 (unreleased) landed
-
Doc: cover index CONCURRENTLY causing errors in INSERT ... ON CONFLICT.
- 438ccd33a37a 13.23 landed
- faba2595d619 14.20 landed
- e1dd1f924e19 15.15 landed
- 4c2895629f6f 16.11 landed
- 46524d519a2d 18.1 landed
- 27f714b5dad7 17.7 landed
- 8b18ed6dfbb8 19 (unreleased) landed
-
Fix infer_arbiter_indexes() to not assume resultRelation is 1.
- 915de706d28c 17.0 cited
-
Revert temporal primary keys and foreign keys
- 8aee330af55d 17.0 cited
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