Hi Danny,

Regarding to `supportedHintOptions()` interface, I suggest to use the
inverted version, `unsupportedHintOptions()`.
Because I think the disallowed list is much smaller.
In addition, it's hard to list all the properties under
`connector.properties.*`.
But we know `connector.properties.bootstrap.servers` and
`connector.properties.zookeeper.connect` are the only security options.

Best,
Jark

On Thu, 26 Mar 2020 at 16:47, Kurt Young <ykt...@gmail.com> wrote:

> Hi Danny,
>
> Thanks for the updates. I have 2 comments regarding to latest document:
>
> 1) I think we also need `*supportedHintOptions*` for
> `*TableFormatFactory*`
> 2) IMO "dynamic-table-options.enabled" should belong to `
> *OptimizerConfigOptions*`
>
> Best,
> Kurt
>
>
> On Thu, Mar 26, 2020 at 4:40 PM Timo Walther <twal...@apache.org> wrote:
>
> > Thanks for the update Danny. +1 for this proposal.
> >
> > Regards,
> > Timo
> >
> > On 26.03.20 04:51, Danny Chan wrote:
> > > Thanks everyone who engaged in this discussion ~
> > >
> > > Our goal is "Supports Dynamic Table Options for Flink SQL". After an
> > > offline discussion with Kurt, Timo and Dawid, we have made the final
> > > conclusion, here is the summary:
> > >
> > >
> > >     - Use comment style syntax to specify the dynamic table options:
> "/*+
> > >     *OPTIONS*(k1='v1', k2='v2') */"
> > >     - Have constraint on the options keys: the options that may bring
> in
> > >     security problems should not be allowed, i.e. Kafka connector
> > zookeeper
> > >     endpoint URL and topic name
> > >     - Use white-list to control the allowed options for each connector,
> > >     which is more safe for future extention
> > >     - We allow to enable/disable this feature globally
> > >     - Implement based on the current code base first, and when FLIP-95
> is
> > >     checked in, implement this feature based on new interface
> > >
> > > Any suggestions are appreciated ~
> > >
> > > [1]
> > >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-113%3A+Supports+Dynamic+Table+Options+for+Flink+SQL
> > >
> > > Best,
> > > Danny Chan
> > >
> > > Jark Wu <imj...@gmail.com> 于2020年3月18日周三 下午10:38写道:
> > >
> > >> Hi everyone,
> > >>
> > >> Sorry, but I'm not sure about the `supportedHintOptions`. I'm afraid
> it
> > >> doesn't solve the problems but increases some development and learning
> > >> burdens.
> > >>
> > >> # increase development and learning burden
> > >>
> > >> According to the discussion so far, we want to support overriding a
> > subset
> > >> of options in hints which doesn't affect semantics.
> > >> With the `supportedHintOptions`, it's up to the connector developers
> to
> > >> decide which options will not affect semantics, and to be hint
> options.
> > >> However, the question is how to distinguish whether an option will
> > *affect
> > >> semantics*? What happens if an option will affect semantics but
> > provided as
> > >> hint options?
> > >>  From my point of view, it's not easy to distinguish. For example, the
> > >> "format.ignore-parse-error" can be a very useful dynamic option but
> that
> > >> will affect semantic, because the result is different (null vs
> > exception).
> > >> Another example, the "connector.lookup.cache.*" options are also very
> > >> useful to tune jobs, however, it will also affect the job results. I
> can
> > >> come up many more useful options but may affect semantics.
> > >>
> > >> I can see that the community will under endless discussion around "can
> > this
> > >> option to be a hint option?",  "wether this option will affect
> > semantics?".
> > >> You can also find that we already have different opinions on
> > >> "ignore-parse-error". Those discussion is a waste of time! That's not
> > what
> > >> users want!
> > >> The problem is user need this, this, this options and HOW to expose
> > them?
> > >> We should focus on that.
> > >>
> > >> Then there could be two endings in the future:
> > >> 1) compromise on the usability, we drop the rule that hints don't
> affect
> > >> semantics, allow all the useful options in the hints list.
> > >> 2) stick on the rule, users will find this is a stumbling feature
> which
> > >> doesn't solve their problems.
> > >>      And they will be surprised why this option can't be set, but the
> > other
> > >> could. *semantic* is hard to be understood by users.
> > >>
> > >> # doesn't solve the problems
> > >>
> > >> I think the purpose of this FLIP is to allow users to quickly override
> > some
> > >> connectors' properties to tune their jobs.
> > >> However, `supportedHintOptions` is off track. It only allows a subset
> > >> options and for the users it's not *clear* which subset is allowed.
> > >>
> > >> Besides, I'm not sure `supportedHintOptions` can work well for all
> > cases.
> > >> How could you support kafka properties (`connector.properties.*`) as
> > hint
> > >> options? Some kafka properties may affect semantics
> (bootstrap.servers),
> > >> some may not (max.poll.records). Besides, I think it's not possible to
> > list
> > >> all the possible kafka properties [1].
> > >>
> > >> In summary, IMO, `supportedHintOptions`
> > >> (1) it increase the complexity to develop a connector
> > >> (2) it confuses users which options can be used in hint, which are
> not,
> > >> they have to check the docs again and again.
> > >> (3) it doesn't solve the problems which we want to solve by this FLIP.
> > >>
> > >> I think we should avoid introducing some partial solutions. Otherwise,
> > we
> > >> will be stuck in a loop that introduce new API -> deprecate API ->
> > >> introduce new API....
> > >>
> > >> I personally in favor of an explicit WITH syntax after the table as a
> > part
> > >> of the query which is mentioned by Kurt before, e.g. SELECT * from T
> > >> WITH('key' = 'value') .
> > >> It allows users to dynamically set options which can affect semantics.
> > It
> > >> will be very flexible to solve users' problems so far.
> > >>
> > >> Best,
> > >> Jark
> > >>
> > >> [1]: https://kafka.apache.org/documentation/#consumerconfigs
> > >>
> > >> On Wed, 18 Mar 2020 at 21:44, Danny Chan <yuzhao....@gmail.com>
> wrote:
> > >>
> > >>> My POC is here for the hints options merge [1].
> > >>>
> > >>> Personally, I have no strong objections for splitting hints with the
> > >>> CatalogTable, the only cons is a more complex implementation but the
> > >>> concept is more clear, and I have updated the WIKI.
> > >>>
> > >>> I think it would be nice if we can support the format “ignore-parse
> > >> error”
> > >>> option key, the CSV source already has a key [2] and we can use that
> in
> > >> the
> > >>> supportedHIntOptions, for the common CSV and JSON formats, we cal
> also
> > >> give
> > >>> a support. This is the only kind of key in formats that “do not
> change
> > >> the
> > >>> semantics” (somehow), what do you think about this ~
> > >>>
> > >>> [1]
> > >>>
> > >>
> >
> https://github.com/danny0405/flink/commit/5d925fa16c3c553423c4b7d93001521b8e6e6bee#diff-6e569a6dd124fd2091c18e2790fb49c5
> > >>> [2]
> > >>>
> > >>
> >
> https://github.com/apache/flink/blob/b83060dff6d403b6994b6646b3f29a374f599530/flink-table/flink-table-api-java-bridge/src/main/java/org/apache/flink/table/sources/CsvTableSourceFactoryBase.java#L92
> > >>>
> > >>> Best,
> > >>> Danny Chan
> > >>> 在 2020年3月18日 +0800 PM9:10,Timo Walther <twal...@apache.org>,写道:
> > >>>> Hi everyone,
> > >>>>
> > >>>> +1 to Kurt's suggestion. Let's just have it in source and sink
> > >> factories
> > >>>> for now. We can still move this method up in the future. Currently,
> I
> > >>>> don't see a need for catalogs or formats. Because how would you
> target
> > >> a
> > >>>> format in the query?
> > >>>>
> > >>>> @Danny: Can you send a link to your PoC? I'm very skeptical about
> > >>>> creating a new CatalogTable in planner. Actually CatalogTable should
> > be
> > >>>> immutable between Catalog and Factory. Because a catalog can return
> > its
> > >>>> own factory and fully control the instantiation. Depending on the
> > >>>> implementation, that means it can be possible that the catalog has
> > >>>> encoded more information in a concrete subclass implementing the
> > >>>> interface. I vote for separating the concerns of catalog information
> > >> and
> > >>>> hints in the factory explicitly.
> > >>>>
> > >>>> Regards,
> > >>>> Timo
> > >>>>
> > >>>>
> > >>>> On 18.03.20 05:41, Jingsong Li wrote:
> > >>>>> Hi,
> > >>>>>
> > >>>>> I am thinking we can provide hints to *table* related instances.
> > >>>>> - TableFormatFactory: of cause we need hints support, there are
> many
> > >>> format
> > >>>>> options in DDL too.
> > >>>>> - catalog and module: I don't know, maybe in future we can provide
> > >> some
> > >>>>> hints for them.
> > >>>>>
> > >>>>> Best,
> > >>>>> Jingsong Lee
> > >>>>>
> > >>>>> On Wed, Mar 18, 2020 at 12:28 PM Danny Chan <yuzhao....@gmail.com>
> > >>> wrote:
> > >>>>>
> > >>>>>> Yes, I think we should move the `supportedHintOptions` from
> > >>> TableFactory
> > >>>>>> to TableSourceFactory, and we also need to add the interface to
> > >>>>>> TableSinkFactory though because sink target table may also have
> > >> hints
> > >>>>>> attached.
> > >>>>>>
> > >>>>>> Best,
> > >>>>>> Danny Chan
> > >>>>>> 在 2020年3月18日 +0800 AM11:08,Kurt Young <ykt...@gmail.com>,写道:
> > >>>>>>> Have one question for adding `supportedHintOptions` method to
> > >>>>>>> `TableFactory`. It seems
> > >>>>>>> `TableFactory` is a base factory interface for all *table module*
> > >>> related
> > >>>>>>> instances, such as
> > >>>>>>> catalog, module, format and so on. It's not created only for
> > >>> *table*. Is
> > >>>>>> it
> > >>>>>>> possible to move it
> > >>>>>>> to `TableSourceFactory`?
> > >>>>>>>
> > >>>>>>> Best,
> > >>>>>>> Kurt
> > >>>>>>>
> > >>>>>>>
> > >>>>>>> On Wed, Mar 18, 2020 at 10:59 AM Danny Chan <
> > >> yuzhao....@gmail.com>
> > >>>>>> wrote:
> > >>>>>>>
> > >>>>>>>> Thanks Timo ~
> > >>>>>>>>
> > >>>>>>>> For the naming itself, I also think the PROPERTIES is not that
> > >>>>>> concise, so
> > >>>>>>>> +1 for OPTIONS (I had thought about that, but there are many
> > >>> codes in
> > >>>>>>>> current Flink called it properties, i.e. the
> > >>> DescriptorProperties,
> > >>>>>>>> #getSupportedProperties), let’s use OPTIONS if this is our new
> > >>>>>> preference.
> > >>>>>>>>
> > >>>>>>>> +1 to `Set<ConfigOption> supportedHintOptions()` because the
> > >>>>>> ConfigOption
> > >>>>>>>> can take more info. AFAIK, Spark also call their table options
> > >>> instead
> > >>>>>> of
> > >>>>>>>> properties. [1]
> > >>>>>>>>
> > >>>>>>>> In my local POC, I did create a new CatalogTable, and it works
> > >>> for
> > >>>>>> current
> > >>>>>>>> connectors well, all the DDL tables would finally yield a
> > >>> CatalogTable
> > >>>>>>>> instance and we can apply the options to that(in the
> > >>> CatalogSourceTable
> > >>>>>>>> when we generating the TableSource), the pros is that we do not
> > >>> need to
> > >>>>>>>> modify the codes of connectors itself. If we split the options
> > >>> from
> > >>>>>>>> CatalogTable, we may need to add some additional logic in each
> > >>>>>> connector
> > >>>>>>>> factories in order to merge these properties (and the logic are
> > >>> almost
> > >>>>>> the
> > >>>>>>>> same), what do you think about this?
> > >>>>>>>>
> > >>>>>>>> [1]
> > >>>>>>>>
> > >>>>>>
> > >>>
> > >>
> >
> https://docs.databricks.com/spark/latest/spark-sql/language-manual/create-table.html
> > >>>>>>>>
> > >>>>>>>> Best,
> > >>>>>>>> Danny Chan
> > >>>>>>>> 在 2020年3月17日 +0800 PM10:10,Timo Walther <twal...@apache.org
> > >>> ,写道:
> > >>>>>>>>> Hi Danny,
> > >>>>>>>>>
> > >>>>>>>>> thanks for updating the FLIP. I think your current design is
> > >>>>>> sufficient
> > >>>>>>>>> to separate hints from result-related properties.
> > >>>>>>>>>
> > >>>>>>>>> One remark to the naming itself: I would vote for calling the
> > >>> hints
> > >>>>>>>>> around table scan `OPTIONS('k'='v')`. We used the term
> > >>> "properties"
> > >>>>>> in
> > >>>>>>>>> the past but since we want to unify the Flink configuration
> > >>>>>> experience,
> > >>>>>>>>> we should use consistent naming and classes around
> > >>> `ConfigOptions`.
> > >>>>>>>>>
> > >>>>>>>>> It would be nice to use `Set<ConfigOption>
> > >>> supportedHintOptions();`
> > >>>>>> to
> > >>>>>>>>> start using config options instead of pure string properties.
> > >>> This
> > >>>>>> will
> > >>>>>>>>> also allow us to generate documentation in the future around
> > >>>>>> supported
> > >>>>>>>>> data types, ranges, etc. for options. At some point we would
> > >>> also
> > >>>>>> like
> > >>>>>>>>> to drop `DescriptorProperties` class. "Options" is also used
> > >>> in the
> > >>>>>>>>> documentation [1] and in the SQL/MED standard [2].
> > >>>>>>>>>
> > >>>>>>>>> Furthermore, I would still vote for separating CatalogTable
> > >>> and hint
> > >>>>>>>>> options. Otherwise the planner would need to create a new
> > >>>>>> CatalogTable
> > >>>>>>>>> instance which might not always be easy. We should offer them
> > >>> via:
> > >>>>>>>>>
> > >>>>>>>>>
> > >>> org.apache.flink.table.factories.TableSourceFactory.Context#getHints:
> > >>>>>>>>> ReadableConfig
> > >>>>>>>>>
> > >>>>>>>>> What do you think?
> > >>>>>>>>>
> > >>>>>>>>> Regards,
> > >>>>>>>>> Timo
> > >>>>>>>>>
> > >>>>>>>>> [1]
> > >>>>>>>>>
> > >>>>>>>>
> > >>>>>>
> > >>>
> > >>
> >
> https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sql/create.html#create-table
> > >>>>>>>>> [2] https://wiki.postgresql.org/wiki/SQL/MED
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>> On 12.03.20 15:06, Stephan Ewen wrote:
> > >>>>>>>>>> @Danny sounds good.
> > >>>>>>>>>>
> > >>>>>>>>>> Maybe it is worth listing all the classes of problems that
> > >>> you
> > >>>>>> want to
> > >>>>>>>>>> address and then look at each class and see if hints are a
> > >>> good
> > >>>>>> default
> > >>>>>>>>>> solution or a good optional way of simplifying things?
> > >>>>>>>>>> The discussion has grown a lot and it is starting to be
> > >> hard
> > >>> to
> > >>>>>>>> distinguish
> > >>>>>>>>>> the parts where everyone agrees from the parts were there
> > >> are
> > >>>>>> concerns.
> > >>>>>>>>>>
> > >>>>>>>>>> On Thu, Mar 12, 2020 at 2:31 PM Danny Chan <
> > >>> danny0...@apache.org>
> > >>>>>>>> wrote:
> > >>>>>>>>>>
> > >>>>>>>>>>> Thanks Stephan ~
> > >>>>>>>>>>>
> > >>>>>>>>>>> We can remove the support for properties that may change
> > >>> the
> > >>>>>>>> semantics of
> > >>>>>>>>>>> query if you think that is a trouble.
> > >>>>>>>>>>>
> > >>>>>>>>>>> How about we support the /*+ properties() */ hint only
> > >> for
> > >>> those
> > >>>>>>>> optimize
> > >>>>>>>>>>> parameters, such as the fetch size of source or something
> > >>> like
> > >>>>>> that,
> > >>>>>>>> does
> > >>>>>>>>>>> that make sense?
> > >>>>>>>>>>>
> > >>>>>>>>>>> Stephan Ewen <se...@apache.org>于2020年3月12日 周四下午7:45写道:
> > >>>>>>>>>>>
> > >>>>>>>>>>>> I think Bowen has actually put it very well.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> (1) Hints that change semantics looks like trouble
> > >>> waiting to
> > >>>>>>>> happen. For
> > >>>>>>>>>>>> example Kafka offset handling should be in filters. The
> > >>> Kafka
> > >>>>>>>> source
> > >>>>>>>>>>> should
> > >>>>>>>>>>>> support predicate pushdown.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> (2) Hints should not be a workaround for current
> > >>> shortcomings.
> > >>>>>> A
> > >>>>>>>> lot of
> > >>>>>>>>>>> the
> > >>>>>>>>>>>> suggested above sounds exactly like that. Working
> > >> around
> > >>>>>>>> catalog/DDL
> > >>>>>>>>>>>> shortcomings, missing exposure of metadata (offsets),
> > >>> missing
> > >>>>>>>> predicate
> > >>>>>>>>>>>> pushdown in Kafka. Abusing a feature like hints now as
> > >> a
> > >>> quick
> > >>>>>> fix
> > >>>>>>>> for
> > >>>>>>>>>>>> these issues, rather than fixing the root causes, will
> > >>> much
> > >>>>>> likely
> > >>>>>>>> bite
> > >>>>>>>>>>> us
> > >>>>>>>>>>>> back badly in the future.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Best,
> > >>>>>>>>>>>> Stephan
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> On Thu, Mar 12, 2020 at 10:43 AM Kurt Young <
> > >>> ykt...@gmail.com>
> > >>>>>>>> wrote:
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> It seems this FLIP's name is somewhat misleading.
> > >> From
> > >>> my
> > >>>>>>>>>>> understanding,
> > >>>>>>>>>>>>> this FLIP is trying to
> > >>>>>>>>>>>>> address the dynamic parameter issue, and table hints
> > >>> is the
> > >>>>>> way
> > >>>>>>>> we wan
> > >>>>>>>>>>> to
> > >>>>>>>>>>>>> choose. I think we should
> > >>>>>>>>>>>>> be focus on "what's the right way to solve dynamic
> > >>> property"
> > >>>>>>>> instead of
> > >>>>>>>>>>>>> discussing "whether table
> > >>>>>>>>>>>>> hints can affect query semantics".
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> For now, there are two proposed ways to achieve
> > >> dynamic
> > >>>>>> property:
> > >>>>>>>>>>>>> 1. FLIP-110: create temporary table xx like xx with
> > >>> (xxx)
> > >>>>>>>>>>>>> 2. use custom "from t with (xxx)" syntax
> > >>>>>>>>>>>>> 3. "Borrow" the table hints to have a special
> > >>> PROPERTIES
> > >>>>>> hint.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> The first one didn't break anything, but the only
> > >>> problem i
> > >>>>>> see
> > >>>>>>>> is a
> > >>>>>>>>>>>> little
> > >>>>>>>>>>>>> more verbose than the table hint
> > >>>>>>>>>>>>> approach. I can imagine when someone using SQL CLI to
> > >>> have a
> > >>>>>> sql
> > >>>>>>>>>>>>> experience, it's quite often that
> > >>>>>>>>>>>>> he will modify the table property, some use cases i
> > >> can
> > >>>>>> think of:
> > >>>>>>>>>>>>> 1. the source contains some corrupted data, i want to
> > >>> turn
> > >>>>>> on the
> > >>>>>>>>>>>>> "ignore-error" flag for certain formats.
> > >>>>>>>>>>>>> 2. I have a kafka table and want to see some sample
> > >>> data
> > >>>>>> from the
> > >>>>>>>>>>>>> beginning, so i change the offset
> > >>>>>>>>>>>>> to "earliest", and then I want to observe the latest
> > >>> data
> > >>>>>> which
> > >>>>>>>> keeps
> > >>>>>>>>>>>>> coming in. I would write another query
> > >>>>>>>>>>>>> to select from the latest table.
> > >>>>>>>>>>>>> 3. I want to my jdbc sink flush data more eagerly
> > >> then
> > >>> i can
> > >>>>>>>> observe
> > >>>>>>>>>>> the
> > >>>>>>>>>>>>> data from database side.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Most of such use cases are quite ad-hoc. If every
> > >> time
> > >>> I
> > >>>>>> want to
> > >>>>>>>> have a
> > >>>>>>>>>>>>> different experience, i need to create
> > >>>>>>>>>>>>> a temporary table and then also modify my query, it
> > >>> doesn't
> > >>>>>> feel
> > >>>>>>>>>>> smooth.
> > >>>>>>>>>>>>> Embed such dynamic property into
> > >>>>>>>>>>>>> query would have better user experience.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Both 2 & 3 can make this happen. The cons of #2 is
> > >>> breaking
> > >>>>>> SQL
> > >>>>>>>>>>>> compliant,
> > >>>>>>>>>>>>> and for #3, it only breaks some
> > >>>>>>>>>>>>> unwritten rules, but we can have an explanation on
> > >>> that. And
> > >>>>>> I
> > >>>>>>>> really
> > >>>>>>>>>>>> doubt
> > >>>>>>>>>>>>> whether user would complain about
> > >>>>>>>>>>>>> this when they actually have flexible and good
> > >>> experience
> > >>>>>> using
> > >>>>>>>> this.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> My tendency would be #3 > #1 > #2, what do you think?
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>> Kurt
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> On Thu, Mar 12, 2020 at 1:11 PM Danny Chan <
> > >>>>>> yuzhao....@gmail.com
> > >>>>>>>>>
> > >>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Thanks Aljoscha ~
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> I agree for most of the query hints, they are
> > >>> optional as
> > >>>>>> an
> > >>>>>>>>>>> optimizer
> > >>>>>>>>>>>>>> instruction, especially for the traditional RDBMS.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> But, just like BenChao said, Flink as a computation
> > >>> engine
> > >>>>>> has
> > >>>>>>>> many
> > >>>>>>>>>>>>>> different kind of data sources, thus, dynamic
> > >>> parameters
> > >>>>>> like
> > >>>>>>>>>>>>> start_offest
> > >>>>>>>>>>>>>> can only bind to each table scope, we can not set a
> > >>> session
> > >>>>>>>> config
> > >>>>>>>>>>> like
> > >>>>>>>>>>>>>> KSQL because they are all about Kafka:
> > >>>>>>>>>>>>>>> SET ‘auto.offset.reset’=‘earliest’;
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Thus the most flexible way to set up these dynamic
> > >>> params
> > >>>>>> is
> > >>>>>>>> to bind
> > >>>>>>>>>>> to
> > >>>>>>>>>>>>>> the table scope in the query when we want to
> > >> override
> > >>>>>>>> something, so
> > >>>>>>>>>>> we
> > >>>>>>>>>>>>> have
> > >>>>>>>>>>>>>> these solutions above (with pros and cons from my
> > >>> side):
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> • 1. Select * from t(offset=123) (from Timo)
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Pros:
> > >>>>>>>>>>>>>> - Easy to add
> > >>>>>>>>>>>>>> - Parameters are part of the main query
> > >>>>>>>>>>>>>> Cons:
> > >>>>>>>>>>>>>> - Not SQL compliant
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> • 2. Select * from t /*+ PROPERTIES(offset=123) */
> > >>> (from
> > >>>>>> me)
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Pros:
> > >>>>>>>>>>>>>> - Easy to add
> > >>>>>>>>>>>>>> - SQL compliant because it is nested in the
> > >> comments
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Cons:
> > >>>>>>>>>>>>>> - Parameters are not part of the main query
> > >>>>>>>>>>>>>> - Cryptic syntax for new users
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> The biggest problem for hints way may be the “if
> > >>> hints
> > >>>>>> must be
> > >>>>>>>>>>>> optional”,
> > >>>>>>>>>>>>>> actually we have though about 1 for a while but
> > >>> aborted
> > >>>>>>>> because it
> > >>>>>>>>>>>> breaks
> > >>>>>>>>>>>>>> the SQL standard too much. And we replace it with
> > >> 2,
> > >>>>>> because
> > >>>>>>>> the
> > >>>>>>>>>>> hints
> > >>>>>>>>>>>>>> syntax do not break SQL standard(nested in
> > >> comments).
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> What if we have the special /*+ PROPERTIES */ hint
> > >>> that
> > >>>>>> allows
> > >>>>>>>>>>> override
> > >>>>>>>>>>>>>> some properties of table dynamically, it does not
> > >>> break
> > >>>>>>>> anything, at
> > >>>>>>>>>>>>> lease
> > >>>>>>>>>>>>>> for current Flink use cases.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Planner hints are optional just because they are
> > >>> naturally
> > >>>>>>>> enforcers
> > >>>>>>>>>>> of
> > >>>>>>>>>>>>>> the planner, most of them aim to instruct the
> > >>> optimizer,
> > >>>>>> but,
> > >>>>>>>> the
> > >>>>>>>>>>> table
> > >>>>>>>>>>>>>> hints is a little different, table hints can
> > >> specify
> > >>> the
> > >>>>>> table
> > >>>>>>>> meta
> > >>>>>>>>>>>> like
> > >>>>>>>>>>>>>> index column, and it is very convenient to specify
> > >>> table
> > >>>>>>>> properties.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Or shall we not call /*+ PROPERTIES(offset=123) */
> > >>> table
> > >>>>>> hint,
> > >>>>>>>> we
> > >>>>>>>>>>> can
> > >>>>>>>>>>>>>> call it table dynamic parameters.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>> Danny Chan
> > >>>>>>>>>>>>>> 在 2020年3月11日 +0800 PM9:20,Aljoscha Krettek <
> > >>>>>>>> aljos...@apache.org>,写道:
> > >>>>>>>>>>>>>>> Hi,
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> I don't understand this discussion. Hints, as I
> > >>>>>> understand
> > >>>>>>>> them,
> > >>>>>>>>>>>> should
> > >>>>>>>>>>>>>>> work like this:
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> - hints are *optional* advice for the optimizer
> > >> to
> > >>> try
> > >>>>>> and
> > >>>>>>>> help it
> > >>>>>>>>>>> to
> > >>>>>>>>>>>>>>> find a good execution strategy
> > >>>>>>>>>>>>>>> - hints should not change query semantics, i.e.
> > >>> they
> > >>>>>> should
> > >>>>>>>> not
> > >>>>>>>>>>>> change
> > >>>>>>>>>>>>>>> connector properties executing a query with
> > >> taking
> > >>> into
> > >>>>>>>> account the
> > >>>>>>>>>>>>>>> hints *must* produce the same result as executing
> > >>> the
> > >>>>>> query
> > >>>>>>>> without
> > >>>>>>>>>>>>>>> taking into account the hints
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>  From these simple requirements you can derive a
> > >>> solution
> > >>>>>>>> that makes
> > >>>>>>>>>>>>>>> sense. I don't have a strong preference for the
> > >>> syntax
> > >>>>>> but we
> > >>>>>>>>>>> should
> > >>>>>>>>>>>>>>> strive to be in line with prior work.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>> Aljoscha
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> On 11.03.20 11:53, Danny Chan wrote:
> > >>>>>>>>>>>>>>>> Thanks Timo for summarize the 3 options ~
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> I agree with Kurt that option2 is too
> > >>> complicated to
> > >>>>>> use
> > >>>>>>>> because:
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> • As a Kafka topic consumer, the user must
> > >>> define both
> > >>>>>> the
> > >>>>>>>>>>> virtual
> > >>>>>>>>>>>>>> column for start offset and he must apply a special
> > >>> filter
> > >>>>>>>> predicate
> > >>>>>>>>>>>>> after
> > >>>>>>>>>>>>>> each query
> > >>>>>>>>>>>>>>>> • And for the internal implementation, the
> > >>> metadata
> > >>>>>> column
> > >>>>>>>> push
> > >>>>>>>>>>>> down
> > >>>>>>>>>>>>>> is another hard topic, each kind of message queue
> > >>> may have
> > >>>>>> its
> > >>>>>>>> offset
> > >>>>>>>>>>>>>> attribute, we need to consider the expression type
> > >>> for
> > >>>>>>>> different
> > >>>>>>>>>>> kind;
> > >>>>>>>>>>>>> the
> > >>>>>>>>>>>>>> source also need to recognize the constant column
> > >> as
> > >>> a
> > >>>>>> config
> > >>>>>>>>>>>>> option(which
> > >>>>>>>>>>>>>> is weird because usually what we pushed down is a
> > >>> table
> > >>>>>> column)
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> For option 1 and option3, I think there is no
> > >>>>>> difference,
> > >>>>>>>> option1
> > >>>>>>>>>>>> is
> > >>>>>>>>>>>>>> also a hint syntax which is introduced in Sybase
> > >> and
> > >>>>>>>> referenced then
> > >>>>>>>>>>>>>> deprecated by MS-SQL in 199X years because of the
> > >>>>>>>> ambitiousness.
> > >>>>>>>>>>>>> Personally
> > >>>>>>>>>>>>>> I prefer /*+ */ style table hint than WITH keyword
> > >>> for
> > >>>>>> these
> > >>>>>>>> reasons:
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> • We do not break the standard SQL, the hints
> > >> are
> > >>>>>> nested
> > >>>>>>>> in SQL
> > >>>>>>>>>>>>>> comments
> > >>>>>>>>>>>>>>>> • We do not need to introduce additional WITH
> > >>> keyword
> > >>>>>>>> which may
> > >>>>>>>>>>>>> appear
> > >>>>>>>>>>>>>> in a query if we use that because a table can be
> > >>>>>> referenced in
> > >>>>>>>> all
> > >>>>>>>>>>>> kinds
> > >>>>>>>>>>>>> of
> > >>>>>>>>>>>>>> SQL contexts: INSERT/DELETE/FROM/JOIN …. That would
> > >>> make
> > >>>>>> our
> > >>>>>>>> sql
> > >>>>>>>>>>> query
> > >>>>>>>>>>>>>> break too much of the SQL from standard
> > >>>>>>>>>>>>>>>> • We would have uniform syntax for hints as
> > >> query
> > >>>>>> hint, one
> > >>>>>>>>>>> syntax
> > >>>>>>>>>>>>>> fits all and more easy to use
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> And here is the reason why we choose a uniform
> > >>> Oracle
> > >>>>>>>> style query
> > >>>>>>>>>>>>>> hint syntax which is addressed by Julian Hyde when
> > >> we
> > >>>>>> design
> > >>>>>>>> the
> > >>>>>>>>>>> syntax
> > >>>>>>>>>>>>>> from the Calcite community:
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> I don’t much like the MSSQL-style syntax for
> > >>> table
> > >>>>>> hints.
> > >>>>>>>> It
> > >>>>>>>>>>> adds a
> > >>>>>>>>>>>>>> new use of the WITH keyword that is unrelated to
> > >> the
> > >>> use of
> > >>>>>>>> WITH for
> > >>>>>>>>>>>>>> common-table expressions.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> A historical note. Microsoft SQL Server
> > >>> inherited its
> > >>>>>> hint
> > >>>>>>>> syntax
> > >>>>>>>>>>>>> from
> > >>>>>>>>>>>>>> Sybase a very long time ago. (See “Transact SQL
> > >>>>>>>> Programming”[1], page
> > >>>>>>>>>>>>> 632,
> > >>>>>>>>>>>>>> “Optimizer hints”. The book was written in 1999,
> > >> and
> > >>> covers
> > >>>>>>>> Microsoft
> > >>>>>>>>>>>> SQL
> > >>>>>>>>>>>>>> Server 6.5 / 7.0 and Sybase Adaptive Server 11.5,
> > >>> but the
> > >>>>>>>> syntax very
> > >>>>>>>>>>>>>> likely predates Sybase 4.3, from which Microsoft
> > >> SQL
> > >>>>>> Server was
> > >>>>>>>>>>> forked
> > >>>>>>>>>>>> in
> > >>>>>>>>>>>>>> 1993.)
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Microsoft later added the WITH keyword to make
> > >>> it less
> > >>>>>>>> ambiguous,
> > >>>>>>>>>>>> and
> > >>>>>>>>>>>>>> has now deprecated the syntax that does not use
> > >> WITH.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> They are forced to keep the syntax for
> > >> backwards
> > >>>>>>>> compatibility
> > >>>>>>>>>>> but
> > >>>>>>>>>>>>>> that doesn’t mean that we should shoulder their
> > >>> burden.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> I think formatted comments are the right
> > >>> container for
> > >>>>>>>> hints
> > >>>>>>>>>>>> because
> > >>>>>>>>>>>>>> it allows us to change the hint syntax without
> > >>> changing
> > >>>>>> the SQL
> > >>>>>>>>>>> parser,
> > >>>>>>>>>>>>> and
> > >>>>>>>>>>>>>> makes clear that we are at liberty to ignore hints
> > >>>>>> entirely.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Julian
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> [1] https://www.amazon.com/s?k=9781565924017 <
> > >>>>>>>>>>>>>> https://www.amazon.com/s?k=9781565924017>
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>> Danny Chan
> > >>>>>>>>>>>>>>>> 在 2020年3月11日 +0800 PM4:03,Timo Walther <
> > >>>>>> twal...@apache.org
> > >>>>>>>>> ,写道:
> > >>>>>>>>>>>>>>>>> Hi Danny,
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> it is true that our DDL is not standard
> > >>> compliant by
> > >>>>>>>> using the
> > >>>>>>>>>>>> WITH
> > >>>>>>>>>>>>>>>>> clause. Nevertheless, we aim for not
> > >> diverging
> > >>> too
> > >>>>>> much
> > >>>>>>>> and the
> > >>>>>>>>>>>>> LIKE
> > >>>>>>>>>>>>>>>>> clause is an example of that. It will solve
> > >>> things
> > >>>>>> like
> > >>>>>>>>>>>> overwriting
> > >>>>>>>>>>>>>>>>> WATERMARKs, add additional/modifying
> > >>> properties and
> > >>>>>>>> inherit
> > >>>>>>>>>>>> schema.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Bowen is right that Flink's DDL is mixing 3
> > >>> types
> > >>>>>>>> definition
> > >>>>>>>>>>>>>> together.
> > >>>>>>>>>>>>>>>>> We are not the first ones that try to solve
> > >>> this.
> > >>>>>> There
> > >>>>>>>> is also
> > >>>>>>>>>>>> the
> > >>>>>>>>>>>>>> SQL
> > >>>>>>>>>>>>>>>>> MED standard [1] that tried to tackle this
> > >>> problem. I
> > >>>>>>>> think it
> > >>>>>>>>>>>> was
> > >>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>> considered when designing the current DDL.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Currently, I see 3 options for handling Kafka
> > >>>>>> offsets. I
> > >>>>>>>> will
> > >>>>>>>>>>>> give
> > >>>>>>>>>>>>>> some
> > >>>>>>>>>>>>>>>>> examples and look forward to feedback here:
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> *Option 1* Runtime and semantic parms as part
> > >>> of the
> > >>>>>>>> query
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> `SELECT * FROM MyTable('offset'=123)`
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Pros:
> > >>>>>>>>>>>>>>>>> - Easy to add
> > >>>>>>>>>>>>>>>>> - Parameters are part of the main query
> > >>>>>>>>>>>>>>>>> - No complicated hinting syntax
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Cons:
> > >>>>>>>>>>>>>>>>> - Not SQL compliant
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> *Option 2* Use metadata in query
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> `CREATE TABLE MyTable (id INT, offset AS
> > >>>>>>>>>>>>> SYSTEM_METADATA('offset'))`
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> `SELECT * FROM MyTable WHERE offset >
> > >> TIMESTAMP
> > >>>>>>>> '2012-12-12
> > >>>>>>>>>>>>>> 12:34:22'`
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Pros:
> > >>>>>>>>>>>>>>>>> - SQL compliant in the query
> > >>>>>>>>>>>>>>>>> - Access of metadata in the DDL which is
> > >>> required
> > >>>>>> anyway
> > >>>>>>>>>>>>>>>>> - Regular pushdown rules apply
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Cons:
> > >>>>>>>>>>>>>>>>> - Users need to add an additional comlumn in
> > >>> the DDL
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> *Option 3*: Use hints for properties
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> `
> > >>>>>>>>>>>>>>>>> SELECT *
> > >>>>>>>>>>>>>>>>> FROM MyTable /*+ PROPERTIES('offset'=123) */
> > >>>>>>>>>>>>>>>>> `
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Pros:
> > >>>>>>>>>>>>>>>>> - Easy to add
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Cons:
> > >>>>>>>>>>>>>>>>> - Parameters are not part of the main query
> > >>>>>>>>>>>>>>>>> - Cryptic syntax for new users
> > >>>>>>>>>>>>>>>>> - Not standard compliant.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> If we go with this option, I would suggest to
> > >>> make it
> > >>>>>>>> available
> > >>>>>>>>>>>> in
> > >>>>>>>>>>>>> a
> > >>>>>>>>>>>>>>>>> separate map and don't mix it with statically
> > >>> defined
> > >>>>>>>>>>> properties.
> > >>>>>>>>>>>>>> Such
> > >>>>>>>>>>>>>>>>> that the factory can decide which properties
> > >>> have the
> > >>>>>>>> right to
> > >>>>>>>>>>> be
> > >>>>>>>>>>>>>>>>> overwritten by the hints:
> > >>>>>>>>>>>>>>>>> TableSourceFactory.Context.getQueryHints():
> > >>>>>>>> ReadableConfig
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Regards,
> > >>>>>>>>>>>>>>>>> Timo
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> [1] https://en.wikipedia.org/wiki/SQL/MED
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Currently I see 3 options as a
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> On 11.03.20 07:21, Danny Chan wrote:
> > >>>>>>>>>>>>>>>>>> Thanks Bowen ~
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> I agree we should somehow categorize our
> > >>> connector
> > >>>>>>>>>>> parameters.
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> For type1, I’m already preparing a solution
> > >>> like
> > >>>>>> the
> > >>>>>>>>>>> Confluent
> > >>>>>>>>>>>>>> schema registry + Avro schema inference thing, so
> > >>> this may
> > >>>>>> not
> > >>>>>>>> be a
> > >>>>>>>>>>>>> problem
> > >>>>>>>>>>>>>> in the near future.
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> For type3, I have some questions:
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> "SELECT * FROM mykafka WHERE offset >
> > >> 12pm
> > >>>>>> yesterday”
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> Where does the offset column come from, a
> > >>> virtual
> > >>>>>>>> column from
> > >>>>>>>>>>>> the
> > >>>>>>>>>>>>>> table schema, you said that
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> They change
> > >>>>>>>>>>>>>>>>>> almost every time a query starts and have
> > >>> nothing
> > >>>>>> to
> > >>>>>>>> do with
> > >>>>>>>>>>>>>> metadata, thus
> > >>>>>>>>>>>>>>>>>> should not be part of table definition/DDL
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> But why you can reference it in the query,
> > >>> I’m
> > >>>>>>>> confused for
> > >>>>>>>>>>>> that,
> > >>>>>>>>>>>>>> can you elaborate a little ?
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>> Danny Chan
> > >>>>>>>>>>>>>>>>>> 在 2020年3月11日 +0800 PM12:52,Bowen Li <
> > >>>>>>>> bowenl...@gmail.com
> > >>>>>>>>>>>> ,写道:
> > >>>>>>>>>>>>>>>>>>> Thanks Danny for kicking off the effort
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> The root cause of too much manual work is
> > >>> Flink
> > >>>>>> DDL
> > >>>>>>>> has
> > >>>>>>>>>>>> mixed 3
> > >>>>>>>>>>>>>> types of
> > >>>>>>>>>>>>>>>>>>> params together and doesn't handle each
> > >> of
> > >>> them
> > >>>>>> very
> > >>>>>>>> well.
> > >>>>>>>>>>>>> Below
> > >>>>>>>>>>>>>> are how I
> > >>>>>>>>>>>>>>>>>>> categorize them and corresponding
> > >>> solutions in my
> > >>>>>>>> mind:
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> - type 1: Metadata of external data, like
> > >>>>>> external
> > >>>>>>>>>>>>> endpoint/url,
> > >>>>>>>>>>>>>>>>>>> username/pwd, schemas, formats.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Such metadata are mostly already
> > >>> accessible in
> > >>>>>>>> external
> > >>>>>>>>>>>> system
> > >>>>>>>>>>>>>> as long as
> > >>>>>>>>>>>>>>>>>>> endpoints and credentials are provided.
> > >>> Flink can
> > >>>>>>>> get it
> > >>>>>>>>>>> thru
> > >>>>>>>>>>>>>> catalogs, but
> > >>>>>>>>>>>>>>>>>>> we haven't had many catalogs yet and thus
> > >>> Flink
> > >>>>>> just
> > >>>>>>>> hasn't
> > >>>>>>>>>>>>> been
> > >>>>>>>>>>>>>> able to
> > >>>>>>>>>>>>>>>>>>> leverage that. So the solution should be
> > >>> building
> > >>>>>>>> more
> > >>>>>>>>>>>>> catalogs.
> > >>>>>>>>>>>>>> Such
> > >>>>>>>>>>>>>>>>>>> params should be part of a Flink table
> > >>>>>>>> DDL/definition, and
> > >>>>>>>>>>>> not
> > >>>>>>>>>>>>>> overridable
> > >>>>>>>>>>>>>>>>>>> in any means.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> - type 2: Runtime params, like jdbc
> > >>> connector's
> > >>>>>>>> fetch size,
> > >>>>>>>>>>>>>> elasticsearch
> > >>>>>>>>>>>>>>>>>>> connector's bulk flush size.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Such params don't affect query results,
> > >> but
> > >>>>>> affect
> > >>>>>>>> how
> > >>>>>>>>>>>> results
> > >>>>>>>>>>>>>> are produced
> > >>>>>>>>>>>>>>>>>>> (eg. fast or slow, aka performance) -
> > >> they
> > >>> are
> > >>>>>>>> essentially
> > >>>>>>>>>>>>>> execution and
> > >>>>>>>>>>>>>>>>>>> implementation details. They change often
> > >>> in
> > >>>>>>>> exploration or
> > >>>>>>>>>>>>>> development
> > >>>>>>>>>>>>>>>>>>> stages, but not quite frequently in
> > >>> well-defined
> > >>>>>>>>>>> long-running
> > >>>>>>>>>>>>>> pipelines.
> > >>>>>>>>>>>>>>>>>>> They should always have default values
> > >> and
> > >>> can be
> > >>>>>>>> missing
> > >>>>>>>>>>> in
> > >>>>>>>>>>>>>> query. They
> > >>>>>>>>>>>>>>>>>>> can be part of a table DDL/definition,
> > >> but
> > >>> should
> > >>>>>>>> also be
> > >>>>>>>>>>>>>> replaceable in a
> > >>>>>>>>>>>>>>>>>>> query - *this is what table "hints" in
> > >>> FLIP-113
> > >>>>>>>> should
> > >>>>>>>>>>>> cover*.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> - type 3: Semantic params, like kafka
> > >>> connector's
> > >>>>>>>> start
> > >>>>>>>>>>>> offset.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Such params affect query results - the
> > >>> semantics.
> > >>>>>>>> They'd
> > >>>>>>>>>>>> better
> > >>>>>>>>>>>>>> be as
> > >>>>>>>>>>>>>>>>>>> filter conditions in WHERE clause that
> > >> can
> > >>> be
> > >>>>>> pushed
> > >>>>>>>> down.
> > >>>>>>>>>>>> They
> > >>>>>>>>>>>>>> change
> > >>>>>>>>>>>>>>>>>>> almost every time a query starts and have
> > >>>>>> nothing to
> > >>>>>>>> do
> > >>>>>>>>>>> with
> > >>>>>>>>>>>>>> metadata, thus
> > >>>>>>>>>>>>>>>>>>> should not be part of table
> > >>> definition/DDL, nor
> > >>>>>> be
> > >>>>>>>>>>> persisted
> > >>>>>>>>>>>> in
> > >>>>>>>>>>>>>> catalogs.
> > >>>>>>>>>>>>>>>>>>> If they will, users should create views
> > >> to
> > >>> keep
> > >>>>>> such
> > >>>>>>>> params
> > >>>>>>>>>>>>>> around (note
> > >>>>>>>>>>>>>>>>>>> this is different from variable
> > >>> substitution).
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Take Flink-Kafka as an example. Once we
> > >>> get these
> > >>>>>>>> params
> > >>>>>>>>>>>> right,
> > >>>>>>>>>>>>>> here're the
> > >>>>>>>>>>>>>>>>>>> steps users need to do to develop and run
> > >>> a Flink
> > >>>>>>>> job:
> > >>>>>>>>>>>>>>>>>>> - configure a Flink
> > >>> ConfluentSchemaRegistry with
> > >>>>>> url,
> > >>>>>>>>>>>> username,
> > >>>>>>>>>>>>>> and password
> > >>>>>>>>>>>>>>>>>>> - run "SELECT * FROM mykafka WHERE offset
> > >>>> 12pm
> > >>>>>>>> yesterday"
> > >>>>>>>>>>>>>> (simplified
> > >>>>>>>>>>>>>>>>>>> timestamp) in SQL CLI, Flink
> > >> automatically
> > >>>>>> retrieves
> > >>>>>>>> all
> > >>>>>>>>>>>>>> metadata of
> > >>>>>>>>>>>>>>>>>>> schema, file format, etc and start the
> > >> job
> > >>>>>>>>>>>>>>>>>>> - users want to make the job read Kafka
> > >>> topic
> > >>>>>>>> faster, so it
> > >>>>>>>>>>>>> goes
> > >>>>>>>>>>>>>> as "SELECT
> > >>>>>>>>>>>>>>>>>>> * FROM mykafka /* faster_read_key=value*/
> > >>> WHERE
> > >>>>>>>> offset >
> > >>>>>>>>>>> 12pm
> > >>>>>>>>>>>>>> yesterday"
> > >>>>>>>>>>>>>>>>>>> - done and satisfied, users submit it to
> > >>>>>> production
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Regarding "CREATE TABLE t LIKE with
> > >> (k1=v1,
> > >>>>>> k2=v2),
> > >>>>>>>> I think
> > >>>>>>>>>>>>> it's
> > >>>>>>>>>>>>>> a
> > >>>>>>>>>>>>>>>>>>> nice-to-have feature, but not a
> > >>> strategically
> > >>>>>>>> critical,
> > >>>>>>>>>>>>>> long-term solution,
> > >>>>>>>>>>>>>>>>>>> because
> > >>>>>>>>>>>>>>>>>>> 1) It may seem promising at the current
> > >>> stage to
> > >>>>>>>> solve the
> > >>>>>>>>>>>>>>>>>>> too-much-manual-work problem, but that's
> > >>> only
> > >>>>>>>> because Flink
> > >>>>>>>>>>>>>> hasn't
> > >>>>>>>>>>>>>>>>>>> leveraged catalogs well and handled the 3
> > >>> types
> > >>>>>> of
> > >>>>>>>> params
> > >>>>>>>>>>>> above
> > >>>>>>>>>>>>>> properly.
> > >>>>>>>>>>>>>>>>>>> Once we get the params types right, the
> > >>> LIKE
> > >>>>>> syntax
> > >>>>>>>> won't
> > >>>>>>>>>>> be
> > >>>>>>>>>>>>> that
> > >>>>>>>>>>>>>>>>>>> important, and will be just an easier way
> > >>> to
> > >>>>>> create
> > >>>>>>>> tables
> > >>>>>>>>>>>>>> without retyping
> > >>>>>>>>>>>>>>>>>>> long fields like username and pwd.
> > >>>>>>>>>>>>>>>>>>> 2) Note that only some rare type of
> > >>> catalog can
> > >>>>>>>> store k-v
> > >>>>>>>>>>>>>> property pair, so
> > >>>>>>>>>>>>>>>>>>> table created this way often cannot be
> > >>>>>> persisted. In
> > >>>>>>>> the
> > >>>>>>>>>>>>>> foreseeable
> > >>>>>>>>>>>>>>>>>>> future, such catalog will only be
> > >>> HiveCatalog,
> > >>>>>> and
> > >>>>>>>> not
> > >>>>>>>>>>>> everyone
> > >>>>>>>>>>>>>> has a Hive
> > >>>>>>>>>>>>>>>>>>> metastore. To be honest, without
> > >>> persistence,
> > >>>>>>>> recreating
> > >>>>>>>>>>>> tables
> > >>>>>>>>>>>>>> every time
> > >>>>>>>>>>>>>>>>>>> this way is still a lot of keyboard
> > >> typing.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Cheers,
> > >>>>>>>>>>>>>>>>>>> Bowen
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> On Tue, Mar 10, 2020 at 8:07 PM Kurt
> > >> Young
> > >>> <
> > >>>>>>>>>>> ykt...@gmail.com
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> If a specific connector want to have
> > >> such
> > >>>>>>>> parameter and
> > >>>>>>>>>>>> read
> > >>>>>>>>>>>>>> if out of
> > >>>>>>>>>>>>>>>>>>>> configuration, then that's fine.
> > >>>>>>>>>>>>>>>>>>>> If we are talking about a configuration
> > >>> for all
> > >>>>>>>> kinds of
> > >>>>>>>>>>>>>> sources, I would
> > >>>>>>>>>>>>>>>>>>>> be super careful about that.
> > >>>>>>>>>>>>>>>>>>>> It's true it can solve maybe 80% cases,
> > >>> but it
> > >>>>>>>> will also
> > >>>>>>>>>>>> make
> > >>>>>>>>>>>>>> the left 20%
> > >>>>>>>>>>>>>>>>>>>> feels weird.
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>> Kurt
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> On Wed, Mar 11, 2020 at 11:00 AM Jark
> > >> Wu
> > >>> <
> > >>>>>>>>>>> imj...@gmail.com
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> Hi Kurt,
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> #3 Regarding to global offset:
> > >>>>>>>>>>>>>>>>>>>>> I'm not saying to use the global
> > >>>>>> configuration to
> > >>>>>>>>>>>> override
> > >>>>>>>>>>>>>> connector
> > >>>>>>>>>>>>>>>>>>>>> properties by the planner.
> > >>>>>>>>>>>>>>>>>>>>> But the connector should take this
> > >>>>>> configuration
> > >>>>>>>> and
> > >>>>>>>>>>>>>> translate into their
> > >>>>>>>>>>>>>>>>>>>>> client API.
> > >>>>>>>>>>>>>>>>>>>>> AFAIK, almost all the message queues
> > >>> support
> > >>>>>>>> eariliest
> > >>>>>>>>>>>> and
> > >>>>>>>>>>>>>> latest and a
> > >>>>>>>>>>>>>>>>>>>>> timestamp value as start point.
> > >>>>>>>>>>>>>>>>>>>>> So we can support 3 options for this
> > >>>>>>>> configuration:
> > >>>>>>>>>>>>>> "eariliest", "latest"
> > >>>>>>>>>>>>>>>>>>>>> and a timestamp string value.
> > >>>>>>>>>>>>>>>>>>>>> Of course, this can't solve 100%
> > >>> cases, but I
> > >>>>>>>> guess can
> > >>>>>>>>>>>>>> sovle 80% or 90%
> > >>>>>>>>>>>>>>>>>>>>> cases.
> > >>>>>>>>>>>>>>>>>>>>> And the remaining cases can be
> > >>> resolved by
> > >>>>>> LIKE
> > >>>>>>>> syntax
> > >>>>>>>>>>>>> which
> > >>>>>>>>>>>>>> I guess is
> > >>>>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>>> very common cases.
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>> Jark
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> On Wed, 11 Mar 2020 at 10:33, Kurt
> > >>> Young <
> > >>>>>>>>>>>> ykt...@gmail.com
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> Good to have such lovely
> > >>> discussions. I
> > >>>>>> also
> > >>>>>>>> want to
> > >>>>>>>>>>>>> share
> > >>>>>>>>>>>>>> some of my
> > >>>>>>>>>>>>>>>>>>>>>> opinions.
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> #1 Regarding to error handling: I
> > >>> also
> > >>>>>> think
> > >>>>>>>> ignore
> > >>>>>>>>>>>>>> invalid hints would
> > >>>>>>>>>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>>>>>>>> dangerous, maybe
> > >>>>>>>>>>>>>>>>>>>>>> the simplest solution is just throw
> > >>> an
> > >>>>>>>> exception.
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> #2 Regarding to property
> > >>> replacement: I
> > >>>>>> don't
> > >>>>>>>> think
> > >>>>>>>>>>> we
> > >>>>>>>>>>>>>> should
> > >>>>>>>>>>>>>>>>>>>> constraint
> > >>>>>>>>>>>>>>>>>>>>>> ourself to
> > >>>>>>>>>>>>>>>>>>>>>> the meaning of the word "hint", and
> > >>>>>> forbidden
> > >>>>>>>> it
> > >>>>>>>>>>>>> modifying
> > >>>>>>>>>>>>>> any
> > >>>>>>>>>>>>>>>>>>>> properties
> > >>>>>>>>>>>>>>>>>>>>>> which can effect
> > >>>>>>>>>>>>>>>>>>>>>> query results. IMO `PROPERTIES` is
> > >>> one of
> > >>>>>> the
> > >>>>>>>> table
> > >>>>>>>>>>>>> hints,
> > >>>>>>>>>>>>>> and a
> > >>>>>>>>>>>>>>>>>>>> powerful
> > >>>>>>>>>>>>>>>>>>>>>> one. It can
> > >>>>>>>>>>>>>>>>>>>>>> modify properties located in DDL's
> > >>> WITH
> > >>>>>> block.
> > >>>>>>>> But I
> > >>>>>>>>>>>> also
> > >>>>>>>>>>>>>> see the harm
> > >>>>>>>>>>>>>>>>>>>>> that
> > >>>>>>>>>>>>>>>>>>>>>> if we make it
> > >>>>>>>>>>>>>>>>>>>>>> too flexible like change the kafka
> > >>> topic
> > >>>>>> name
> > >>>>>>>> with a
> > >>>>>>>>>>>>> hint.
> > >>>>>>>>>>>>>> Such use
> > >>>>>>>>>>>>>>>>>>>> case
> > >>>>>>>>>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>>>>>>> not common and
> > >>>>>>>>>>>>>>>>>>>>>> sounds very dangerous to me. I
> > >> would
> > >>>>>> propose
> > >>>>>>>> we have
> > >>>>>>>>>>> a
> > >>>>>>>>>>>>> map
> > >>>>>>>>>>>>>> of hintable
> > >>>>>>>>>>>>>>>>>>>>>> properties for each
> > >>>>>>>>>>>>>>>>>>>>>> connector, and should validate all
> > >>> passed
> > >>>>>> in
> > >>>>>>>>>>> properties
> > >>>>>>>>>>>>>> are actually
> > >>>>>>>>>>>>>>>>>>>>>> hintable. And combining with
> > >>>>>>>>>>>>>>>>>>>>>> #1 error handling, we can throw an
> > >>>>>> exception
> > >>>>>>>> once
> > >>>>>>>>>>>>> received
> > >>>>>>>>>>>>>> invalid
> > >>>>>>>>>>>>>>>>>>>>>> property.
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> #3 Regarding to global offset: I'm
> > >>> not sure
> > >>>>>>>> it's
> > >>>>>>>>>>>>> feasible.
> > >>>>>>>>>>>>>> Different
> > >>>>>>>>>>>>>>>>>>>>>> connectors will have totally
> > >>>>>>>>>>>>>>>>>>>>>> different properties to represent
> > >>> offset,
> > >>>>>> some
> > >>>>>>>> might
> > >>>>>>>>>>> be
> > >>>>>>>>>>>>>> timestamps,
> > >>>>>>>>>>>>>>>>>>>> some
> > >>>>>>>>>>>>>>>>>>>>>> might be string literals
> > >>>>>>>>>>>>>>>>>>>>>> like "earliest", and others might
> > >> be
> > >>> just
> > >>>>>>>> integers.
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>> Kurt
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> On Tue, Mar 10, 2020 at 11:46 PM
> > >>> Jark Wu <
> > >>>>>>>>>>>>> imj...@gmail.com>
> > >>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> Hi everyone,
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> I want to jump in the discussion
> > >>> about
> > >>>>>> the
> > >>>>>>>> "dynamic
> > >>>>>>>>>>>>>> start offset"
> > >>>>>>>>>>>>>>>>>>>>>> problem.
> > >>>>>>>>>>>>>>>>>>>>>>> First of all, I share the same
> > >>> concern
> > >>>>>> with
> > >>>>>>>> Timo
> > >>>>>>>>>>> and
> > >>>>>>>>>>>>>> Fabian, that the
> > >>>>>>>>>>>>>>>>>>>>>>> "start offset" affects the query
> > >>>>>> semantics,
> > >>>>>>>> i.e.
> > >>>>>>>>>>> the
> > >>>>>>>>>>>>>> query result.
> > >>>>>>>>>>>>>>>>>>>>>>> But "hints" is just used for
> > >>> optimization
> > >>>>>>>> which
> > >>>>>>>>>>>> should
> > >>>>>>>>>>>>>> affect the
> > >>>>>>>>>>>>>>>>>>>>> result?
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> I think the "dynamic start
> > >> offset"
> > >>> is an
> > >>>>>> very
> > >>>>>>>>>>>> important
> > >>>>>>>>>>>>>> usability
> > >>>>>>>>>>>>>>>>>>>>> problem
> > >>>>>>>>>>>>>>>>>>>>>>> which will be faced by many
> > >>> streaming
> > >>>>>>>> platforms.
> > >>>>>>>>>>>>>>>>>>>>>>> I also agree "CREATE TEMPORARY
> > >>> TABLE Temp
> > >>>>>>>> (LIKE t)
> > >>>>>>>>>>>> WITH
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>> ('connector.startup-timestamp-millis' =
> > >>>>>>>>>>>>>> '1578538374471')" is verbose,
> > >>>>>>>>>>>>>>>>>>>>>> what
> > >>>>>>>>>>>>>>>>>>>>>>> if we have 10 tables to join?
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> However, what I want to propose
> > >>> (should
> > >>>>>> be
> > >>>>>>>> another
> > >>>>>>>>>>>>>> thread) is a
> > >>>>>>>>>>>>>>>>>>>> global
> > >>>>>>>>>>>>>>>>>>>>>>> configuration to reset start
> > >>> offsets of
> > >>>>>> all
> > >>>>>>>> the
> > >>>>>>>>>>>> source
> > >>>>>>>>>>>>>> connectors
> > >>>>>>>>>>>>>>>>>>>>>>> in the query session, e.g.
> > >>>>>>>>>>>>> "table.sources.start-offset".
> > >>>>>>>>>>>>>> This is
> > >>>>>>>>>>>>>>>>>>>>> possible
> > >>>>>>>>>>>>>>>>>>>>>>> now because
> > >>> `TableSourceFactory.Context`
> > >>>>>> has
> > >>>>>>>>>>>>>> `getConfiguration`
> > >>>>>>>>>>>>>>>>>>>>>>> method to get the session
> > >>> configuration,
> > >>>>>> and
> > >>>>>>>> use it
> > >>>>>>>>>>>> to
> > >>>>>>>>>>>>>> create an
> > >>>>>>>>>>>>>>>>>>>>> adapted
> > >>>>>>>>>>>>>>>>>>>>>>> TableSource.
> > >>>>>>>>>>>>>>>>>>>>>>> Then we can also expose to SQL
> > >> CLI
> > >>> via
> > >>>>>> SET
> > >>>>>>>> command,
> > >>>>>>>>>>>>> e.g.
> > >>>>>>>>>>>>>> `SET
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>> 'table.sources.start-offset'='earliest';`,
> > >>>>>>>> which is
> > >>>>>>>>>>>>>> pretty simple and
> > >>>>>>>>>>>>>>>>>>>>>>> straightforward.
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> This is very similar to KSQL's
> > >> `SET
> > >>>>>>>>>>>>>> 'auto.offset.reset'='earliest'`
> > >>>>>>>>>>>>>>>>>>>>> which
> > >>>>>>>>>>>>>>>>>>>>>>> is very helpful IMO.
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>> Jark
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> On Tue, 10 Mar 2020 at 22:29,
> > >> Timo
> > >>>>>> Walther <
> > >>>>>>>>>>>>>> twal...@apache.org>
> > >>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> Hi Danny,
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> compared to the hints, FLIP-110
> > >>> is
> > >>>>>> fully
> > >>>>>>>>>>> compliant
> > >>>>>>>>>>>> to
> > >>>>>>>>>>>>>> the SQL
> > >>>>>>>>>>>>>>>>>>>>> standard.
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> I don't think that `CREATE
> > >>> TEMPORARY
> > >>>>>> TABLE
> > >>>>>>>> Temp
> > >>>>>>>>>>>> (LIKE
> > >>>>>>>>>>>>>> t) WITH
> > >>>>>>>>>>>>>>>>>>>> (k=v)`
> > >>>>>>>>>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>>>>>>>>> too verbose or awkward for the
> > >>> power of
> > >>>>>>>> basically
> > >>>>>>>>>>>>>> changing the
> > >>>>>>>>>>>>>>>>>>>> entire
> > >>>>>>>>>>>>>>>>>>>>>>>> connector. Usually, this
> > >>> statement
> > >>>>>> would
> > >>>>>>>> just
> > >>>>>>>>>>>> precede
> > >>>>>>>>>>>>>> the query in
> > >>>>>>>>>>>>>>>>>>>> a
> > >>>>>>>>>>>>>>>>>>>>>>>> multiline file. So it can be
> > >>> change
> > >>>>>>>> "in-place"
> > >>>>>>>>>>> like
> > >>>>>>>>>>>>>> the hints you
> > >>>>>>>>>>>>>>>>>>>>>>> proposed.
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> Many companies have a
> > >>> well-defined set
> > >>>>>> of
> > >>>>>>>> tables
> > >>>>>>>>>>>> that
> > >>>>>>>>>>>>>> should be
> > >>>>>>>>>>>>>>>>>>>> used.
> > >>>>>>>>>>>>>>>>>>>>>> It
> > >>>>>>>>>>>>>>>>>>>>>>>> would be dangerous if users can
> > >>> change
> > >>>>>> the
> > >>>>>>>> path
> > >>>>>>>>>>> or
> > >>>>>>>>>>>>>> topic in a hint.
> > >>>>>>>>>>>>>>>>>>>>> The
> > >>>>>>>>>>>>>>>>>>>>>>>> catalog/catalog manager should
> > >>> be the
> > >>>>>>>> entity that
> > >>>>>>>>>>>>>> controls which
> > >>>>>>>>>>>>>>>>>>>>> tables
> > >>>>>>>>>>>>>>>>>>>>>>>> exist and how they can be
> > >>> accessed.
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> what’s the problem there if
> > >> we
> > >>> user
> > >>>>>> the
> > >>>>>>>> table
> > >>>>>>>>>>>> hints
> > >>>>>>>>>>>>>> to support
> > >>>>>>>>>>>>>>>>>>>>>> “start
> > >>>>>>>>>>>>>>>>>>>>>>>> offset”?
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> IMHO it violates the meaning of
> > >>> a hint.
> > >>>>>>>> According
> > >>>>>>>>>>>> to
> > >>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>> dictionary,
> > >>>>>>>>>>>>>>>>>>>>> a
> > >>>>>>>>>>>>>>>>>>>>>>>> hint is "a statement that
> > >>> expresses
> > >>>>>>>> indirectly
> > >>>>>>>>>>> what
> > >>>>>>>>>>>>>> one prefers not
> > >>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>> say explicitly". But offsets
> > >> are
> > >>> a
> > >>>>>>>> property that
> > >>>>>>>>>>>> are
> > >>>>>>>>>>>>>> very explicit.
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> If we go with the hint
> > >> approach,
> > >>> it
> > >>>>>> should
> > >>>>>>>> be
> > >>>>>>>>>>>>>> expressible in the
> > >>>>>>>>>>>>>>>>>>>>>>>> TableSourceFactory which
> > >>> properties are
> > >>>>>>>> supported
> > >>>>>>>>>>>> for
> > >>>>>>>>>>>>>> hinting. Or
> > >>>>>>>>>>>>>>>>>>>> do
> > >>>>>>>>>>>>>>>>>>>>>> you
> > >>>>>>>>>>>>>>>>>>>>>>>> plan to offer those hints in a
> > >>> separate
> > >>>>>>>>>>> Map<String,
> > >>>>>>>>>>>>>> String> that
> > >>>>>>>>>>>>>>>>>>>>> cannot
> > >>>>>>>>>>>>>>>>>>>>>>>> overwrite existing properties?
> > >> I
> > >>> think
> > >>>>>>>> this would
> > >>>>>>>>>>>> be
> > >>>>>>>>>>>>> a
> > >>>>>>>>>>>>>> different
> > >>>>>>>>>>>>>>>>>>>>>> story...
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> Regards,
> > >>>>>>>>>>>>>>>>>>>>>>>> Timo
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> On 10.03.20 10:34, Danny Chan
> > >>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>> Thanks Timo ~
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> Personally I would say that
> > >>> offset >
> > >>>>>> 0
> > >>>>>>>> and
> > >>>>>>>>>>> start
> > >>>>>>>>>>>>>> offset = 10 does
> > >>>>>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>>>>>> have the same semantic, so from
> > >>> the SQL
> > >>>>>>>> aspect,
> > >>>>>>>>>>> we
> > >>>>>>>>>>>>> can
> > >>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>> implement
> > >>>>>>>>>>>>>>>>>>>>> a
> > >>>>>>>>>>>>>>>>>>>>>>>> “starting offset” hint for
> > >> query
> > >>> with
> > >>>>>> such
> > >>>>>>>> a
> > >>>>>>>>>>>> syntax.
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> And the CREATE TABLE LIKE
> > >>> syntax is a
> > >>>>>>>> DDL which
> > >>>>>>>>>>>> is
> > >>>>>>>>>>>>>> just verbose
> > >>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>>>> defining such dynamic
> > >> parameters
> > >>> even
> > >>>>>> if
> > >>>>>>>> it could
> > >>>>>>>>>>>> do
> > >>>>>>>>>>>>>> that, shall we
> > >>>>>>>>>>>>>>>>>>>>>> force
> > >>>>>>>>>>>>>>>>>>>>>>>> users to define a temporal
> > >> table
> > >>> for
> > >>>>>> each
> > >>>>>>>> query
> > >>>>>>>>>>>> with
> > >>>>>>>>>>>>>> dynamic
> > >>>>>>>>>>>>>>>>>>>> params,
> > >>>>>>>>>>>>>>>>>>>>> I
> > >>>>>>>>>>>>>>>>>>>>>>>> would say it’s an awkward
> > >>> solution.
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> "Hints should give "hints"
> > >> but
> > >>> not
> > >>>>>>>> affect the
> > >>>>>>>>>>>>> actual
> > >>>>>>>>>>>>>> produced
> > >>>>>>>>>>>>>>>>>>>>>> result.”
> > >>>>>>>>>>>>>>>>>>>>>>>> You mentioned that multiple
> > >>> times and
> > >>>>>>>> could we
> > >>>>>>>>>>>> give a
> > >>>>>>>>>>>>>> reason,
> > >>>>>>>>>>>>>>>>>>>> what’s
> > >>>>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>> problem there if we user the
> > >>> table
> > >>>>>> hints to
> > >>>>>>>>>>> support
> > >>>>>>>>>>>>>> “start offset”
> > >>>>>>>>>>>>>>>>>>>> ?
> > >>>>>>>>>>>>>>>>>>>>>> From
> > >>>>>>>>>>>>>>>>>>>>>>>> my side I saw some benefits for
> > >>> that:
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> • It’s very convent to set up
> > >>> these
> > >>>>>>>> parameters,
> > >>>>>>>>>>>> the
> > >>>>>>>>>>>>>> syntax is
> > >>>>>>>>>>>>>>>>>>>> very
> > >>>>>>>>>>>>>>>>>>>>>> much
> > >>>>>>>>>>>>>>>>>>>>>>>> like the DDL definition
> > >>>>>>>>>>>>>>>>>>>>>>>>> • It’s scope is very clear,
> > >>> right on
> > >>>>>> the
> > >>>>>>>> table
> > >>>>>>>>>>> it
> > >>>>>>>>>>>>>> attathed
> > >>>>>>>>>>>>>>>>>>>>>>>>> • It does not affect the
> > >> table
> > >>>>>> schema,
> > >>>>>>>> which
> > >>>>>>>>>>>> means
> > >>>>>>>>>>>>>> in order to
> > >>>>>>>>>>>>>>>>>>>>>> specify
> > >>>>>>>>>>>>>>>>>>>>>>>> the offset, there is no need to
> > >>> define
> > >>>>>> an
> > >>>>>>>> offset
> > >>>>>>>>>>>>>> column which is
> > >>>>>>>>>>>>>>>>>>>>> weird
> > >>>>>>>>>>>>>>>>>>>>>>>> actually, offset should never
> > >> be
> > >>> a
> > >>>>>> column,
> > >>>>>>>> it’s
> > >>>>>>>>>>>> more
> > >>>>>>>>>>>>>> like a
> > >>>>>>>>>>>>>>>>>>>> metadata
> > >>>>>>>>>>>>>>>>>>>>>> or a
> > >>>>>>>>>>>>>>>>>>>>>>>> start option.
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> So in total, FLIP-110 uses
> > >> the
> > >>> offset
> > >>>>>>>> more
> > >>>>>>>>>>> like a
> > >>>>>>>>>>>>>> Hive partition
> > >>>>>>>>>>>>>>>>>>>>>> prune,
> > >>>>>>>>>>>>>>>>>>>>>>>> we can do that if we have an
> > >>> offset
> > >>>>>>>> column, but
> > >>>>>>>>>>>> most
> > >>>>>>>>>>>>>> of the case we
> > >>>>>>>>>>>>>>>>>>>>> do
> > >>>>>>>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>>>>>> define that, so there is
> > >>> actually no
> > >>>>>>>> conflict or
> > >>>>>>>>>>>>>> overlap.
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>>>> Danny Chan
> > >>>>>>>>>>>>>>>>>>>>>>>>> 在 2020年3月10日 +0800
> > >> PM4:28,Timo
> > >>>>>> Walther <
> > >>>>>>>>>>>>>> twal...@apache.org>,写道:
> > >>>>>>>>>>>>>>>>>>>>>>>>>> Hi Danny,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> shouldn't FLIP-110[1] solve
> > >>> most
> > >>>>>> of the
> > >>>>>>>>>>>> problems
> > >>>>>>>>>>>>>> we have around
> > >>>>>>>>>>>>>>>>>>>>>>> defining
> > >>>>>>>>>>>>>>>>>>>>>>>>>> table properties more
> > >>> dynamically
> > >>>>>>>> without
> > >>>>>>>>>>>> manual
> > >>>>>>>>>>>>>> schema work?
> > >>>>>>>>>>>>>>>>>>>> Also
> > >>>>>>>>>>>>>>>>>>>>>>>>>> offset definition is easier
> > >>> with
> > >>>>>> such a
> > >>>>>>>>>>> syntax.
> > >>>>>>>>>>>>>> They must not be
> > >>>>>>>>>>>>>>>>>>>>>>> defined
> > >>>>>>>>>>>>>>>>>>>>>>>>>> in catalog but could be
> > >>> temporary
> > >>>>>>>> tables that
> > >>>>>>>>>>>>>> extend from the
> > >>>>>>>>>>>>>>>>>>>>>> original
> > >>>>>>>>>>>>>>>>>>>>>>>>>> table.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> In general, we should aim
> > >> to
> > >>> keep
> > >>>>>> the
> > >>>>>>>> syntax
> > >>>>>>>>>>>>>> concise and don't
> > >>>>>>>>>>>>>>>>>>>>>> provide
> > >>>>>>>>>>>>>>>>>>>>>>>>>> too many ways of doing the
> > >>> same
> > >>>>>> thing.
> > >>>>>>>> Hints
> > >>>>>>>>>>>>>> should give "hints"
> > >>>>>>>>>>>>>>>>>>>>> but
> > >>>>>>>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>>>>>>>> affect the actual produced
> > >>> result.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> Some connector properties
> > >>> might
> > >>>>>> also
> > >>>>>>>> change
> > >>>>>>>>>>> the
> > >>>>>>>>>>>>>> plan or schema
> > >>>>>>>>>>>>>>>>>>>> in
> > >>>>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>>>> future. E.g. they might
> > >> also
> > >>> define
> > >>>>>>>> whether a
> > >>>>>>>>>>>>>> table source
> > >>>>>>>>>>>>>>>>>>>>> supports
> > >>>>>>>>>>>>>>>>>>>>>>>>>> certain push-downs (e.g.
> > >>> predicate
> > >>>>>>>>>>> push-down).
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> Dawid is currently working
> > >> a
> > >>> draft
> > >>>>>>>> that might
> > >>>>>>>>>>>>>> makes it possible
> > >>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>>>> expose a Kafka offset via
> > >> the
> > >>>>>> schema
> > >>>>>>>> such
> > >>>>>>>>>>> that
> > >>>>>>>>>>>>>> `SELECT * FROM
> > >>>>>>>>>>>>>>>>>>>>> Topic
> > >>>>>>>>>>>>>>>>>>>>>>>>>> WHERE offset > 10` would
> > >>> become
> > >>>>>>>> possible and
> > >>>>>>>>>>>>> could
> > >>>>>>>>>>>>>> be pushed
> > >>>>>>>>>>>>>>>>>>>> down.
> > >>>>>>>>>>>>>>>>>>>>>> But
> > >>>>>>>>>>>>>>>>>>>>>>>>>> this is of course, not
> > >>> planned
> > >>>>>>>> initially.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> Regards,
> > >>>>>>>>>>>>>>>>>>>>>>>>>> Timo
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> [1]
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>
> > >>>>>>
> > >>>
> > >>
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-110%3A+Support+LIKE+clause+in+CREATE+TABLE
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> On 10.03.20 08:34, Danny
> > >> Chan
> > >>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks Wenlong ~
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> For PROPERTIES Hint Error
> > >>>>>> handling
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> Actually we have no way
> > >> to
> > >>>>>> figure out
> > >>>>>>>>>>>> whether a
> > >>>>>>>>>>>>>> error prone
> > >>>>>>>>>>>>>>>>>>>> hint
> > >>>>>>>>>>>>>>>>>>>>>> is a
> > >>>>>>>>>>>>>>>>>>>>>>>> PROPERTIES hint, for example,
> > >> if
> > >>> use
> > >>>>>>>> writes a
> > >>>>>>>>>>> hint
> > >>>>>>>>>>>>> like
> > >>>>>>>>>>>>>>>>>>>> ‘PROPERTIAS’,
> > >>>>>>>>>>>>>>>>>>>>>> we
> > >>>>>>>>>>>>>>>>>>>>>>> do
> > >>>>>>>>>>>>>>>>>>>>>>>> not know if this hint is a
> > >>> PROPERTIES
> > >>>>>>>> hint, what
> > >>>>>>>>>>> we
> > >>>>>>>>>>>>>> know is that
> > >>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>> hint
> > >>>>>>>>>>>>>>>>>>>>>>>> name was not registered in our
> > >>> Flink.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> If the user writes the
> > >>> hint name
> > >>>>>>>> correctly
> > >>>>>>>>>>>>> (i.e.
> > >>>>>>>>>>>>>> PROPERTIES),
> > >>>>>>>>>>>>>>>>>>>> we
> > >>>>>>>>>>>>>>>>>>>>>> did
> > >>>>>>>>>>>>>>>>>>>>>>>> can enforce the validation of
> > >>> the hint
> > >>>>>>>> options
> > >>>>>>>>>>>> though
> > >>>>>>>>>>>>>> the pluggable
> > >>>>>>>>>>>>>>>>>>>>>>>> HintOptionChecker.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> For PROPERTIES Hint
> > >> Option
> > >>> Format
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> For a key value style
> > >> hint
> > >>>>>> option,
> > >>>>>>>> the key
> > >>>>>>>>>>>> can
> > >>>>>>>>>>>>>> be either a
> > >>>>>>>>>>>>>>>>>>>> simple
> > >>>>>>>>>>>>>>>>>>>>>>>> identifier or a string literal,
> > >>> which
> > >>>>>>>> means that
> > >>>>>>>>>>>> it’s
> > >>>>>>>>>>>>>> compatible
> > >>>>>>>>>>>>>>>>>>>> with
> > >>>>>>>>>>>>>>>>>>>>>> our
> > >>>>>>>>>>>>>>>>>>>>>>>> DDL syntax. We support simple
> > >>>>>> identifier
> > >>>>>>>> because
> > >>>>>>>>>>>> many
> > >>>>>>>>>>>>>> other hints
> > >>>>>>>>>>>>>>>>>>>> do
> > >>>>>>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>>>>>> have the component complex keys
> > >>> like
> > >>>>>> the
> > >>>>>>>> table
> > >>>>>>>>>>>>>> properties, and we
> > >>>>>>>>>>>>>>>>>>>>> want
> > >>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>> unify the parse block.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> Danny Chan
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> 在 2020年3月10日 +0800
> > >>>>>>>> PM3:19,wenlong.lwl <
> > >>>>>>>>>>>>>> wenlong88....@gmail.com
> > >>>>>>>>>>>>>>>>>>>>>>> ,写道:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Danny, thanks for
> > >> the
> > >>>>>> proposal.
> > >>>>>>>> +1 for
> > >>>>>>>>>>>>>> adding table hints,
> > >>>>>>>>>>>>>>>>>>>> it
> > >>>>>>>>>>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>>>>>>>>> really
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> a necessary feature for
> > >>> flink
> > >>>>>> sql
> > >>>>>>>> to
> > >>>>>>>>>>>>> integrate
> > >>>>>>>>>>>>>> with a catalog.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> For error handling, I
> > >>> think it
> > >>>>>>>> would be
> > >>>>>>>>>>>> more
> > >>>>>>>>>>>>>> natural to throw
> > >>>>>>>>>>>>>>>>>>>> an
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> exception when error
> > >>> table hint
> > >>>>>>>> provided,
> > >>>>>>>>>>>>>> because the
> > >>>>>>>>>>>>>>>>>>>> properties
> > >>>>>>>>>>>>>>>>>>>>>> in
> > >>>>>>>>>>>>>>>>>>>>>>>> hint
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> will be merged and used
> > >>> to find
> > >>>>>>>> the table
> > >>>>>>>>>>>>>> factory which would
> > >>>>>>>>>>>>>>>>>>>>>> cause
> > >>>>>>>>>>>>>>>>>>>>>>> an
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> exception when error
> > >>> properties
> > >>>>>>>> provided,
> > >>>>>>>>>>>>>> right? On the other
> > >>>>>>>>>>>>>>>>>>>>>> hand,
> > >>>>>>>>>>>>>>>>>>>>>>>> unlike
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> other hints which just
> > >>> affect
> > >>>>>> the
> > >>>>>>>> way to
> > >>>>>>>>>>>>>> execute the query,
> > >>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>> property
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> table hint actually
> > >>> affects the
> > >>>>>>>> result of
> > >>>>>>>>>>>> the
> > >>>>>>>>>>>>>> query, we should
> > >>>>>>>>>>>>>>>>>>>>>> never
> > >>>>>>>>>>>>>>>>>>>>>>>> ignore
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> the given property
> > >> hints.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> For the format of
> > >>> property
> > >>>>>> hints,
> > >>>>>>>>>>>> currently,
> > >>>>>>>>>>>>>> in sql client, we
> > >>>>>>>>>>>>>>>>>>>>>>> accept
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> properties in format of
> > >>> string
> > >>>>>>>> only in
> > >>>>>>>>>>> DDL:
> > >>>>>>>>>>>>>>>>>>>>>>> 'connector.type'='kafka',
> > >>>>>>>>>>>>>>>>>>>>>>>> I
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> think the format of
> > >>> properties
> > >>>>>> in
> > >>>>>>>> hint
> > >>>>>>>>>>>> should
> > >>>>>>>>>>>>>> be the same as
> > >>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>> format we
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> defined in ddl. What do
> > >>> you
> > >>>>>> think?
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> Bests,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> Wenlong Lyu
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>> On Tue, 10 Mar 2020 at
> > >>> 14:22,
> > >>>>>>>> Danny Chan
> > >>>>>>>>>>> <
> > >>>>>>>>>>>>>>>>>>>> yuzhao....@gmail.com>
> > >>>>>>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> To Weike: About the
> > >>> Error
> > >>>>>> Handing
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> To be consistent with
> > >>> other
> > >>>>>> SQL
> > >>>>>>>>>>> vendors,
> > >>>>>>>>>>>>> the
> > >>>>>>>>>>>>>> default is to
> > >>>>>>>>>>>>>>>>>>>> log
> > >>>>>>>>>>>>>>>>>>>>>>>> warnings
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> and if there is any
> > >>> error
> > >>>>>>>> (invalid hint
> > >>>>>>>>>>>>> name
> > >>>>>>>>>>>>>> or options), the
> > >>>>>>>>>>>>>>>>>>>>>> hint
> > >>>>>>>>>>>>>>>>>>>>>>>> is just
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> ignored. I have
> > >> already
> > >>>>>>>> addressed in
> > >>>>>>>>>>> the
> > >>>>>>>>>>>>>> wiki.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> To Timo: About the
> > >>> PROPERTIES
> > >>>>>>>> Table
> > >>>>>>>>>>> Hint
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> • The properties
> > >> hints
> > >>> is
> > >>>>>> also
> > >>>>>>>>>>> optional,
> > >>>>>>>>>>>>>> user can pass in an
> > >>>>>>>>>>>>>>>>>>>>>> option
> > >>>>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> override the table
> > >>> properties
> > >>>>>>>> but this
> > >>>>>>>>>>>> does
> > >>>>>>>>>>>>>> not mean it is
> > >>>>>>>>>>>>>>>>>>>>>>> required.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> • They should not
> > >>> include
> > >>>>>>>> semantics:
> > >>>>>>>>>>> does
> > >>>>>>>>>>>>>> the properties
> > >>>>>>>>>>>>>>>>>>>> belong
> > >>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> semantic ? I don't
> > >>> think so,
> > >>>>>> the
> > >>>>>>>> plan
> > >>>>>>>>>>>> does
> > >>>>>>>>>>>>>> not change right ?
> > >>>>>>>>>>>>>>>>>>>>> The
> > >>>>>>>>>>>>>>>>>>>>>>>> result
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> set may be affected,
> > >>> but
> > >>>>>> there
> > >>>>>>>> are
> > >>>>>>>>>>>> already
> > >>>>>>>>>>>>>> some hints do so,
> > >>>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>>>> example,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> MS-SQL MAXRECURSION
> > >> and
> > >>>>>> SNAPSHOT
> > >>>>>>>> hint
> > >>>>>>>>>>> [1]
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> • `SELECT * FROM
> > >> t(k=v,
> > >>>>>> k=v)`:
> > >>>>>>>> this
> > >>>>>>>>>>>> grammar
> > >>>>>>>>>>>>>> breaks the SQL
> > >>>>>>>>>>>>>>>>>>>>>> standard
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> compared to the hints
> > >>>>>> way(which
> > >>>>>>>> is
> > >>>>>>>>>>>> included
> > >>>>>>>>>>>>>> in comments)
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> • I actually didn't
> > >>> found any
> > >>>>>>>> vendors
> > >>>>>>>>>>> to
> > >>>>>>>>>>>>>> support such
> > >>>>>>>>>>>>>>>>>>>> grammar,
> > >>>>>>>>>>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>>>>>>>>> there
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> is no way to override
> > >>> table
> > >>>>>> level
> > >>>>>>>>>>>>> properties
> > >>>>>>>>>>>>>> dynamically. For
> > >>>>>>>>>>>>>>>>>>>>>>> normal
> > >>>>>>>>>>>>>>>>>>>>>>>> RDBMS,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> I think there are no
> > >>> requests
> > >>>>>>>> for such
> > >>>>>>>>>>>>>> dynamic parameters
> > >>>>>>>>>>>>>>>>>>>>> because
> > >>>>>>>>>>>>>>>>>>>>>>>> all the
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> table have the same
> > >>> storage
> > >>>>>> and
> > >>>>>>>>>>>> computation
> > >>>>>>>>>>>>>> and they are
> > >>>>>>>>>>>>>>>>>>>> almost
> > >>>>>>>>>>>>>>>>>>>>>> all
> > >>>>>>>>>>>>>>>>>>>>>>>> batch
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> tables.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> • While Flink as a
> > >>>>>> computation
> > >>>>>>>> engine
> > >>>>>>>>>>> has
> > >>>>>>>>>>>>>> many connectors,
> > >>>>>>>>>>>>>>>>>>>>>>>> especially for
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> some message queue
> > >> like
> > >>>>>> Kafka,
> > >>>>>>>> we would
> > >>>>>>>>>>>>> have
> > >>>>>>>>>>>>>> a start_offset
> > >>>>>>>>>>>>>>>>>>>>> which
> > >>>>>>>>>>>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> different each time
> > >> we
> > >>> start
> > >>>>>> the
> > >>>>>>>> query,
> > >>>>>>>>>>>>> such
> > >>>>>>>>>>>>>> parameters can
> > >>>>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> persisted to catalog,
> > >>> because
> > >>>>>>>> it’s not
> > >>>>>>>>>>>>>> static, this is
> > >>>>>>>>>>>>>>>>>>>> actually
> > >>>>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> background we propose
> > >>> the
> > >>>>>> table
> > >>>>>>>> hints
> > >>>>>>>>>>> to
> > >>>>>>>>>>>>>> indicate such
> > >>>>>>>>>>>>>>>>>>>>> properties
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> dynamically.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> To Jark and Jinsong:
> > >> I
> > >>> have
> > >>>>>>>> removed the
> > >>>>>>>>>>>>>> query hints part and
> > >>>>>>>>>>>>>>>>>>>>>> change
> > >>>>>>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> title.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> [1]
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>
> > >>>>>>
> > >>>
> > >>
> >
> https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-query?view=sql-server-ver15
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Danny Chan
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 在 2020年3月9日 +0800
> > >>> PM5:46,Timo
> > >>>>>>>> Walther <
> > >>>>>>>>>>>>>> twal...@apache.org
> > >>>>>>>>>>>>>>>>>>>>> ,写道:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Danny,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> thanks for the
> > >>> proposal. I
> > >>>>>>>> agree with
> > >>>>>>>>>>>>> Jark
> > >>>>>>>>>>>>>> and Jingsong.
> > >>>>>>>>>>>>>>>>>>>>> Planner
> > >>>>>>>>>>>>>>>>>>>>>>>> hints
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> and table hints are
> > >>>>>> orthogonal
> > >>>>>>>> topics
> > >>>>>>>>>>>>> that
> > >>>>>>>>>>>>>> should be
> > >>>>>>>>>>>>>>>>>>>> discussed
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> separately.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I share Jingsong's
> > >>> opinion
> > >>>>>>>> that we
> > >>>>>>>>>>>> should
> > >>>>>>>>>>>>>> not use planner
> > >>>>>>>>>>>>>>>>>>>>> hints
> > >>>>>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> passing connector
> > >>>>>> properties.
> > >>>>>>>> Planner
> > >>>>>>>>>>>>>> hints should be
> > >>>>>>>>>>>>>>>>>>>> optional
> > >>>>>>>>>>>>>>>>>>>>>> at
> > >>>>>>>>>>>>>>>>>>>>>>>> any
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> time. They should
> > >> not
> > >>>>>> include
> > >>>>>>>>>>> semantics
> > >>>>>>>>>>>>>> but only affect
> > >>>>>>>>>>>>>>>>>>>>>> execution
> > >>>>>>>>>>>>>>>>>>>>>>>> time.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Connector
> > >> properties
> > >>> are an
> > >>>>>>>> important
> > >>>>>>>>>>>>> part
> > >>>>>>>>>>>>>> of the query
> > >>>>>>>>>>>>>>>>>>>>> itself.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Have you thought
> > >>> about
> > >>>>>> options
> > >>>>>>>> such
> > >>>>>>>>>>> as
> > >>>>>>>>>>>>>> `SELECT * FROM t(k=v,
> > >>>>>>>>>>>>>>>>>>>>>>> k=v)`?
> > >>>>>>>>>>>>>>>>>>>>>>>> How
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> are other vendors
> > >>> deal with
> > >>>>>>>> this
> > >>>>>>>>>>>> problem?
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Regards,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Timo
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On 09.03.20 10:37,
> > >>>>>> Jingsong Li
> > >>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Danny, +1 for
> > >>> table
> > >>>>>> hints,
> > >>>>>>>>>>> thanks
> > >>>>>>>>>>>>> for
> > >>>>>>>>>>>>>> driving.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I took a look to
> > >>> FLIP,
> > >>>>>> most
> > >>>>>>>> of
> > >>>>>>>>>>>> content
> > >>>>>>>>>>>>>> are talking about
> > >>>>>>>>>>>>>>>>>>>>> query
> > >>>>>>>>>>>>>>>>>>>>>>>> hints.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> It is
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> hard to
> > >> discussion
> > >>> and
> > >>>>>>>> voting. So
> > >>>>>>>>>>> +1
> > >>>>>>>>>>>> to
> > >>>>>>>>>>>>>> split it as Jark
> > >>>>>>>>>>>>>>>>>>>>> said.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Another thing is
> > >>>>>>>> configuration that
> > >>>>>>>>>>>>>> suitable to config with
> > >>>>>>>>>>>>>>>>>>>>>> table
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> hints:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "connector.path"
> > >>> and
> > >>>>>>>>>>>> "connector.topic",
> > >>>>>>>>>>>>>> Are they really
> > >>>>>>>>>>>>>>>>>>>>>> suitable
> > >>>>>>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> table
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> hints? Looks
> > >> weird
> > >>> to me.
> > >>>>>>>> Because I
> > >>>>>>>>>>>>>> think these properties
> > >>>>>>>>>>>>>>>>>>>>> are
> > >>>>>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> core of
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> table.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Jingsong Lee
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Mon, Mar 9,
> > >>> 2020 at
> > >>>>>> 5:30
> > >>>>>>>> PM Jark
> > >>>>>>>>>>>> Wu
> > >>>>>>>>>>>>> <
> > >>>>>>>>>>>>>> imj...@gmail.com>
> > >>>>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks Danny
> > >> for
> > >>>>>> starting
> > >>>>>>>> the
> > >>>>>>>>>>>>>> discussion.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +1 for this
> > >>> feature.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> If we just
> > >> focus
> > >>> on the
> > >>>>>>>> table
> > >>>>>>>>>>> hints
> > >>>>>>>>>>>>>> not the query hints in
> > >>>>>>>>>>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> release,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> could you split
> > >>> the
> > >>>>>> FLIP
> > >>>>>>>> into two
> > >>>>>>>>>>>>>> FLIPs?
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Because it's
> > >>> hard to
> > >>>>>> vote
> > >>>>>>>> on
> > >>>>>>>>>>>> partial
> > >>>>>>>>>>>>>> part of a FLIP. You
> > >>>>>>>>>>>>>>>>>>>> can
> > >>>>>>>>>>>>>>>>>>>>>>> keep
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> the table
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> hints proposal
> > >> in
> > >>>>>> FLIP-113
> > >>>>>>>> and
> > >>>>>>>>>>> move
> > >>>>>>>>>>>>>> query hints into
> > >>>>>>>>>>>>>>>>>>>> another
> > >>>>>>>>>>>>>>>>>>>>>>> FLIP.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> So that we can
> > >>> focuse
> > >>>>>> on
> > >>>>>>>> the
> > >>>>>>>>>>> table
> > >>>>>>>>>>>>>> hints in the FLIP.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Jark
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Mon, 9 Mar
> > >>> 2020 at
> > >>>>>>>> 17:14,
> > >>>>>>>>>>> DONG,
> > >>>>>>>>>>>>>> Weike <
> > >>>>>>>>>>>>>>>>>>>>>>> kyled...@connect.hku.hk
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Danny,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> This is a
> > >> nice
> > >>>>>> feature,
> > >>>>>>>> +1.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> One thing I
> > >> am
> > >>>>>>>> interested in
> > >>>>>>>>>>> but
> > >>>>>>>>>>>>> not
> > >>>>>>>>>>>>>> mentioned in the
> > >>>>>>>>>>>>>>>>>>>>>> proposal
> > >>>>>>>>>>>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> error
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> handling, as
> > >>> it is
> > >>>>>> quite
> > >>>>>>>> common
> > >>>>>>>>>>>> for
> > >>>>>>>>>>>>>> users to write
> > >>>>>>>>>>>>>>>>>>>>>>> inappropriate
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> hints in
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SQL code, if
> > >>> illegal
> > >>>>>> or
> > >>>>>>>> "bad"
> > >>>>>>>>>>>> hints
> > >>>>>>>>>>>>>> are given, would the
> > >>>>>>>>>>>>>>>>>>>>>> system
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> simply
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ignore them
> > >> or
> > >>> throw
> > >>>>>>>>>>> exceptions?
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks : )
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Weike
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Mon, Mar
> > >> 9,
> > >>> 2020
> > >>>>>> at
> > >>>>>>>> 5:02 PM
> > >>>>>>>>>>>>> Danny
> > >>>>>>>>>>>>>> Chan <
> > >>>>>>>>>>>>>>>>>>>>>>> yuzhao....@gmail.com>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Note:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> we only
> > >> plan
> > >>> to
> > >>>>>>>> support table
> > >>>>>>>>>>>>>> hints in Flink release
> > >>>>>>>>>>>>>>>>>>>> 1.11,
> > >>>>>>>>>>>>>>>>>>>>>> so
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> please
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> focus
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> mainly on
> > >>> the table
> > >>>>>>>> hints
> > >>>>>>>>>>> part
> > >>>>>>>>>>>>> and
> > >>>>>>>>>>>>>> just ignore the
> > >>>>>>>>>>>>>>>>>>>> planner
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> hints, sorry
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> that
> > >> mistake
> > >>> ~
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Danny Chan
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 在 2020年3月9日
> > >>> +0800
> > >>>>>>>>>>> PM4:36,Danny
> > >>>>>>>>>>>>>> Chan <
> > >>>>>>>>>>>>>>>>>>>> yuzhao....@gmail.com
> > >>>>>>>>>>>>>>>>>>>>>>>> ,写道:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi,
> > >>> fellows ~
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I would
> > >>> like to
> > >>>>>>>> propose the
> > >>>>>>>>>>>>>> supports for SQL hints for
> > >>>>>>>>>>>>>>>>>>>>> our
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Flink SQL.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> We would
> > >>> support
> > >>>>>>>> hints
> > >>>>>>>>>>> syntax
> > >>>>>>>>>>>>> as
> > >>>>>>>>>>>>>> following:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> select
> > >> /*+
> > >>>>>>>> NO_HASH_JOIN,
> > >>>>>>>>>>>>>> RESOURCE(mem='128mb',
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> parallelism='24') */
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> from
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> emp /*+
> > >>>>>> INDEX(idx1,
> > >>>>>>>> idx2)
> > >>>>>>>>>>> */
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> join
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dept /*+
> > >>>>>>>>>>> PROPERTIES(k1='v1',
> > >>>>>>>>>>>>>> k2='v2') */
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> on
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >> emp.deptno
> > >>> =
> > >>>>>>>> dept.deptno
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Basically
> > >>> we
> > >>>>>> would
> > >>>>>>>> support
> > >>>>>>>>>>>> both
> > >>>>>>>>>>>>>> query hints(after the
> > >>>>>>>>>>>>>>>>>>>>>> SELECT
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> keyword)
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> and table
> > >>>>>> hints(after
> > >>>>>>>> the
> > >>>>>>>>>>>>>> referenced table name), for
> > >>>>>>>>>>>>>>>>>>>>> 1.11,
> > >>>>>>>>>>>>>>>>>>>>>> we
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> plan to
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> only
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> support
> > >>> table hints
> > >>>>>>>> with a
> > >>>>>>>>>>> hint
> > >>>>>>>>>>>>>> probably named
> > >>>>>>>>>>>>>>>>>>>> PROPERTIES:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >> table_name
> > >>> /*+
> > >>>>>>>>>>>>>> PROPERTIES(k1='v1', k2='v2') *+/
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I am
> > >>> looking
> > >>>>>> forward
> > >>>>>>>> to
> > >>>>>>>>>>> your
> > >>>>>>>>>>>>>> comments.
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> You can
> > >>> access
> > >>>>>> the
> > >>>>>>>> FLIP
> > >>>>>>>>>>> here:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>
> > >>>>>>
> > >>>
> > >>
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-113%3A+SQL+and+Planner+Hints
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Danny
> > >> Chan
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>
> > >>>>>>
> > >>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>
> > >
> >
> >
>

Reply via email to