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