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