Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

analyze.c

  • Tom Lane's avatar
    454edf1d
    Check for stack overflow in transformSetOperationTree(). · 454edf1d
    Tom Lane authored
    Since transformSetOperationTree() recurses, it can be driven to stack
    overflow with enough UNION/INTERSECT/EXCEPT clauses in a query.  Add a
    check to ensure it fails cleanly instead of crashing.  Per report from
    Matthew Gerber (though it's not clear whether this is the only thing
    going wrong for him).
    
    Historical note: I think the reasoning behind not putting a check here in
    the beginning was that the check in transformExpr() ought to be sufficient
    to guard the whole parser.  However, because transformSetOperationTree()
    recurses all the way to the bottom of the set-operation tree before doing
    any analysis of the statement's expressions, that check doesn't save it.
    454edf1d
    History
    Check for stack overflow in transformSetOperationTree().
    Tom Lane authored
    Since transformSetOperationTree() recurses, it can be driven to stack
    overflow with enough UNION/INTERSECT/EXCEPT clauses in a query.  Add a
    check to ensure it fails cleanly instead of crashing.  Per report from
    Matthew Gerber (though it's not clear whether this is the only thing
    going wrong for him).
    
    Historical note: I think the reasoning behind not putting a check here in
    the beginning was that the check in transformExpr() ought to be sufficient
    to guard the whole parser.  However, because transformSetOperationTree()
    recurses all the way to the bottom of the set-operation tree before doing
    any analysis of the statement's expressions, that check doesn't save it.