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

CEP-15: Multi-Partition Transaction CQL Support (Alpha -> v1)

    XMLWordPrintableJSON

Details

    • Semantic
    • Normal
    • All
    • None

    Description

      With CASSANDRA-17719 complete, basic/alpha CQL support for Accord is now available in the cep-15-accord branch. There are, however, a number of features and enhancements that we would still like to add before we make it available to users. Here is a summary of those items, broadly categorized:

      Error Messages and UX

      • Fix the element/field names in result metadata to match the user query
      • Better error messages
        • Append/subtracting to/from frozen list
        • attempts to use reference in WHERE clause
        • LET using a reserved word

      Domain Object Cleanup

      • Given Selector is serializable, attempt to reuse it in TxnReference rather than hard coding data conversion cases
      • Separate current current LET statement from SelectStatement, likely as a new LetStatement that names a SelectStatement
      • Explore unifying Operation and ReferenceOperation
      • Include non-Row items of FilteredPartition in TxnData#estimatedSizeOnHeap()
      • Explore possibility of making Bound serializable and using it directly in TxnCondition
      • Change internal representation of TxnDataName to avoid String -> ByteBuffer conversions
      • Have TxnCondition/TxnUpdate support slice() to full take advantage of partial state replication
      • Update serialization logic to reflect CASSANDRA-18099

      Testing

      • Figure out the original intent of placeholder tests in AccordIntegrationTest (ex. acceptInvalidationTest())
      • Remove hack in AccordConfigurationService (when we have Transactional Metadata)
      • Verify concretely that we disable Guardrails.
      • Audit the way we propagate timestamps through execution.

      Features

      • Full JSON support
      • Final decision of whether we should support returning the result of an IF/condition
      • Constant terms on the RHS of LET
      • Support for having a reference on both LHS and RHS of IF predicates
      • Support for CONTAINS, CONTAINS KEY, and IN (important for CAS parity)
      • Nested UDT support
      • Mixed conditional and unconditional updates (should this be post-v1?)
      • Arithmetic operations on references in INSERT/UPDATE (ex. INSERT INTO ks.tbl1 (k, c, v) VALUES (0, 0, a.v + 1)

      Tooling

      • Eliminate nodetool createepochunsafe once transactional metadata is available.

      Documentation

      • CQL language documentation and bump the CQL language specification version
      • JavaDoc for all new statement classes
      • Integrate demo.txt into broader documentation somewhere or remove

      Questions

      • How should txn statement parsing/preparation handle TTLs specified in updates?
      • At what level do we want to integrate tracing?

      Attachments

        Issue Links

          Activity

            People

              maedhroz Caleb Rackliffe
              maedhroz Caleb Rackliffe
              Caleb Rackliffe
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: