+1 That makes much more sense in my experience.

On Wed, Oct 16, 2024 at 12:12 PM Dave Herrington <he...@rhinosource.com>
wrote:

> I'm coming at this with both a deep ANSI SQL background as well as CQL
> background.
>
> Defining the default behavior is the starting point.  What gets copied if
> we do "CREATE TABLE new_table LIKE original_table;" without a WITH clause?
>
> Then, you build on that with the specific WITH options.  WITH ALL catches
> everything.
>
> -Dave
>
> On Wed, Oct 16, 2024 at 11:16 AM Yifan Cai <yc25c...@gmail.com> wrote:
>
>> "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!
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>
> --
> -Dave
>
> David A. Herrington II
> President and Chief Engineer
> RhinoSource, Inc.
>
> *Data Lake Architecture, Cloud Computing and Advanced Analytics.*
>
> www.rhinosource.com
>

Reply via email to