- Version: 6 (MinAcceptedVersion: 6)
  - The producer<->consumer (FlowStream RPC) protocol has changed: the
    consumer_signal.handshake field was introduced. The handshake messages are
    sent by the server-side of FlowStream informing the producer of the
    consumer's status. The messages would cause a server running the previous
    version to erroneously think that the consumer has sent a drain signal,
    therefore MinAcceptedVersion was increased.
- Version: 7 (MinAcceptedVersion: 6)
  - Three new aggregations (SQRDIFF, FINAL_VARIANCE, FINAL_STDDEV) were
    introduced to support local and final aggregation of the builtin
    functions STDDEV and VARIANCE. These new aggregations would be unrecognized
    by a server running older versions, hence the version bump. However, a
    server running v7 can still process all plans from servers running v6,
    thus the MinAcceptedVersion is kept at 6.
- Version: 8 (MinAcceptedVersion: 6)
  - An InterleavedReaderJoiner processor was introduced to enable more
    efficient joins between interleaved tables. The new processor spec would be
    unrecognized by a server running older versions, hence the version bump.
    Servers running v8 can still execute regular joins between interleaved
    tables from servers running v6, thus the MinAcceptedVersion is kept at 6.
- Version: 9 (MinAcceptedVersion: 6)
  - Many changes were made without bumping the version. These changes involved
    changes to the semantics of existing processors. These changes include:
    - Two new join types (LEFT_SEMI, LEFT_ANTI) were added to the JoinType enum
      to support new types of joins that can be used to improve performance of
      certain queries. The new join types would not be recognized by a server
      with an old version number.
    - The JoinReaderSpec was modified by adding three new properties
      (lookup_columns, on_expr, and index_map) to enable the JoinReader to perform
      lookup joins enabling more efficient joins for certain queries. Old server
      versions would not recognize these new properties.
    - Two new join types (INTERSECT_ALL, EXCEPT_ALL) were added to the sqlbase.JoinType
      enum to support INTERSECT and EXCEPT queries. These "set operation" queries
      can now be planned by DistSQL, and older versions will not be capable of
      supporting these queries.
    - The ARRAY_AGG and JSON_AGG aggregate functions were added to the
      AggregatorSpec_Func enum. Older versions will not recognize these new enum
      members, and will not be able to support aggregations with either.
    - IMPORT was changed to support importing CSVs with no primary key specified.
      This required a change to the CSV proto semantics, making old and new
      versions mutually incompatible. This was an EXPERIMENTAL feature in 1.1 and
      thus we do not bump the MinAcceptedVersion, even though IMPORT in mixed
      clusters without primary keys will succeed with incorrect results.
    - TableReader was extended to support physical checks. Old versions would not
      recognize these new fields.
- Version: 10 (MinAcceptedVersion: 6)
    - The AlgebraicSetOp processor was removed, as it is not used. It was never
      used in plans, but its absence does change the ProcessorCoreUnion message,
      so a version bump is required.
- Version: 11 (MinAcceptedVersion: 6)
    - The txn field in the SetupFlowRequest is made nullable. Backfiller flows
      no longer pass in a txn (it was passed by the gateway, but unused by the
      remote processors before).
- Version: 12 (MinAcceptedVersion: 6)
    - The AggregatorSpec has a new OrderedGroupCols field, which older versions
      will not recognize.
- Version: 13 (MinAcceptedVersion: 6)
    - Add NumRows to ValuesSpec (used for zero-column case). The implementation
      tolerates this field being unset in existing planning cases (at lest one
      column).
- Version: 14 (MinAcceptedVersion: 6)
    - Enhancements to lookup joins. They now support joining against secondary
      indexes as well as left outer joins. Left join support required two
      additional fields on JoinReaderSpec: index_filter_expr and type.
    - Add support for processing queries with tuples in DistSQL. Old versions
      would not recognize the new tuple field in the proto. (This change was
      introduced without bumping the version.)
- Version: 15 (MinAcceptedVersion: 6)
    - Add SRF support via a new ProjectSet processor. The new processor spec
      would not be recognized by old versions.
- Version: 17 (MinAcceptedVersion: 6)
    - Add scalar vs non-scalar designation to aggregator.
- Version: 18 (MinAcceptedVersion: 6)
    - New EvalContext field.
- Version: 19 (MinAcceptedVersion: 6)
    - More EvalContext fields.
- Version: 20 (MinAcceptedVersion: 6)
    - Add labels to tuple types.
- Version: 21 (MinAcceptedVersion: 6)
    - Permit non-public (mutation) columns in TableReader return values, when
      requested. The new processor spec would be ignored by old versions.
- MinAcceptedVersion: 21
    - Bump in preparation for the 2.1 release. A large amount of changes
      in both IMPORT and SQL execution have merged since 2.0. We have not
      adequately tested them in skewed version clusters to have confidence
      that they are compatible. We decided it was safer to bump the min
      version to prevent possible bugs at the cost of performance during
      the upgrade.
