Hi, I see a vote for this has been called. I should have provided more prompt feedback sooner.
I am a strong +1 on adding column level constraints being a good thing to add. I'm not too concerned about row/partition/table level constraints, but I would like to change the syntax before I would be +1 on this CEP. It would be good to align the syntax as closely as possible to our existing syntax, and if not that then MySQL/Postgres. For example it looks like we don't have a string length function so maybe add `LENGTH` (consistent with MySQL/Postgres) to also use with column level constraints. It looks like there are generally two forms of constraint syntax, one is expressed as part of the column definition, and the other is a named or anonymous constraint on the table. https://www.w3schools.com/sql/sql_check.asp Can we align with having these column level ones as `CHECK` constraints like in SQL, and `CONSTRAINT [constraint_name] CHECK` would be used if creating a named or multi-column constraint? Will column level check constraints support `AND` so that you can specify multiple constraints on the column? I am not sure if that is supported in other databases, but it would be good to align on that as well. RE some implementation things to keep in mind: If TCM is in use and the constraints are defined in the schema data structure this should work fine with Accord because all coordinators (regular, recovery) will deterministically agree on the constraints being enforced BUT... this also has to map to how/when constraints are enforced. Both Accord and Paxos work best when the constraints are enforced when the final mutation to be applied is created and not later when it is being applied to the CFS. This also reduces duplication of enforcement checking work to just the coordinator for the write. Ariel On Fri, May 31, 2024, at 5:23 PM, Bernardo Botella wrote: > Hello everyone, > > I am proposing this CEP: > CEP-42: Constraints Framework - CASSANDRA - Apache Software Foundation > <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-42%3A+Constraints+Framework> > cwiki.apache.org > <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-42%3A+Constraints+Framework> > favicon.ico > <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-42%3A+Constraints+Framework> > > And I’m looking for feedback from the community. > > Thanks a lot! > Bernardo