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