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

explain.c

  • Tom Lane's avatar
    895a94de
    Avoid incrementing the CommandCounter when CommandCounterIncrement is called · 895a94de
    Tom Lane authored
    but no database changes have been made since the last CommandCounterIncrement.
    This should result in a significant improvement in the number of "commands"
    that can typically be performed within a transaction before hitting the 2^32
    CommandId size limit.  In particular this buys back (and more) the possible
    adverse consequences of my previous patch to fix plan caching behavior.
    
    The implementation requires tracking whether the current CommandCounter
    value has been "used" to mark any tuples.  CommandCounter values stored into
    snapshots are presumed not to be used for this purpose.  This requires some
    small executor changes, since the executor used to conflate the curcid of
    the snapshot it was using with the command ID to mark output tuples with.
    Separating these concepts allows some small simplifications in executor APIs.
    
    Something for the TODO list: look into having CommandCounterIncrement not do
    AcceptInvalidationMessages.  It seems fairly bogus to be doing it there,
    but exactly where to do it instead isn't clear, and I'm disinclined to mess
    with asynchronous behavior during late beta.
    895a94de
    History
    Avoid incrementing the CommandCounter when CommandCounterIncrement is called
    Tom Lane authored
    but no database changes have been made since the last CommandCounterIncrement.
    This should result in a significant improvement in the number of "commands"
    that can typically be performed within a transaction before hitting the 2^32
    CommandId size limit.  In particular this buys back (and more) the possible
    adverse consequences of my previous patch to fix plan caching behavior.
    
    The implementation requires tracking whether the current CommandCounter
    value has been "used" to mark any tuples.  CommandCounter values stored into
    snapshots are presumed not to be used for this purpose.  This requires some
    small executor changes, since the executor used to conflate the curcid of
    the snapshot it was using with the command ID to mark output tuples with.
    Separating these concepts allows some small simplifications in executor APIs.
    
    Something for the TODO list: look into having CommandCounterIncrement not do
    AcceptInvalidationMessages.  It seems fairly bogus to be doing it there,
    but exactly where to do it instead isn't clear, and I'm disinclined to mess
    with asynchronous behavior during late beta.