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
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>

Reply via email to