• Andres Freund's avatar
    Rearm statement_timeout after each executed query. · f8e5f156
    Andres Freund authored
    Previously statement_timeout, in the extended protocol, affected all
    messages till a Sync message.  For clients that pipeline/batch query
    execution that's problematic.
    
    Instead disable timeout after each Execute message, and enable, if
    necessary, the timer in start_xact_command(). As that's done only for
    Execute and not Parse / Bind, pipelining the latter two could still
    cause undesirable timeouts. But a survey of protocol implementations
    shows that all drivers issue Sync messages when preparing, and adding
    timeout rearming to both is fairly expensive for the common parse /
    bind / execute sequence.
    
    Author: Tatsuo Ishii, editorialized by Andres Freund
    Reviewed-By: Takayuki Tsunakawa, Andres Freund
    Discussion: https://postgr.es/m/20170222.115044.1665674502985097185.t-ishii@sraoss.co.jp
    f8e5f156
postgres.c 121 KB