Thank you very much for your careful observation. I have corrected it, it
is out of date, just remove the OPTIONS keyword.


Dave Herrington <he...@rhinosource.com> 于2024年11月8日周五 14:52写道:

> I wanted to weigh in on the options handling.
>
> Being able to override table options like compaction strategy would be
> valuable for use cases when we are evaluating side-by-side the performance
> of different compaction settings.
>
> We can always do ALTER TABLE after the CREATE TABLE LIKE, but it would be
> slicker if we could do it in a single step.
>
> Not the end of the world if this capability isn't provided, but it would
> be a convenient feature to have sometime in the future.
>
> Also, in the CEP, I see "[ WITH OPTIONS..." in the CQL Parser.g
> definition, but I can't figure out what it means.
>
> -Dave
>
> On Wed, Nov 6, 2024 at 4:10 AM Štefan Miklošovič <smikloso...@apache.org>
> wrote:
>
>> Alright ... So, it is OK to NOT support this:
>>
>> CREATE TABLE cycling.cyclist_name4 LIKE cycling.cyclist_name
>>     WITH TRIGGERS
>>     AND VIEWS
>>     AND compaction = { 'class' : 'LeveledCompactionStrategy' }
>>     AND default_time_to_live = 86400;
>>
>> I think that if we ever wanted to support overriding of table options, we
>> _could_ deliver it later on if there is enough demand. From a syntax /
>> grammar point of view, being able to override these options is just a pure
>> addition to that syntax. Everything stays, we would just expand this. Hence
>> from the user's perspective it would be just an extension of this whole
>> feature.
>>
>> Supporting the 5 examples is OK. It is crucial that the options of a
>> table we are making copy of are carried over to a new table as well.
>>
>>
>>
>> On Wed, Nov 6, 2024 at 7:17 AM guo Maxwell <cclive1...@gmail.com> wrote:
>>
>>> Any update on this ?If there are no updates, I wonder if we can start a
>>> new update on the VOTE thread.
>>>
>>> guo Maxwell <cclive1...@gmail.com> 于2024年11月5日周二 19:23写道:
>>>
>>>> Hello, everyone.
>>>> I have a point of view that our CREATE TABLE LIKE grammar should not
>>>> support the setting of table options, like :
>>>>
>>>>> CREATE TABLE cycling.cyclist_name4 LIKE cycling.cyclist_name WITH
>>>>> TRIGGERS AND VIEWS AND compaction = { 'class' : 
>>>>> 'LeveledCompactionStrategy'
>>>>> } AND default_time_to_live = 86400;
>>>>
>>>> If the user wants to copy the table and set the compaction strategy for
>>>> the new table, then he can execute the
>>>> ALTER TABLE statement after copying the table.
>>>>
>>>> So, I think it’s enough to support the above five cases . The original
>>>> intention of copying a table is to copy the table,
>>>> and support what is to or not to copy during the copying process. Not
>>>> changing the options at the same time.
>>>>
>>>> WDYT ?
>>>>
>>>> guo Maxwell <cclive1...@gmail.com> 于2024年11月5日周二 14:07写道:
>>>>
>>>>> Hi,stefan and Dave,
>>>>> I do not intend to implement the BNF of COPY TABLE based on the BNF of
>>>>> CREATE TABLE. All table options are indeed copied by default. Therefore,
>>>>> the following syntax is not supported:
>>>>>
>>>>> CREATE TABLE cycling.cyclist_name4 LIKE cycling.cyclist_name WITH
>>>>>> TRIGGERS AND VIEWS AND compaction = { 'class' : 
>>>>>> 'LeveledCompactionStrategy'
>>>>>> } AND default_time_to_live = 86400;
>>>>>
>>>>>
>>>>> We can see that the above statement itself is very complicated because
>>>>> it provides too many choices.
>>>>> If we support individual settings of table options
>>>>> (compaction/compression), what about other TRIGGER/INDEXS ? I tend to 
>>>>> treat
>>>>> the table, TRIGGER, INDEX, etc. as a whole and copy them uniformly. As for
>>>>> their own attributes, such as table options, INDEX attributes, etc., they
>>>>> can be copied and then set manually.
>>>>>
>>>>> So we only going to support :
>>>>>
>>>>>> 1.CREATE TABLE newks.newtable LIKE oldks.oldtable
>>>>>> 2.CREATE TABLE newks.newtable LIKE oldks.oldtable WITH ALL // this
>>>>>> means copy indexes and triggers
>>>>>> 3.CREATE TABLE newks.newtable LIKE oldks.oldtable WITH INDEXES
>>>>>> 4.CREATE TABLE newks.newtable LIKE oldks.oldtable WITH TRIGGERS
>>>>>> 5.CREATE TABLE newks.newtable LIKE oldks.oldtable WITH TRIGGERS AND
>>>>>> INDEXES // equal to option 2.
>>>>>
>>>>>
>>>>> Štefan Miklošovič <smikloso...@apache.org> 于2024年11月4日周一 23:31写道:
>>>>>
>>>>>> 1) Just mention that it will not be part of phase 1, I am OK if it
>>>>>> will be delivered later.
>>>>>>
>>>>>> 2) If we had "ALL" introduced, then we would have something like this:
>>>>>>
>>>>>> CREATE TABLE cycling.cyclist_name4 LIKE cycling.cyclist_name
>>>>>>     WITH
>>>>>>     ALL
>>>>>>     AND compaction = { 'class' : 'LeveledCompactionStrategy' }
>>>>>>     AND default_time_to_live = 86400;
>>>>>>
>>>>>> I think this is a little bit "strange". It would make sense to add
>>>>>> ALL if we have not had any "AND"s but mixing ALL and then adding AND with
>>>>>> options is a little bit confusing.
>>>>>>
>>>>>> 3)
>>>>>>
>>>>>> Do I understand correctly that your CEP will make this possible? I do
>>>>>> not want to go into the implementation details for now.
>>>>>>
>>>>>> CREATE TABLE cycling.cyclist_name4 LIKE cycling.cyclist_name
>>>>>>     WITH TRIGGERS
>>>>>>     AND VIEWS
>>>>>>     AND compaction = { 'class' : 'LeveledCompactionStrategy' }
>>>>>>     AND default_time_to_live = 86400;
>>>>>>
>>>>>> In other words, it will copy all options from "cycling.cyclist_name"
>>>>>> while it will be possible to override the options with whatever I want?
>>>>>> Basically what Dave suggested.
>>>>>>
>>>>>>
>>>>>> On Mon, Nov 4, 2024 at 4:21 PM guo Maxwell <cclive1...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi stefan
>>>>>>> 1、yes, cross-keyspace copying will be much complicated than copying
>>>>>>> under same keyspace , but I think we can support it in the future , and 
>>>>>>> I
>>>>>>> think it is under the scope of this CEP , so I add it .Or is it that the
>>>>>>> work planned for the next step should not be listed here for the time
>>>>>>> being?
>>>>>>> I don't know the rules very well here, and I hope if you can help
>>>>>>> point out the unreasonable points 😀 , because I do plan to
>>>>>>> complete this task, although I have only implemented the same keyspace 
>>>>>>> now.
>>>>>>> 2、yes, you are right, I gave up ALL at the first time , But after I
>>>>>>> replied to yifan’s email, I communicated with him privately through 
>>>>>>> slack.
>>>>>>> In the end, I was not strongly opposed to ALL (Sorry, we communicated in
>>>>>>> Chinese,
>>>>>>> https://the-asf.slack.com/archives/D07SXB787HN/p1729136909357689),
>>>>>>> In addition, I later saw that you were +0, so I added ALL back.
>>>>>>> 3、the change to Parse.g will be like :
>>>>>>>
>>>>>>>> /**
>>>>>>>>  * CREATE TABLE [IF NOT EXISTS] <NEW_TABLE>
>>>>>>>>  * LIKE <OLD_TABLE>
>>>>>>>>  * [ WITH OPTIONS AND INDEXES AND TRIGGERS ]
>>>>>>>>  */
>>>>>>>> copyTableStatement returns  [CopyTableStatement.Raw stmt]
>>>>>>>>     @init { boolean ifNotExists = false; }
>>>>>>>>     : K_CREATE K_COLUMNFAMILY newCf=columnFamilyName LIKE 
>>>>>>>> oldCf=columnFamilyName
>>>>>>>>       { $stmt = new CopyTableStatement.Raw(newCf, oldCf); }
>>>>>>>>       tableLikeOptions[stmt]
>>>>>>>>     ;
>>>>>>>>
>>>>>>>> tableLikeOptions[CopyTableStatement.Raw stmt]
>>>>>>>>     : ( K_WITH tableLikeSingleOption[stmt] ( K_AND 
>>>>>>>> tableLikeSingleOption[stmt] )*)?
>>>>>>>>     ;
>>>>>>>>
>>>>>>>> tableLikeSingleOption[CopyTableStatement.Raw stmt]
>>>>>>>>     : option=STRING_LITERAL { 
>>>>>>>> $stmt.extendWithLikeOptions($option.text); }
>>>>>>>>     ;
>>>>>>>>
>>>>>>>> I don’t plan to reuse the Create table definition file, and there
>>>>>>> doesn’t seem to be much need. And I have made a explanation  in the cep
>>>>>>> file
>>>>>>> <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-43++Apache+Cassandra+CREATE+TABLE++LIKE>
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> Štefan Miklošovič <smikloso...@apache.org> 于2024年11月4日周一 17:00写道:
>>>>>>>
>>>>>>>> Hi Maxwell,
>>>>>>>>
>>>>>>>> 1) I noticed that there is table copying across keyspaces in your
>>>>>>>> goal number 2) in the CEP. Is this correct? I was thinking that we are
>>>>>>>> doing same-keyspace copying for now and it will be considered later, 
>>>>>>>> as you
>>>>>>>> elaborate on that further down the document. Cross-keyspace copying 
>>>>>>>> would
>>>>>>>> mean (among other things) that we would need to create UDTs in another
>>>>>>>> keyspace as well which would complicate it etc ...
>>>>>>>>
>>>>>>>> 2) I also see this
>>>>>>>>
>>>>>>>> CREATE TABLE <NEW_TABLE> LIKE <OLD_TABLE>  [ WITH ALL | [ INDEXES
>>>>>>>> AND TRIGGERS]]
>>>>>>>>
>>>>>>>> Is this really correct? I think we agreed that ALL will not be
>>>>>>>> supported. You gave up on ALL in this comment of yours (the first 
>>>>>>>> sentence)
>>>>>>>> (1)
>>>>>>>>
>>>>>>>> 3) It would be great if you were more explicit about the proposed
>>>>>>>> CQL changes in such a way that after the CEP is delivered, it would be
>>>>>>>> possible to override the options on a new table. Basically what Dave
>>>>>>>> summarized here (2) at the very bottom. All three examples should be
>>>>>>>> mentioned in CEP for being explicit about our intentions.
>>>>>>>>
>>>>>>>> After this is all reflected, I will be glad to vote on this CEP in
>>>>>>>> the other thread.
>>>>>>>>
>>>>>>>> (1)
>>>>>>>> https://lists.apache.org/thread/d485w6lxvpoztmjnxj8msj0jjt3d5ltk
>>>>>>>> (2)
>>>>>>>> https://lists.apache.org/thread/odc1s1pt5m2tk76owxq61y55kytf13sf
>>>>>>>>
>>>>>>>> On Wed, Oct 30, 2024 at 4:28 AM guo Maxwell <cclive1...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> So we should be able to start voting on this now.
>>>>>>>>>
>>>>>>>>> guo Maxwell <cclive1...@gmail.com> 于2024年10月28日周一 17:20写道:
>>>>>>>>>
>>>>>>>>>> Here  is the latest updated CEP-43
>>>>>>>>>> <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-43++Apache+Cassandra+CREATE+TABLE++LIKE>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> guo Maxwell <cclive1...@gmail.com> 于2024年10月24日周四 19:53写道:
>>>>>>>>>>
>>>>>>>>>>> yes,you are right. I will add this
>>>>>>>>>>>
>>>>>>>>>>> Štefan Miklošovič <smikloso...@apache.org>于2024年10月24日
>>>>>>>>>>> 周四下午4:42写道:
>>>>>>>>>>>
>>>>>>>>>>>> The CEP should also mention that copying system tables or
>>>>>>>>>>>> virtual tables or materialized views and similar are not supported 
>>>>>>>>>>>> and an
>>>>>>>>>>>> attempt of doing so will error out.
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Oct 24, 2024 at 7:16 AM Dave Herrington <
>>>>>>>>>>>> he...@rhinosource.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Strong +1 to copy all options by default. This is intuitive to
>>>>>>>>>>>>> me.  Then I would like to explicitly override any options of my 
>>>>>>>>>>>>> choosing.
>>>>>>>>>>>>>
>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Oct 23, 2024 at 9:57 PM guo Maxwell <
>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> OK,thank you for your suggestions ,I will revise the CEP and
>>>>>>>>>>>>>> copy table OPTIONS by default.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Jon Haddad <j...@rustyrazorblade.com>于2024年10月23日 周三下午9:18写道:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Also strongly +1 to copying all the options.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, Oct 23, 2024 at 5:52 AM Josh McKenzie <
>>>>>>>>>>>>>>> jmcken...@apache.org> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I'm a very strong +1 to having the default functionality be
>>>>>>>>>>>>>>>> to copy *ALL* options.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Intuitively, as a user, if I tell a software system to make
>>>>>>>>>>>>>>>> a clone of something I don't expect it to be shallow or a 
>>>>>>>>>>>>>>>> subset defined by
>>>>>>>>>>>>>>>> some external developer somewhere. I expect it to be a clone.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Adding in some kind of "lean" mode or "column only" is fine
>>>>>>>>>>>>>>>> if someone can make a cogent argument around its inclusion. I 
>>>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>>>> personally see a use-case for it right now but definitely open 
>>>>>>>>>>>>>>>> to being
>>>>>>>>>>>>>>>> educated.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Oct 23, 2024, at 3:03 AM, Štefan Miklošovič wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> options are inherently part of that table as well, same as
>>>>>>>>>>>>>>>> schema. In fact, _schema_ includes all options. Not just 
>>>>>>>>>>>>>>>> columns and its
>>>>>>>>>>>>>>>> names. If you change some option, you effectively have a 
>>>>>>>>>>>>>>>> different schema,
>>>>>>>>>>>>>>>> schema version changes by changing an option. So if we do not 
>>>>>>>>>>>>>>>> copy options
>>>>>>>>>>>>>>>> too, we are kind of faking it (when we do not specify WITH 
>>>>>>>>>>>>>>>> OPTIONS).
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Also, imagine a situation where Accord is merged to trunk.
>>>>>>>>>>>>>>>> It introduces a new schema option called "transactional = 
>>>>>>>>>>>>>>>> full" which is
>>>>>>>>>>>>>>>> not default. (I am sorry if I did the spelling wrong here). 
>>>>>>>>>>>>>>>> So, when you
>>>>>>>>>>>>>>>> have a table with transactional support and you do "create 
>>>>>>>>>>>>>>>> table ks.tb_copy
>>>>>>>>>>>>>>>> like ks.tb", when you _do not_ copy all options, this table 
>>>>>>>>>>>>>>>> will _not_
>>>>>>>>>>>>>>>> become transactional.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The next thing you go to do is to execute some transactions
>>>>>>>>>>>>>>>> against this table but well ... you can not do that, because 
>>>>>>>>>>>>>>>> your table is
>>>>>>>>>>>>>>>> not transactional, because you have forgotten to add "WITH 
>>>>>>>>>>>>>>>> OPTIONS". So you
>>>>>>>>>>>>>>>> need to go back to that and do "ALTER ks.tb_copy WITH 
>>>>>>>>>>>>>>>> transactional = full"
>>>>>>>>>>>>>>>> just to support that.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I think that you see from this pattern that it is way
>>>>>>>>>>>>>>>> better if we copy all options by default instead of 
>>>>>>>>>>>>>>>> consciously opt-in into
>>>>>>>>>>>>>>>> them.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> also:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> "but I think there are also some users want to do basic
>>>>>>>>>>>>>>>> column information copy"
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> where is this coming from? Do you have this idea somehow
>>>>>>>>>>>>>>>> empirically tested? I just do not see why somebody would want 
>>>>>>>>>>>>>>>> to have
>>>>>>>>>>>>>>>> Cassandra's defaults instead of what a base table contains.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Oct 23, 2024 at 8:28 AM guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The reason for using OPTION keyword is that I want to
>>>>>>>>>>>>>>>> provide users with more choices .
>>>>>>>>>>>>>>>> The default behavior for copying a table is to copy the
>>>>>>>>>>>>>>>> basic item of table (column and their data 
>>>>>>>>>>>>>>>> type,mask,constraint),others
>>>>>>>>>>>>>>>> thing belongs to the table like option,views,trigger
>>>>>>>>>>>>>>>> are optional in my mind.
>>>>>>>>>>>>>>>> You are absolutely right that users may want to copy all
>>>>>>>>>>>>>>>> stuff but I think there are aslo some users want to do basic 
>>>>>>>>>>>>>>>> column
>>>>>>>>>>>>>>>> information copy,So I just give them a choice。As we know that 
>>>>>>>>>>>>>>>> the number of
>>>>>>>>>>>>>>>> table parameters is not
>>>>>>>>>>>>>>>> small,compression,compaction,gc_seconds,bf_chance,speculative_retry
>>>>>>>>>>>>>>>>  and so
>>>>>>>>>>>>>>>> on.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Besides we can see that pg have also the keyword
>>>>>>>>>>>>>>>> COMMENT,COMPRESSION which have the similar behavior as our 
>>>>>>>>>>>>>>>> OPTION keyword。
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> So that is why I add this keyword OPTION.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Štefan Miklošovič <smikloso...@apache.org>于2024年10月22日
>>>>>>>>>>>>>>>> 周二下午11:40写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The problem is that when I do this minimal CQL which shows
>>>>>>>>>>>>>>>> this feature:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CREATE TABLE ks.tb_copy LIKE ks.tb;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> then you are saying that when I _do not_ specify WITH
>>>>>>>>>>>>>>>> OPTIONS then I get Cassandra's defaults. Only after I specify 
>>>>>>>>>>>>>>>> WITH OPTIONS,
>>>>>>>>>>>>>>>> it would truly be a copy.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> This is not a good design. Because to have an exact copy, I
>>>>>>>>>>>>>>>> have to make a conscious effort to include OPTIONS as well. 
>>>>>>>>>>>>>>>> That should not
>>>>>>>>>>>>>>>> be the case. I just want to have a copy, totally the same 
>>>>>>>>>>>>>>>> stuff, when I use
>>>>>>>>>>>>>>>> the minimal version of that statement. It would be better to 
>>>>>>>>>>>>>>>> opt-out from
>>>>>>>>>>>>>>>> options like
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CREATE TABLE ks.tb_copy LIKE ks.tb WITHOUT OPTIONS (you
>>>>>>>>>>>>>>>> feel me) but we do not support this (yet).
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Oct 22, 2024 at 5:28 PM Štefan Miklošovič <
>>>>>>>>>>>>>>>> smikloso...@apache.org> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I just don't see OPTIONS as important. When I want to copy
>>>>>>>>>>>>>>>> a table, I am copying a table _with everything_. Options 
>>>>>>>>>>>>>>>> included, by
>>>>>>>>>>>>>>>> default. Why would I want to have a copy of a table with 
>>>>>>>>>>>>>>>> options different
>>>>>>>>>>>>>>>> from the base one?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Oct 21, 2024 at 3:55 PM Bernardo Botella <
>>>>>>>>>>>>>>>> conta...@bernardobotella.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi Guo,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> +1 for the CONSTRAINTS keyword to be added into the default
>>>>>>>>>>>>>>>> behavior.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Bernardo
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Oct 21, 2024, at 12:01 AM, guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I think the CONSTRAINTS keyword  keyword may be in the same
>>>>>>>>>>>>>>>> situation as datamask.
>>>>>>>>>>>>>>>> Maybe it is better to include  constraints into  the
>>>>>>>>>>>>>>>> default behavior of table copy together with column name, 
>>>>>>>>>>>>>>>> column data type
>>>>>>>>>>>>>>>> and data mask.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> guo Maxwell <cclive1...@gmail.com> 于2024年10月21日周一 14:56写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> To yifan :
>>>>>>>>>>>>>>>> I don't mind adding the ALL keyword, and it has been
>>>>>>>>>>>>>>>> updated into CEP.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> As all you can see, our original intention was that the
>>>>>>>>>>>>>>>> grammar would not be too complicated, which is what I 
>>>>>>>>>>>>>>>> described in
>>>>>>>>>>>>>>>> cep
>>>>>>>>>>>>>>>> <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-43++Apache+Cassandra+CREATE+TABLE++LIKE>
>>>>>>>>>>>>>>>> .
>>>>>>>>>>>>>>>> We gave up PG-related grammar, including
>>>>>>>>>>>>>>>> INCLUDING/EXCLUDING and so on .
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> guo Maxwell <cclive1...@gmail.com> 于2024年10月21日周一 14:52写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi ,
>>>>>>>>>>>>>>>> To sefan :
>>>>>>>>>>>>>>>> I may want to explain that if there is no OPTION keyword in
>>>>>>>>>>>>>>>> the CQL statement, then the newly created table will only have 
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> original table's  column name 、column type and data mask ,I 
>>>>>>>>>>>>>>>> think this is
>>>>>>>>>>>>>>>> the most basic choice when copying tables to users.
>>>>>>>>>>>>>>>> Then  we do some  addition, we can add original table's
>>>>>>>>>>>>>>>> table options like compaction strategy/compress strategy、index 
>>>>>>>>>>>>>>>> and so on.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Recently, I have also thought about the situation of
>>>>>>>>>>>>>>>> CONSTRAINTS keyword. I think it is similar to data mask. Agree 
>>>>>>>>>>>>>>>> that it
>>>>>>>>>>>>>>>> should be included in the basic options of  table copy (column 
>>>>>>>>>>>>>>>> name, column
>>>>>>>>>>>>>>>> data type , column data mask and constraints).
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Dave Herrington <he...@rhinosource.com> 于2024年10月19日周六
>>>>>>>>>>>>>>>> 01:15写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> It seems like a natural extension of the CREATE TABLE
>>>>>>>>>>>>>>>> statement.  Looking forward to using it in the future.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Oct 17, 2024 at 5:11 PM Štefan Miklošovič <
>>>>>>>>>>>>>>>> smikloso...@apache.org> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Right?! Reads like English, the impact on the existing CQL
>>>>>>>>>>>>>>>> is minimal. One LIKE which basically needs to be there and 
>>>>>>>>>>>>>>>> keywords of
>>>>>>>>>>>>>>>> logical "components" which seamlessly integrate with WITH.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I would _not_ use WITH CONSTRAINTS because constraints will
>>>>>>>>>>>>>>>> be inherently part of a table schema. It is not an "option". 
>>>>>>>>>>>>>>>> We can not
>>>>>>>>>>>>>>>> "opt-out" from them. Remember we are copying a table here so 
>>>>>>>>>>>>>>>> if a base one
>>>>>>>>>>>>>>>> has constraints, its copy will have them too. A user can 
>>>>>>>>>>>>>>>> subsequently
>>>>>>>>>>>>>>>> "ALTER" them.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Oct 17, 2024 at 5:31 PM Dave Herrington <
>>>>>>>>>>>>>>>> he...@rhinosource.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Basing it on CREATE TABLE, the BNF definition of the simple
>>>>>>>>>>>>>>>> implementation would look something like this:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> create_table_statement::= CREATE TABLE [ IF NOT EXISTS ]
>>>>>>>>>>>>>>>> table_name LIKE base_table_name
>>>>>>>>>>>>>>>> [ WITH included_objects ] [ [ AND ] table_options ]
>>>>>>>>>>>>>>>> table_options::= COMPACT STORAGE [ AND table_options ]
>>>>>>>>>>>>>>>> | CLUSTERING ORDER BY '(' clustering_order ')'
>>>>>>>>>>>>>>>> [ AND table_options ]  | options
>>>>>>>>>>>>>>>> clustering_order::= column_name (ASC | DESC) ( ','
>>>>>>>>>>>>>>>> column_name (ASC | DESC) )*
>>>>>>>>>>>>>>>> included_objects::= dependent_objects [ AND
>>>>>>>>>>>>>>>> dependent_objects ]
>>>>>>>>>>>>>>>> dependent_objects:= INDEXES | TRIGGERS | CONSTRAINTS | VIEWS
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CREATE TABLE [ IF NOT EXISTS ]
>>>>>>>>>>>>>>>> [<keyspace_name>.]<table_name> LIKE 
>>>>>>>>>>>>>>>> [<keyspace_name>.]<base_table_name>
>>>>>>>>>>>>>>>>   [ WITH [ <included_objects > ]
>>>>>>>>>>>>>>>>   [ [ AND ] [ <table_options> ] ]
>>>>>>>>>>>>>>>>   [ [ AND ] CLUSTERING ORDER BY [ <clustering_column_name>
>>>>>>>>>>>>>>>> (ASC | DESC) ] ]
>>>>>>>>>>>>>>>> ;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Examples:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -- Create base table:
>>>>>>>>>>>>>>>> CREATE TABLE cycling.cyclist_name (
>>>>>>>>>>>>>>>>   id UUID PRIMARY KEY,
>>>>>>>>>>>>>>>>   lastname text,
>>>>>>>>>>>>>>>>   firstname text
>>>>>>>>>>>>>>>> );
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -- Create an exact copy of the base table, but do not
>>>>>>>>>>>>>>>> create any dependent objects:
>>>>>>>>>>>>>>>> CREATE TABLE cycling.cyclist_name2 LIKE
>>>>>>>>>>>>>>>> cycling.cyclist_name;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -- Create an exact copy with all dependent objects
>>>>>>>>>>>>>>>> (constraints excluded for now):
>>>>>>>>>>>>>>>> CREATE TABLE cycling.cyclist_name3 LIKE cycling.cyclist_name
>>>>>>>>>>>>>>>> WITH INDEXES AND TRIGGERS AND VIEWS;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -- Create a copy with LCS compaction, a default TTL and all
>>>>>>>>>>>>>>>> dependent objects except indexes:
>>>>>>>>>>>>>>>> CREATE TABLE cycling.cyclist_name4 LIKE cycling.cyclist_name
>>>>>>>>>>>>>>>> WITH TRIGGERS AND VIEWS
>>>>>>>>>>>>>>>> AND compaction = { 'class' :  'LeveledCompactionStrategy' }
>>>>>>>>>>>>>>>> AND default_time_to_live = 86400;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> This seems pretty clean & straightforward.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Oct 17, 2024 at 4:05 PM Dave Herrington <
>>>>>>>>>>>>>>>> he...@rhinosource.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> This simple approach resonates with me.  I think the
>>>>>>>>>>>>>>>> Cassandra doc uses "INDEXES" as the plural for index, i.e.:
>>>>>>>>>>>>>>>> https://cassandra.apache.org/doc/stable/cassandra/cql/indexes.html
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Oct 17, 2024 at 2:39 PM Štefan Miklošovič <
>>>>>>>>>>>>>>>> smikloso...@apache.org> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Well we could do something like:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CREATE TABLE ks.tb_copy LIKE ks.tb WITH INDICES AND
>>>>>>>>>>>>>>>> TRIGGERS AND compaction = {'class': '.... } AND ...
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> but I can admit it might be seen as an overreach and I am
>>>>>>>>>>>>>>>> not sure at all how it would look like in the implementation 
>>>>>>>>>>>>>>>> because we
>>>>>>>>>>>>>>>> would need to distinguish WITH INDICES from table options.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I would
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>    1. +0 on ALL. - we don't need this. If we have just
>>>>>>>>>>>>>>>>    INDICES, TRIGGERS, VIEWS at this point, I don't think 
>>>>>>>>>>>>>>>> enumerating it all is
>>>>>>>>>>>>>>>>    too much to ask. This is just an implementation detail and 
>>>>>>>>>>>>>>>> if we find it
>>>>>>>>>>>>>>>>    necessary we can add it later. If you feel strongly about 
>>>>>>>>>>>>>>>> this then add
>>>>>>>>>>>>>>>>    that but it is not absolutely necessary.
>>>>>>>>>>>>>>>>    2. omit OPTIONS - aren't all options copied by default?
>>>>>>>>>>>>>>>>    That is the goal of the CEP, no? We might just use
>>>>>>>>>>>>>>>>    normal CQL while overriding from the base table
>>>>>>>>>>>>>>>>    3. mix keywords like TRIGGERS / INDICES / CONSTRAINTS
>>>>>>>>>>>>>>>>    into normal table creation statement
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Oct 17, 2024 at 3:20 PM Yifan Cai <
>>>>>>>>>>>>>>>> yc25c...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I would second Štefan's option for functionality
>>>>>>>>>>>>>>>> simplicity. It seems to be unnecessary to have the keywords 
>>>>>>>>>>>>>>>> for both
>>>>>>>>>>>>>>>> inclusion and exclusion in the CEP. If needed, the exclusion 
>>>>>>>>>>>>>>>> (WITHOUT) can
>>>>>>>>>>>>>>>> be introduced later. It would still be backward compatible.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Regarding "CREATE TABLE ks.tb_copy LIKE ks.tb WITH
>>>>>>>>>>>>>>>> compaction = {'class': '.... } AND ... ", I think it only 
>>>>>>>>>>>>>>>> overrides the
>>>>>>>>>>>>>>>> table options. The CEP suggests the coarse-grained keyword for 
>>>>>>>>>>>>>>>> each
>>>>>>>>>>>>>>>> category like table options, indexes, etc. The functionality 
>>>>>>>>>>>>>>>> provided is
>>>>>>>>>>>>>>>> not identical.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I understand that the suggestions are to make operators'
>>>>>>>>>>>>>>>> life easier by achieving table creation in a single statement. 
>>>>>>>>>>>>>>>> What is
>>>>>>>>>>>>>>>> being proposed in the CEP seems to be at a good balance point. 
>>>>>>>>>>>>>>>> Operators
>>>>>>>>>>>>>>>> can alter the table options if needed in the follow-up ALTER 
>>>>>>>>>>>>>>>> table
>>>>>>>>>>>>>>>> statement.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Yifan
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Oct 17, 2024 at 1:41 PM Štefan Miklošovič <
>>>>>>>>>>>>>>>> smikloso...@apache.org> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I think we are starting to complicate it. For me the most
>>>>>>>>>>>>>>>> important question is who is actually this feature for? If 
>>>>>>>>>>>>>>>> people want to
>>>>>>>>>>>>>>>> just prototype something fast or they just want to have "the 
>>>>>>>>>>>>>>>> same table
>>>>>>>>>>>>>>>> just under a different name", I think that is going to be used 
>>>>>>>>>>>>>>>> in 99% of
>>>>>>>>>>>>>>>> cases.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> My assumption of using WITH which I think I proposed first
>>>>>>>>>>>>>>>> (4th post in this thread) was to just blindly copy the most 
>>>>>>>>>>>>>>>> important
>>>>>>>>>>>>>>>> "parts" logically related to a table, be it indices, 
>>>>>>>>>>>>>>>> materialized views, or
>>>>>>>>>>>>>>>> triggers and enable / disable them as we wish. If no "WITH" is 
>>>>>>>>>>>>>>>> used, then
>>>>>>>>>>>>>>>> we just get a table with nothing else. "WITH" will opt-in into 
>>>>>>>>>>>>>>>> that.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Seeing us contemplating using "INCLUDING" and "EXCLUDING"
>>>>>>>>>>>>>>>> on individual options makes me sad a little bit. I think we are
>>>>>>>>>>>>>>>> over-engineering this. I just don't see a reasonable use-case 
>>>>>>>>>>>>>>>> where users
>>>>>>>>>>>>>>>> would need to cherry-pick what they want and what not. Isn't 
>>>>>>>>>>>>>>>> that just too
>>>>>>>>>>>>>>>> complicated? If a table being copied drifts away too much from 
>>>>>>>>>>>>>>>> the original
>>>>>>>>>>>>>>>> one then users would be better off with creating a brand new 
>>>>>>>>>>>>>>>> table with CQL
>>>>>>>>>>>>>>>> as they are used to, not dealing with "copying" at all. More 
>>>>>>>>>>>>>>>> we drift from
>>>>>>>>>>>>>>>> what the original table was like, the less useful this feature 
>>>>>>>>>>>>>>>> is.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Oct 16, 2024 at 10:03 PM Dave Herrington <
>>>>>>>>>>>>>>>> he...@rhinosource.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Sorry that I overlooked the definition of the default in
>>>>>>>>>>>>>>>> the CEP.  I did look for it but I didn’t see it.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I think the default behavior you explained makes perfect
>>>>>>>>>>>>>>>> sense & what one would expect.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I like the flexibility of INCLUDING and EXCLUDING that you
>>>>>>>>>>>>>>>> are considering.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Would it make sense to use WITH for table options, which
>>>>>>>>>>>>>>>> would make it easy (and less confusing IMHO) to override the 
>>>>>>>>>>>>>>>> defaults from
>>>>>>>>>>>>>>>> the source table, then use INCLUDING/EXCLUDING for all 
>>>>>>>>>>>>>>>> non-table options
>>>>>>>>>>>>>>>> such as constraints and indices?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> It seems this would be easier to document as well, as it
>>>>>>>>>>>>>>>> could just point to the CREATE TABLE doc for the options, 
>>>>>>>>>>>>>>>> rather than
>>>>>>>>>>>>>>>> trying to explain a bunch of keywords that map to table 
>>>>>>>>>>>>>>>> options.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> David A. Herrington II
>>>>>>>>>>>>>>>> President and Chief Engineer
>>>>>>>>>>>>>>>> RhinoSource, Inc.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Data Lake Architecture, Cloud Computing and Advanced
>>>>>>>>>>>>>>>> Analytics.*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> www.rhinosource.com
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Oct 16, 2024 at 7:57 PM guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> To yifan :
>>>>>>>>>>>>>>>> At the beginning of the period, I also thought about adding
>>>>>>>>>>>>>>>> the keyword ALL, refer to pg
>>>>>>>>>>>>>>>> <https://www.postgresql.org/docs/current/sql-createtable.html> 
>>>>>>>>>>>>>>>> ,
>>>>>>>>>>>>>>>> but  I give up when writing cep as I find that there may be 
>>>>>>>>>>>>>>>> not so many
>>>>>>>>>>>>>>>> properties (only three) to copy for C* and
>>>>>>>>>>>>>>>> It is possible to decide what is needed and what is not in
>>>>>>>>>>>>>>>> a very simple cql, as our ALL is only three properties here. I 
>>>>>>>>>>>>>>>> want to keep
>>>>>>>>>>>>>>>> it as simple as possible (based on the advice given by 
>>>>>>>>>>>>>>>> Benjamin), So I
>>>>>>>>>>>>>>>> grouped
>>>>>>>>>>>>>>>> the properties of the table into one category and expressed
>>>>>>>>>>>>>>>> it with OPTION keyword.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> But if we are going to split the first keyword OPTION  to
>>>>>>>>>>>>>>>> COMPRESSION 、COMPACTION、COMMENT and so on. I am +1 on adding 
>>>>>>>>>>>>>>>> ALL back as
>>>>>>>>>>>>>>>> the properties are so many and it is simple to use ALL instead 
>>>>>>>>>>>>>>>> of
>>>>>>>>>>>>>>>> list all properties. Besides I may change my keyword WITH
>>>>>>>>>>>>>>>> to INCLUDING and adding another keyword EXCLUDING to flexibly 
>>>>>>>>>>>>>>>> copy table
>>>>>>>>>>>>>>>> properties through simple sql statements, like using   1 not  2
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>    1.  CREATE TABLE newTb like oldTb INCLUDING ALL
>>>>>>>>>>>>>>>>    EXCLUDING INDEXES AND COMMENTS.
>>>>>>>>>>>>>>>>    2.  CREATE TABLE newTb like oldTb INCLUDING COMPRESSION
>>>>>>>>>>>>>>>>    CONSTRAINTS GENERATED IDENTITY STATISTICS STORAGE
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Conclusion: If there may be more keywords to consider in
>>>>>>>>>>>>>>>> the future, such as more than 4 , I am +1 on adding ALL back .
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> To Dave :
>>>>>>>>>>>>>>>>    Default behavior is only copy column name, data type
>>>>>>>>>>>>>>>> ,data mask , you can see more detail from  CEP-43
>>>>>>>>>>>>>>>> <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-43++Apache+Cassandra+CREATE+TABLE++LIKE>
>>>>>>>>>>>>>>>> .
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Patrick McFadin <pmcfa...@gmail.com> 于2024年10月17日周四
>>>>>>>>>>>>>>>> 06:43写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> +1 That makes much more sense in my experience.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Oct 16, 2024 at 12:12 PM Dave Herrington <
>>>>>>>>>>>>>>>> he...@rhinosource.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I'm coming at this with both a deep ANSI SQL background as
>>>>>>>>>>>>>>>> well as CQL background.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Defining the default behavior is the starting point.  What
>>>>>>>>>>>>>>>> gets copied if we do "CREATE TABLE new_table LIKE 
>>>>>>>>>>>>>>>> original_table;" without
>>>>>>>>>>>>>>>> a WITH clause?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Then, you build on that with the specific WITH options.
>>>>>>>>>>>>>>>> WITH ALL catches everything.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Oct 16, 2024 at 11:16 AM Yifan Cai <
>>>>>>>>>>>>>>>> yc25c...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> "WITH ALL" seems to be a natural addition to the
>>>>>>>>>>>>>>>> directives. What do you think about adding the fifth keyword 
>>>>>>>>>>>>>>>> ALL to retain
>>>>>>>>>>>>>>>> all fields of the table schema?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> For instance, CREATE TABLE new_table LIKE original_table
>>>>>>>>>>>>>>>> WITH ALL, it replicates options, indexes, triggers, 
>>>>>>>>>>>>>>>> constraints and any
>>>>>>>>>>>>>>>> applicable kinds that are introduced in the future.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Yifan
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Oct 16, 2024 at 7:46 AM guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Disscussed with Bernardo on slack,and +1 with his advice on
>>>>>>>>>>>>>>>> adding a fourth keyword.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The keyword would be  CONSTRAINTS , any more suggestion ?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> guo Maxwell <cclive1...@gmail.com>于2024年10月16日 周三上午9:55写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi yifan,
>>>>>>>>>>>>>>>> Thanks for bringing this up. The SELECT permission on the
>>>>>>>>>>>>>>>> original table is needed. Mysql and PG all have mentioned 
>>>>>>>>>>>>>>>> this, and I also
>>>>>>>>>>>>>>>> specifically noticed this in my code.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I probably missed this in the cep documentation. 😅
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Yifan Cai <yc25c...@gmail.com> 于2024年10月16日周三 07:46写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks for creating the CEP! I think it is missing
>>>>>>>>>>>>>>>> Bernardo's comment on "the need for read permissions on the 
>>>>>>>>>>>>>>>> source table".
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CreateTableStatement does not check the permissions outside
>>>>>>>>>>>>>>>> of the enclosing keyspace. Having the SELECT permission on the 
>>>>>>>>>>>>>>>> original
>>>>>>>>>>>>>>>> table is a requirement for CREATE TABLE LIKE.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Yifan
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Sun, Sep 29, 2024 at 11:01 PM guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hello, everyone ,
>>>>>>>>>>>>>>>> I have finished the doc for CEP-43 for CREATE_TABLE_LIKE
>>>>>>>>>>>>>>>> <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-43++Apache+Cassandra+CREATE+TABLE++LIKE>
>>>>>>>>>>>>>>>>  as
>>>>>>>>>>>>>>>> said before, looking forward to your suggestions.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Štefan Miklošovič <smikloso...@apache.org> 于2024年9月25日周三
>>>>>>>>>>>>>>>> 03:51写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I am sorry I do not follow what you mean, maybe an example
>>>>>>>>>>>>>>>> would help.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Sep 24, 2024 at 6:18 PM guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> If there are multiple schema information changes in one ddl
>>>>>>>>>>>>>>>> statement, will there be schema conflicts in extreme cases?
>>>>>>>>>>>>>>>> For example, our statement contains both table creation and
>>>>>>>>>>>>>>>> index creation.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> guo Maxwell <cclive1...@gmail.com>于2024年9月24日 周二下午8:12写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> +1 on splitting this task  and adding the ability to copy
>>>>>>>>>>>>>>>> tables through different keyspaces in the future.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Štefan Miklošovič <smikloso...@apache.org> 于2024年9月23日周一
>>>>>>>>>>>>>>>> 22:05写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> If we have this table
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CREATE TABLE ks.tb2 (
>>>>>>>>>>>>>>>>     id int PRIMARY KEY,
>>>>>>>>>>>>>>>>     name text
>>>>>>>>>>>>>>>> );
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I can either specify name of an index on my own like this:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CREATE INDEX name_index ON ks.tb2 (name) ;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> or I can let Cassandra to figure that name on its own:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CREATE INDEX ON ks.tb2 (name) ;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> in that case it will name that index "tb2_name_idx".
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hence, I would expect that when we do
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ALTER TABLE ks.to_copy LIKE ks.tb2 WITH INDICES;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Then ks.to_copy table will have an index which is called
>>>>>>>>>>>>>>>> "to_copy_name_idx" without me doing anything.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> For types, we do not need to do anything when we deal with
>>>>>>>>>>>>>>>> the same keyspace. For simplicity, I mentioned that we might 
>>>>>>>>>>>>>>>> deal with the
>>>>>>>>>>>>>>>> same keyspace scenario only for now and iterate on that in the 
>>>>>>>>>>>>>>>> future.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Sep 23, 2024 at 8:53 AM guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hello everyone,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Cep is being written, and I encountered some problems
>>>>>>>>>>>>>>>> during the process. I would like to discuss them with you. If 
>>>>>>>>>>>>>>>> you read the
>>>>>>>>>>>>>>>> description of this CASSANDRA-7662
>>>>>>>>>>>>>>>> <https://issues.apache.org/jira/browse/CASSANDRA-7662>, we
>>>>>>>>>>>>>>>> will find that initially the original creator of this jira did 
>>>>>>>>>>>>>>>> not intend
>>>>>>>>>>>>>>>> to implement structural copying of indexes, views, and 
>>>>>>>>>>>>>>>> triggers  only the
>>>>>>>>>>>>>>>> column and its data type.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> However, after investigating some db related syntax and
>>>>>>>>>>>>>>>> function implementation, I found that it may be necessary for 
>>>>>>>>>>>>>>>> us to provide
>>>>>>>>>>>>>>>> some rich syntax to support the replication of indexes, views, 
>>>>>>>>>>>>>>>> etc.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> In order to support selective copy of the basic structure
>>>>>>>>>>>>>>>> of the table (columns and types), table options, table-related 
>>>>>>>>>>>>>>>> indexes,
>>>>>>>>>>>>>>>> views, triggers, etc. We need some new syntax, it seems that 
>>>>>>>>>>>>>>>> the syntax of
>>>>>>>>>>>>>>>> pg is relatively comprehensive, it use the keyword 
>>>>>>>>>>>>>>>> INCLUDING/EXCLUDING to
>>>>>>>>>>>>>>>> flexibly control the removal and retention of indexes, table 
>>>>>>>>>>>>>>>> information,
>>>>>>>>>>>>>>>> etc. see pg create table like
>>>>>>>>>>>>>>>> <https://www.postgresql.org/docs/8.1/sql-createtable.html>
>>>>>>>>>>>>>>>> , the new created index name is different from the original 
>>>>>>>>>>>>>>>> table's index
>>>>>>>>>>>>>>>> name , seenewly copied index names are different from
>>>>>>>>>>>>>>>> original
>>>>>>>>>>>>>>>> <https://github.com/postgres/postgres/blob/master/doc/src/sgml/ref/create_table.sgml#L749>
>>>>>>>>>>>>>>>> , the name is based on some rule.
>>>>>>>>>>>>>>>> Mysql is relatively simple and copies columns and indexes
>>>>>>>>>>>>>>>> by default. see mysql create table like
>>>>>>>>>>>>>>>> <https://dev.mysql.com/doc/refman/8.4/en/create-table-like.html>
>>>>>>>>>>>>>>>> and the newly created index name is the same with the original 
>>>>>>>>>>>>>>>> table's
>>>>>>>>>>>>>>>> index name.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> So for Casandra, I hope it can also support the information
>>>>>>>>>>>>>>>> copy of index and even view/trigger. And I also hope to be 
>>>>>>>>>>>>>>>> able to flexibly
>>>>>>>>>>>>>>>> decide which information is copied like pg.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Besides, I think the copy can happen between different
>>>>>>>>>>>>>>>> keyspaces. And UDT needs to be taken into account.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> But as we know the index/view/trigger name are all under
>>>>>>>>>>>>>>>> keyspace level, so it seems that the newly created index name 
>>>>>>>>>>>>>>>> (or view
>>>>>>>>>>>>>>>> name/ trigger name) must be different from the original 
>>>>>>>>>>>>>>>> tables' ,otherwise
>>>>>>>>>>>>>>>>  names would clash .
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> So regarding the above problem, one idea I have is that for
>>>>>>>>>>>>>>>> newly created types, indexes and views under different 
>>>>>>>>>>>>>>>> keyspaces and the
>>>>>>>>>>>>>>>> same keyspace, we first generate random names for them, and 
>>>>>>>>>>>>>>>> then we can add
>>>>>>>>>>>>>>>> the ability of modifying the names(for 
>>>>>>>>>>>>>>>> types/indexes/views/triggers) so
>>>>>>>>>>>>>>>> that users can manually change the names.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> guo Maxwell <cclive1...@gmail.com> 于2024年9月20日周五 08:06写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> No,I think still need some discuss on grammar detail after
>>>>>>>>>>>>>>>> I finish the first version
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Patrick McFadin <pmcfa...@gmail.com>于2024年9月20日 周五上午2:24写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Is this CEP ready for a VOTE thread?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Sat, Aug 24, 2024 at 8:56 PM guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thank you for your replies, I will prepare a CEP later.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Patrick McFadin <pmcfa...@gmail.com> 于2024年8月20日周二 02:11写道:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> +1 This is a CEP
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Aug 19, 2024 at 10:50 AM Jon Haddad <
>>>>>>>>>>>>>>>> j...@jonhaddad.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Given the fairly large surface area for this, i think it
>>>>>>>>>>>>>>>> should be a CEP.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> —
>>>>>>>>>>>>>>>> Jon Haddad
>>>>>>>>>>>>>>>> Rustyrazorblade Consulting
>>>>>>>>>>>>>>>> rustyrazorblade.com
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Aug 19, 2024 at 10:44 AM Bernardo Botella <
>>>>>>>>>>>>>>>> conta...@bernardobotella.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Definitely a nice addition to CQL.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Looking for inspiration at how Postgres and Mysql do that
>>>>>>>>>>>>>>>> may also help with the final design (I like the WITH proposed 
>>>>>>>>>>>>>>>> by Stefan,
>>>>>>>>>>>>>>>> but I would definitely take a look at the INCLUDING keyword 
>>>>>>>>>>>>>>>> proposed by
>>>>>>>>>>>>>>>> Postgres).
>>>>>>>>>>>>>>>> https://www.postgresql.org/docs/current/sql-createtable.html
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> https://dev.mysql.com/doc/refman/8.4/en/create-table-like.html
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On top of that, and as part of the interesting questions, I
>>>>>>>>>>>>>>>> would like to add the permissions to the mix. Both the 
>>>>>>>>>>>>>>>> question about
>>>>>>>>>>>>>>>> copying them over (with a WITH keyword probably), and the need 
>>>>>>>>>>>>>>>> for read
>>>>>>>>>>>>>>>> permissions on the source table as well.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Bernardo
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Aug 19, 2024, at 10:01 AM, Štefan Miklošovič <
>>>>>>>>>>>>>>>> smikloso...@apache.org> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> BTW this would be cool to do as well:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ALTER TABLE ks.to_copy LIKE ks.tb WITH INDICES;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> This would mean that if we create a copy of a table, later
>>>>>>>>>>>>>>>> we can decide that we need indices too, so we might "enrich" 
>>>>>>>>>>>>>>>> that table
>>>>>>>>>>>>>>>> with indices from the old one without necessarily explicitly 
>>>>>>>>>>>>>>>> re-creating
>>>>>>>>>>>>>>>> them on that new table.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Aug 19, 2024 at 6:55 PM Štefan Miklošovič <
>>>>>>>>>>>>>>>> smikloso...@apache.org> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I think this is an interesting idea worth exploring. I
>>>>>>>>>>>>>>>> definitely agree with Benjamin who raised important questions 
>>>>>>>>>>>>>>>> which needs
>>>>>>>>>>>>>>>> to be answered first. Also, what about triggers?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> It might be rather "easy" to come up with something simple
>>>>>>>>>>>>>>>> but it should be a comprehensive solution with predictable 
>>>>>>>>>>>>>>>> behavior we all
>>>>>>>>>>>>>>>> agree on.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> If a keyspace of a new table does not exist we would need
>>>>>>>>>>>>>>>> to create that one too before. For the simplicity, I would 
>>>>>>>>>>>>>>>> just make it a
>>>>>>>>>>>>>>>> must to create it on same keyspace. We might iterate on that 
>>>>>>>>>>>>>>>> in the future.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> UDTs are created per keyspace so there is nothing to
>>>>>>>>>>>>>>>> re-create. We just need to reference it from a new table, 
>>>>>>>>>>>>>>>> right?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Indexes and MVs are interesting but in theory they might be
>>>>>>>>>>>>>>>> re-created too.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Would it be appropriate to use something like this?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> CREATE TABLE ks.tb_copy LIKE ks.tb WITH INDEXES AND VIEWS
>>>>>>>>>>>>>>>> AND TRIGGERS ....
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Without "WITH" it would just copy a table with nothing else.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Aug 19, 2024 at 6:10 PM guo Maxwell <
>>>>>>>>>>>>>>>> cclive1...@gmail.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hello, everyone:
>>>>>>>>>>>>>>>> As  Jira CASSANDRA-7662
>>>>>>>>>>>>>>>> <https://issues.apache.org/jira/browse/CASSANDRA-7662> has
>>>>>>>>>>>>>>>> described , we would like to introduce a new grammer " CREATE 
>>>>>>>>>>>>>>>> TABLE LIKE "
>>>>>>>>>>>>>>>> ,which  simplifies creating new tables duplicating the 
>>>>>>>>>>>>>>>> existing ones .
>>>>>>>>>>>>>>>> The format may be like : CREATE TABLE <new_table> LIKE
>>>>>>>>>>>>>>>> <old_table>
>>>>>>>>>>>>>>>> Before I implement this function, do you have any
>>>>>>>>>>>>>>>> suggestions on this?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Looking forward to your reply!
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> David A. Herrington II
>>>>>>>>>>>>>>>> President and Chief Engineer
>>>>>>>>>>>>>>>> RhinoSource, Inc.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Data Lake Architecture, Cloud Computing and Advanced
>>>>>>>>>>>>>>>> Analytics.*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> www.rhinosource.com
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> David A. Herrington II
>>>>>>>>>>>>>>>> President and Chief Engineer
>>>>>>>>>>>>>>>> RhinoSource, Inc.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Data Lake Architecture, Cloud Computing and Advanced
>>>>>>>>>>>>>>>> Analytics.*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> www.rhinosource.com
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> David A. Herrington II
>>>>>>>>>>>>>>>> President and Chief Engineer
>>>>>>>>>>>>>>>> RhinoSource, Inc.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Data Lake Architecture, Cloud Computing and Advanced
>>>>>>>>>>>>>>>> Analytics.*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> www.rhinosource.com
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> -Dave
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> David A. Herrington II
>>>>>>>>>>>>>>>> President and Chief Engineer
>>>>>>>>>>>>>>>> RhinoSource, Inc.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Data Lake Architecture, Cloud Computing and Advanced
>>>>>>>>>>>>>>>> Analytics.*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> www.rhinosource.com
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>
> --
> -Dave
>
> David A. Herrington II
> President and Chief Engineer
> RhinoSource, Inc.
>
> *Data Lake Architecture, Cloud Computing and Advanced Analytics.*
>
> www.rhinosource.com
>

Reply via email to