Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-9966

Option to apply statements within a batch sequentially

    XMLWordPrintableJSON

Details

    Description

      It is possible to batch CAS statements such that their outcome is different to the outcome were they executed sequentially outside of a batch.

      eg.

      a | b | c
      a | 1 | 1

      BEGIN BATCH
      UPDATE foo SET b=2 WHERE a='a' iF c=1
      UPDATE foo SET c=2 WHERE a='a' IF b=1
      APPLY BATCH

      results in

      a | b | c
      a | 2 | 2

      If these statements were not batched, the outcome would be

      UPDATE foo SET b=2 WHERE a='a' iF c=1

      a | b | c
      a | 2 | 1

      UPDATE foo SET c=2 WHERE a='a' IF b=1
      applied=false (pre-condition b=1 not met)

      Cassandra already checks for incompatible preconditions within a batch (eg one statement with IF c=1 and another statement with IF c=2). It should also check for mutations to columns in one statement that affect the pre-conditions of another statement, or it should evaluate the statement pre-conditions sequentially after applying the mutations of the previous statement to an in-memory model of the partition.

      For backwards compatibility this would have to be a new "strict" batch mode, eg.
      BEGIN STRICT BATCH

      Attachments

        Activity

          People

            Unassigned Unassigned
            soverton Sam Overton
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated: