1.1.
CONSTRAINED WITH is good for me

1.2
I prefer 1.1. approach.

2.
I am for explicit names over generated ones. I think that the only names
which are generated are names for indexes when not specified.

3. I am OK with the exclusion. This is an interesting problem. If somebody
wants these two to be constrained and checked then I guess the solution
would be to have them both in a tuple instead of in two different columns.
So we do not need to support this cross-columns feature. However, I am not
sure how we would go around checking tuples. Is that covered? We would need
to find a way how to reference that

create table a_table (int id, a_tuple tuple<int, int>, CONSTRAINT
a_tuple_constraint CHECK (a_tuple.1 != a_tuple.2)

or something similar.

BTW there is nothing about tuples in that CEP yet.



On Fri, Oct 25, 2024 at 12:21 AM Yifan Cai <yc25c...@gmail.com> wrote:

> Hello, everyone.
>
> I’ve been reviewing the patch for the constraints framework
> <https://github.com/apache/cassandra/pull/3562>, and I believe there are
> several aspects outlined in CEP-42 that warrant reconsideration. I’d like
> to bring these points up for discussion.
> *1. New Reserved Keyword*
>
> The patch introduces a new reserved keyword, "CONSTRAINT." Since reserved
> keywords cannot be used as identifiers unless quoted, this can complicate
> data definition declarations. We should aim to avoid adding new reserved
> keywords where possible. Here are a couple of alternatives:
>
> 1.1 *Inline Constraint Definition*
>
> We could eliminate the keyword "CONSTRAINT." Instead, similar to data
> masking, constraints could be defined using "CONSTRAINED WITH." For
> example, in the following code, r_value_range_lower_bound and
> r_value_range_upper_bound are constraint names, followed immediately by
> their expressions, with multiple constraints connected using "AND".
>
> CREATE TABLE rgb (
>   name text PRIMARY KEY,
>   r int CONSTRAINED WITH r_value_range_lower_bound CHECK r >= 0 AND 
> r_value_range_upper_bound CHECK r < 256,
>   ...
> );
>
> 1.2 *Special Symbol*
>
> Another option is to use a special symbol to differentiate from
> identifiers, such as "@CONSTRAINT." However, since there is currently no
> annotation-like concept in CQL, this might confuse users.
>
> CREATE TABLE rgb (
>   name text PRIMARY KEY,
>   r int,
>   ...
>   @CONSTRAINT r_value_range_lower_bound CHECK r >= 0,
>   @CONSTRAINT r_value_range_upper_bound CHECK r < 256,
>   ...
> );
>
> *2. Constraint Name*
>
> CEP-42 states, "Name of the constraint is optional. If it is not provided,
> a name is generated for the constraint."
>
> However, based on the actual statements defining constraints, I believe
> names should be *mandatory* for clarity and usability. System-generated
> names often lack descriptiveness.
> *3. Cross-Column Constraints*
>
> CEP-42 proposes allowing constraints that compare multiple columns. For
> example,
>
> CREATE TABLE keyspace.table (
>   p1 int,
>   p2 int,
>   ...,
>   CONSTRAINT [name] CHECK (p1 != p2)
> );
>
> Such constraints can be problematic due to their referential nature.
> Consider scenarios where column p2 is dropped, or when insert/update
> operations include only partial values (e.g., only inserting p1). Should
> the query result in a read (before write), or should it fail due to
> incomplete values?
>
> For simplicity, I propose that, at least for the initial iteration, we
> exclude support for cross-column constraints. In other words, constraints
> should only check the values of individual columns.
>
> - Yifan
>
> On Thu, Sep 19, 2024 at 11:46 AM Patrick McFadin <pmcfa...@gmail.com>
> wrote:
>
>> Thanks for the update. My inbox search failed me :D
>>
>> On Thu, Sep 19, 2024 at 11:31 AM Bernardo Botella <
>> conta...@bernardobotella.com> wrote:
>>
>>> Hi Patrick,
>>>
>>> Thanks for taking a look at this and keeping the house tidy.
>>>
>>> I announced the voting results on a sepparate thread:
>>> lists.apache.org
>>> <https://lists.apache.org/thread/v73cwc8p80xx7zpkldjq6w1qrkf2k9h0>
>>> [image: favicon.ico]
>>> <https://lists.apache.org/thread/v73cwc8p80xx7zpkldjq6w1qrkf2k9h0>
>>> <https://lists.apache.org/thread/v73cwc8p80xx7zpkldjq6w1qrkf2k9h0>
>>>
>>> As a follow up, this is not stalled, and I’m currently working on a
>>> patch that will be soon available for review.
>>>
>>> Thanks,
>>> Bernardo
>>>
>>>
>>> On Sep 19, 2024, at 11:20 AM, Patrick McFadin <pmcfa...@gmail.com>
>>> wrote:
>>>
>>> I'm going to cap this thread. Vote passes with no binding -1s.
>>>
>>> On Tue, Jul 2, 2024 at 2:25 PM Jordan West <jorda...@gmail.com> wrote:
>>>
>>>> +1
>>>>
>>>> On Tue, Jul 2, 2024 at 12:15 Francisco Guerrero <fran...@apache.org>
>>>> wrote:
>>>>
>>>>> +1
>>>>>
>>>>> On 2024/07/02 18:45:33 Josh McKenzie wrote:
>>>>> > +1
>>>>> >
>>>>> > On Tue, Jul 2, 2024, at 1:18 PM, Abe Ratnofsky wrote:
>>>>> > > +1 (nb)
>>>>> > >
>>>>> > >> On Jul 2, 2024, at 12:15 PM, Yifan Cai <yc25c...@gmail.com>
>>>>> wrote:
>>>>> > >>
>>>>> > >> +1 on CEP-42.
>>>>> > >>
>>>>> > >> - Yifan
>>>>> > >>
>>>>> > >> On Tue, Jul 2, 2024 at 5:17 AM Jon Haddad <j...@jonhaddad.com>
>>>>> wrote:
>>>>> > >>> +1
>>>>> > >>>
>>>>> > >>> On Tue, Jul 2, 2024 at 5:06 AM <shailajako...@icloud.com> wrote:
>>>>> > >>>> +1
>>>>> > >>>>
>>>>> > >>>>
>>>>> > >>>>> On Jul 1, 2024, at 8:34 PM, Doug Rohrer <droh...@apple.com>
>>>>> wrote:
>>>>> > >>>>>
>>>>> > >>>>> +1 (nb) - Thanks for all of the suggestions and Bernardo for
>>>>> wrangling the CEP into shape!
>>>>> > >>>>>
>>>>> > >>>>> Doug
>>>>> > >>>>>
>>>>> > >>>>>> On Jul 1, 2024, at 3:06 PM, Dinesh Joshi <djo...@apache.org>
>>>>> wrote:
>>>>> > >>>>>>
>>>>> > >>>>>> +1
>>>>> > >>>>>>
>>>>> > >>>>>> On Mon, Jul 1, 2024 at 11:58 AM Ariel Weisberg <
>>>>> ar...@weisberg.ws> wrote:
>>>>> > >>>>>>> __
>>>>> > >>>>>>> Hi,
>>>>> > >>>>>>>
>>>>> > >>>>>>> I am +1 on CEP-42 with the latest updates to the CEP to
>>>>> clarify syntax, error messages, constraint naming and generated naming,
>>>>> alter/drop, describe etc.
>>>>> > >>>>>>>
>>>>> > >>>>>>> I think this now tracks very closely to how other SQL
>>>>> databases define constraints and the syntax is easily extensible to
>>>>> multi-column and multi-table constraints.
>>>>> > >>>>>>>
>>>>> > >>>>>>> Ariel
>>>>> > >>>>>>>
>>>>> > >>>>>>> On Mon, Jul 1, 2024, at 9:48 AM, Bernardo Botella wrote:
>>>>> > >>>>>>>> With all the feedback that came in the discussion thread
>>>>> after the call for votes, I’d like to extend the period another 72 hours
>>>>> starting today.
>>>>> > >>>>>>>>
>>>>> > >>>>>>>> As before, a vote passes if there are at least 3 binding
>>>>> +1s and no binding vetoes.
>>>>> > >>>>>>>>
>>>>> > >>>>>>>> Thanks,
>>>>> > >>>>>>>> Bernardo Botella
>>>>> > >>>>>>>>
>>>>> > >>>>>>>>> On Jun 24, 2024, at 7:17 AM, Bernardo Botella <
>>>>> conta...@bernardobotella.com> wrote:
>>>>> > >>>>>>>>>
>>>>> > >>>>>>>>> Hi everyone,
>>>>> > >>>>>>>>>
>>>>> > >>>>>>>>> I would like to start the voting for CEP-42.
>>>>> > >>>>>>>>>
>>>>> > >>>>>>>>> Proposal:
>>>>> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-42%3A+Constraints+Framework
>>>>> > >>>>>>>>> Discussion:
>>>>> https://lists.apache.org/thread/xc2phmxgsc7t3y9b23079vbflrhyyywj
>>>>> > >>>>>>>>>
>>>>> > >>>>>>>>> The vote will be open for 72 hours. A vote passes if there
>>>>> are at least 3 binding +1s and no binding vetoes.
>>>>> > >>>>>>>>>
>>>>> > >>>>>>>>> Thanks,
>>>>> > >>>>>>>>> Bernardo Botella
>>>>> > >>>>>>>
>>>>>
>>>>
>>>

Attachment: favicon.ico
Description: Binary data

Reply via email to