As always, there is a variant for each approach to value locking.
This revision fixes bitrot that developed when the patchset was applied on master's tip, and also cleans up comments regarding how the parent insert carries auxiliary/child state through all stages of query processing. That should structure be clearer now, including how setrefs.c has the auxiliary/child ModifyTable use the same resultRelation as its parent.
If I build either option of the patch under MinGW, I get an error in the grammar files related to the IGNORE reserved word.
$ (./configure --host=x86_64-w64-mingw32 --without-zlib && make && make check) > /dev/null
In file included from ../../../src/include/parser/gramparse.h:29:0,
from gram.y:59:
../../../src/include/parser/gram.h:207:6: error: expected identifier before numeric constant
In file included from gram.y:14366:0:
I don't get this problem on Linux.
The build chain seems to meet the specified minimum:
flex.exe 2.5.35
bison (GNU Bison) 2.4.2
This is perl, v5.8.8 built for msys-64int
It seems like IGNORE is getting replaced by the preprocessor with something else, but I don't know how to get my hands on the intermediate file after the preprocessor has done its thing.
Also, in both Linux and MinGW under option 1 patch I get an OID conflict on OID 3261.