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