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