+1 to use LIKE and put after schema part. I also prefer the keyword LIKE than INHERITS, because it's easier to type and understand, for a non-native English user :) But I would like to limit a single LIKE clause in the DDL in the first version. We can allow multiple LIKE clause in the future if needed.
Best, Jark On Tue, 24 Mar 2020 at 19:03, Dawid Wysakowicz <dwysakow...@apache.org> wrote: > Sorry for a late reply, but I was on vacation. > > As for putting the LIKE after the schema part. You're right, sql > standard lets it be only in the schema part. I was mislead by examples > for DB2 and MYSQL, which differ from the standard in that respect. My > bad, sorry. > > Nevertheless I'd still be in favour of using the LIKE clause for that > purpose rather than INHERITS. I'm fine with putting it after the schema > part. The argument that it applies to the options part make sense to me. > > I must admit I am not a fan of the INHERITS clause. @Jar I'd not > redefine the semantics of the INHERITS clause entirely. I am sure it > will pose unnecessary confusion if it differs significantly from what > was implemented for, let's be true, more popular vendors such as > PostgreSQL. My biggest concern is that the INHERITS clause in PostgreSQL > allows constructs such as SELECT * FROM ONLY B (where e.g. A INHERITS > B). My understanding of the purpose of the INHERITS clause is that it > really emulates inheritance that let's you create "nested" data sets. I > think what we are more interested in is a way to adjust only the > metadata of an already existing table. > > Moreover I prefer the LIKE clause as it is more widespread. In some way > it is supported by PostgreSQL, DB2, SnowflakeDB, MySQL. > > Lastly @Jingsong, I am not sure about the "link" part. I know at first > glance having a link and reflecting changes might seem appealing, but I > am afraid it would pose more threads than it would give benefits. First > of all it would make the LIKE/INHERITS clause unusable for creating e.g. > hive tables or jdbc tables that could be used from other systems, as the > link would not be understandable by those systems. > > Best, > > Dawid > > > > On 05/03/2020 07:46, Jark Wu wrote: > > Hi Dawid, > > > >> INHERITS creates a new table with a "link" to the original table. > > Yes, INHERITS is a "link" to the original table in PostgreSQL. > > But INHERITS is not SQL standard, I think it's fine for vendors to define > > theire semantics. > > > >> Standard also allows declaring the clause after the schema part. We can > > also do it. > > Is that true? I didn't find it in SQL standard. If this is true, I prefer > > to put LIKE after the schema part. > > > > ==================================== > > > > Hi Jingsong, > > > > The concern you mentioned in (2) is exactly my concern too. That's why I > > suggested INHERITS, or put LIKE after schema part. > > > > Best, > > Jark > > > > On Thu, 5 Mar 2020 at 12:05, Jingsong Li <jingsongl...@gmail.com> wrote: > > > >> Thanks Dawid for starting this discussion. > >> > >> I like the "LIKE". > >> > >> 1.For "INHERITS", I think this is a good feature too, yes, ALTER TABLE > will > >> propagate any changes in column data definitions and check constraints > down > >> the inheritance hierarchy. A inherits B, A and B share every things, > they > >> have the same kafka topic. If modify schema of B, this means underlying > >> kafka topic schema changed, so I think it is good to modify A too. If > this > >> for "ConfluentSchemaRegistryCatalog" mention by Jark, I think sometimes > >> this is just we want. > >> But "LIKE" also very useful for many cases. > >> > >> 2.For LIKE statement in schema, I know two kinds of like syntax, one is > >> MySQL/hive/sqlserver, the other is PostgreSQL. I prefer former: > >> - In the FLIP, there is "OVERWRITING OPTIONS", this will overwrite > >> properties in "with"? This looks weird, because "LIKE" is in schema, > but it > >> can affect outside properties. > >> > >> Best, > >> Jingsong Lee > >> > >> On Wed, Mar 4, 2020 at 2:05 PM Dawid Wysakowicz <dwysakow...@apache.org > > > >> wrote: > >> > >>> Hi Jark, > >>> I did investigate the INHERITS clause, but it has a semantic that in my > >>> opinion we definitely don't want to support. INHERITS creates a new > table > >>> with a "link" to the original table. Therefore if you e.g change the > >> schema > >>> of the original table it's also reflected in the child table. It's also > >>> possible for tables like A inherits B query them like Select * from > only > >> A, > >>> by default it returns results from both tables. I am pretty sure it's > not > >>> what we're looking for. > >>> > >>> PostgreSQL implements both the LIKE clause and INHERITS. I am open for > >>> discussion if we should support multiple LIKE statements or not. > Standard > >>> also allows declaring the clause after the schema part. We can also do > >> it. > >>> Nevertheless I think including multiple tables might be useful, e.g. > when > >>> you want to union two tables and output to the same Kafka cluster and > >> just > >>> change the target topic. I know it's not a very common use case but > it's > >>> not a big effort to support it. > >>> > >>> Let me know what you think. > >>> > >>> Best, > >>> Dawid > >>> > >>> On Wed, 4 Mar 2020, 04:55 Jark Wu, <imj...@gmail.com> wrote: > >>> > >>>> Hi Dawid, > >>>> > >>>> Thanks for starting this discussion. I like the idea. > >>>> Once we support more intergrated catalogs, > >>>> e.g. ConfluentSchemaRegistryCatalog, this problem will be more urgent. > >>>> Because it's very common to adjust existing tables in catalog > slightly. > >>>> > >>>> My initial thought was introducing INHERITS keyword, which is also > >>>> supported in PostgreSQL [1]. > >>>> This is also similar to the functionality of Hive CREATE TABLE LIKE > >> [2]. > >>>> CREATE TEMPORARY TABLE MyTable (WATERMARK FOR ts) INHERITS > >>>> cat.db.KafkoTopic > >>>> CREATE TEMPORARY TABLE MyTable (WATERMARK FOR ts) INHERITS > >>>> cat.db.KafkoTopic WITH ('k' = 'v') > >>>> > >>>> The INHERITS can inherit an existing table with all columns, > watermark, > >>> and > >>>> properties, but the properties and watermark and be overwrited > >>> explicitly. > >>>> The reason I prefer INHERITS rather than LIKE is the keyword position. > >> We > >>>> are copying an existing table definition including the properties. > >>>> However, LIKE appears in the schema part, it sounds like copying > >>> properties > >>>> into schema part of DDL. > >>>> > >>>> Besides of that, I'm not sure whether the use case stands "merging two > >>>> tables into a single one with a different connector". > >>>> From my understanding, most use cases are just slightly adjusting on > an > >>>> existing catalog table with new properties or watermarks. > >>>> Do we really need to merge two table definitions into a single one? > For > >>>> example, is it possible to merge a Kafka table definition and > >>>> a Filesystem table definition into a new Kafka table, and the new > Kafka > >>>> table exactly matches the underlying physical data format? > >>>> > >>>> Best, > >>>> Jark > >>>> > >>>> [1]: https://www.postgresql.org/docs/9.5/sql-createtable.html > >>>> [2]: > >>>> > >>>> > >> > https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTableLike > >>>> > >>>> On Tue, 3 Mar 2020 at 21:12, Dawid Wysakowicz <dwysakow...@apache.org > > > >>>> wrote: > >>>> > >>>>> Hi devs, > >>>>> > >>>>> I wanted to bring another improvement proposal up for a discussion. > >>> Often > >>>>> users need to adjust existing tables slightly. This is especially > >>> useful > >>>>> when users need to enhance a table created from an external tool > >> (e.g. > >>>>> HIVE) with Flink's specific information such as e.g watermarks. It > >> can > >>>> also > >>>>> be a useful tool for ETL processes, e.g. merging two tables into a > >>> single > >>>>> one with a different connector. My suggestion would be to support an > >>>>> optional *Feature T171, “LIKE clause in table definition” *of SQL > >>>>> standard 2008. > >>>>> > >>>>> You can see the description of the proposal here: > >>>>> > >> > https://cwiki.apache.org/confluence/display/FLINK/FLIP-110%3A+Support+LIKE+clause+in+CREATE+TABLE > >>>>> Looking forward for your comments. > >>>>> > >>>>> Best, > >>>>> > >>>>> Dawid > >>>>> > >> > >> -- > >> Best, Jingsong Lee > >> > >