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
- 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.
- 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)
- Eliminate nodetool createepochunsafe once transactional metadata is available.
- Latency metrics for execution and failure/timeout counting (“Transaction” in client metrics?)
- 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
- How should txn statement parsing/preparation handle TTLs specified in updates?
- At what level do we want to integrate tracing?
- split from
CASSANDRA-17719 CEP-15: Multi-Partition Transaction CQL Support (Alpha)