• Tom Lane's avatar
    Add the ability for the core grammar to have more than one parse target. · 844fe9f1
    Tom Lane authored
    This patch essentially allows gram.y to implement a family of related
    syntax trees, rather than necessarily always parsing a list of SQL
    statements.  raw_parser() gains a new argument, enum RawParseMode,
    to say what to do.  As proof of concept, add a mode that just parses
    a TypeName without any other decoration, and use that to greatly
    simplify typeStringToTypeName().
    
    In addition, invent a new SPI entry point SPI_prepare_extended() to
    allow SPI users (particularly plpgsql) to get at this new functionality.
    In hopes of making this the last variant of SPI_prepare(), set up its
    additional arguments as a struct rather than direct arguments, and
    promise that future additions to the struct can default to zero.
    SPI_prepare_cursor() and SPI_prepare_params() can perhaps go away at
    some point.
    
    Discussion: https://postgr.es/m/4165684.1607707277@sss.pgh.pa.us
    844fe9f1
spi.h 7.5 KB