Make parseNodeString() C idiom compatible with Visual Studio 2015.

Noah Misch <noah@leadboat.com>

Commit: f9f31aa91f82df863a35354893978e1937863d7c
Author: Noah Misch <noah@leadboat.com>
Date: 2023-06-14T12:31:54Z
Releases: 16.0
Make parseNodeString() C idiom compatible with Visual Studio 2015.

Between v15 and now, this function's "else if" chain grew from 252 lines
to 592 lines, exceeding a compiler limit that manifests as "fatal error
C1026: parser stack overflow, program too complex (compiling source file
src/backend/nodes/readfuncs.c)".  Use "if (...)  return ...;" instead.

Reviewed by Tom Lane, Peter Eisentraut and Michael Paquier.  Not all
reviewers endorse this.

Discussion: https://postgr.es/m/20230607185458.GA1334487@rfd.leadboat.com

Files

PathChange+/−
src/backend/nodes/gen_node_support.pl modified +2 −2
src/backend/nodes/readfuncs.c modified +2 −10

Discussion