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