summaryrefslogtreecommitdiff
path: root/src/test/isolation/expected/insert-conflict-do-update-3.out
diff options
context:
space:
mode:
authorTom Lane2025-07-15 22:11:18 +0000
committerTom Lane2025-07-15 22:11:18 +0000
commitaad1617b76aef034a27f2a52903702dc5435c422 (patch)
treeb75369acb904b974a2bd3a1571faca38210167b4 /src/test/isolation/expected/insert-conflict-do-update-3.out
parent8ffd9ac3b206c0a93f9a16e0341c9f7850d26483 (diff)
Silence uninitialized-value warnings in compareJsonbContainers().HEADmaster
Because not every path through JsonbIteratorNext() sets val->type, some compilers complain that compareJsonbContainers() is comparing possibly-uninitialized values. The paths that don't set it return WJB_DONE, WJB_END_ARRAY, or WJB_END_OBJECT, so it's clear by manual inspection that the "(ra == rb)" code path is safe, and indeed we aren't seeing warnings about that. But the (ra != rb) case is much less obviously safe. In Assert-enabled builds it seems that the asserts rejecting WJB_END_ARRAY and WJB_END_OBJECT persuade gcc 15.x not to warn, which makes little sense because it's impossible to believe that the compiler can prove of its own accord that ra/rb aren't WJB_DONE here. (In fact they never will be, so the code isn't wrong, but why is there no warning?) Without Asserts, the appearance of warnings is quite unsurprising. We discussed fixing this by converting those two Asserts into pg_assume, but that seems not very satisfactory when it's so unclear why the compiler is or isn't warning: the warning could easily reappear with some other compiler version. Let's fix it in a less magical, more future-proof way by changing JsonbIteratorNext() so that it always does set val->type. The cost of that should be pretty negligible, and it makes the function's API spec less squishy. Reported-by: Erik Rijkers <er@xs4all.nl> Author: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-by: Andres Freund <andres@anarazel.de> Discussion: https://postgr.es/m/988bf1bc-3f1f-99f3-bf98-222f1cd9dc5e@xs4all.nl Discussion: https://postgr.es/m/0c623e8a204187b87b4736792398eaf1@postgrespro.ru Backpatch-through: 13
Diffstat (limited to 'src/test/isolation/expected/insert-conflict-do-update-3.out')
0 files changed, 0 insertions, 0 deletions