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