• Tom Lane's avatar
    Bend parse location rules for the convenience of pg_stat_statements. · 5d3fcc4c
    Tom Lane authored
    Generally, the parse location assigned to a multiple-token construct is
    the location of its leftmost token.  This commit breaks that rule for
    the syntaxes TYPENAME 'LITERAL' and CAST(CONSTANT AS TYPENAME) --- the
    resulting Const will have the location of the literal string, not the
    typename or CAST keyword.  The cases where this matters are pretty thin on
    the ground (no error messages in the regression tests change, for example),
    and it's unlikely that any user would be confused anyway by an error cursor
    pointing at the literal.  But still it's less than consistent.  The reason
    for changing it is that contrib/pg_stat_statements wants to know the parse
    location of the original literal, and it was agreed that this is the least
    unpleasant way to preserve that information through parse analysis.
    
    Peter Geoghegan
    5d3fcc4c
parse_coerce.c 71.6 KB