Hi Jark, A minor suggestion. Would it be ok if we changed the config name to ` table.optimizer.query-options.enabled`? This is inline with other existing configurations such as:
table.dynamic-table-options.enabled table.optimizer.distinct-agg.split.enabled table.optimizer.dynamic-filtering.enabled On Wed, Sep 27, 2023 at 9:57 AM Bonnie Arogyam Varghese < bvargh...@confluent.io> wrote: > Hi Martjin, > Yes, the suggestion for the configuration name made by Jark sounds good. > > Also, thanks to everyone who participated in this discussion. > > On Tue, Sep 19, 2023 at 2:40 PM Martijn Visser <martijnvis...@apache.org> > wrote: > >> Hey Jark, >> >> Sounds fine to me. >> @Bonnie does that also work for you? >> >> Best regards, >> >> Martijn >> >> On Fri, Sep 15, 2023 at 1:28 PM Jark Wu <imj...@gmail.com> wrote: >> > >> > Hi Martijn, >> > >> > Thanks for the investigation. I found the blog[1] shows a use case >> > that they use "OPTIMIZER_IGNORE_HINTS" to check if embedded >> > hints can be removed in legacy code. I think this is a useful tool to >> > improve queries without complex hints strewn throughout the code. >> > Therefore, I'm fine to support this now. >> > >> > Maybe we can follow Oracle to name the config >> > "table.optimizer.ignore-query-hints=false"? >> > >> > Best, >> > Jark >> > >> > [1]: https://dbaora.com/optimizer_ignore_hints-oracle-database-18c/ >> > >> > On Fri, 15 Sept 2023 at 17:57, Martijn Visser <martijnvis...@apache.org >> > >> > wrote: >> > >> > > Hi Jark, >> > > >> > > Oracle has/had a generic "OPTIMIZER_IGNORE_HINTS" [1]. It looks like >> MSSQL >> > > has configuration options to disable specific hints [2] instead of a >> > > generic solution. >> > > >> > > [1] >> > > >> > > >> https://docs.oracle.com/en/database/oracle/oracle-database/23/refrn/OPTIMIZER_IGNORE_HINTS.html#GUID-D62CA6D8-D0D8-4A20-93EA-EEB4B3144347 >> > > [2] >> > > >> > > >> https://www.mssqltips.com/sqlservertip/4175/disabling-sql-server-optimizer-rules-with-queryruleoff/ >> > > >> > > Best regards, >> > > >> > > Martijn >> > > >> > > On Fri, Sep 15, 2023 at 10:53 AM Jark Wu <imj...@gmail.com> wrote: >> > > >> > > > Hi Martijn, >> > > > >> > > > I can understand that. >> > > > Is there any database/system that supports disabling/enabling query >> hints >> > > > with a configuration? This might help us to understand the use >> case, >> > > > and follow the approach. >> > > > >> > > > Best, >> > > > Jark >> > > > >> > > > On Fri, 15 Sept 2023 at 15:34, Martijn Visser < >> martijnvis...@apache.org> >> > > > wrote: >> > > > >> > > > > Hi all, >> > > > > >> > > > > I think Jark has a valid point with: >> > > > > >> > > > > > Does this mean that in the future we might add an option to >> disable >> > > > each >> > > > > feature? >> > > > > >> > > > > I don't think that's a reasonable outcome indeed, but we are >> currently >> > > > in a >> > > > > situation where we don't have clear guidelines on when to add a >> > > > > configuration option, and when not to add one. From a platform >> > > > perspective, >> > > > > there might not be an imminent or obvious security implication, >> but you >> > > > > want to minimize a potential attack surface. >> > > > > >> > > > > > We should try to remove the unnecessary configuration from the >> list >> > > in >> > > > > Flink 2.0. >> > > > > >> > > > > I agree with that too. >> > > > > >> > > > > With these things in mind, my proposal would be the following: >> > > > > >> > > > > * Add a configuration option for this situation, given that we >> don't >> > > have >> > > > > clear guidelines on when to add/not add a new config option. >> > > > > * Since we want to overhaul the configuration layer anyway in >> Flink >> > > 2.0, >> > > > we >> > > > > clean-up the configuration list by not having an option for each >> item, >> > > > but >> > > > > either a generic option that allows you to disable one or more >> features >> > > > (by >> > > > > providing a list as the configuration option), or we already >> bundle >> > > > > multiple configuration options into a specific category, e.g. so >> that >> > > you >> > > > > can have a default Flink without any hardening, a read-only >> Flink, a >> > > > > fully-hardened Flink etc) >> > > > > >> > > > > Best regards, >> > > > > >> > > > > Martijn >> > > > > >> > > > > >> > > > > On Mon, Sep 11, 2023 at 4:51 PM Jim Hughes >> > > <jhug...@confluent.io.invalid >> > > > > >> > > > > wrote: >> > > > > >> > > > > > Hi Jing and Jark! >> > > > > > >> > > > > > I can definitely appreciate the desire to have fewer >> configurations. >> > > > > > >> > > > > > Do you have a suggested alternative for platform providers to >> limit >> > > or >> > > > > > restrict the hints that Bonnie is talking about? >> > > > > > >> > > > > > As one possibility, maybe one configuration could be set to >> control >> > > all >> > > > > > hints. >> > > > > > >> > > > > > Cheers, >> > > > > > >> > > > > > Jim >> > > > > > >> > > > > > On Sat, Sep 9, 2023 at 6:16 AM Jark Wu <imj...@gmail.com> >> wrote: >> > > > > > >> > > > > > > I agree with Jing, >> > > > > > > >> > > > > > > My biggest concern is this makes the boundary of adding an >> option >> > > > very >> > > > > > > unclear. >> > > > > > > It's not a strong reason to add a config just because of it >> doesn't >> > > > > > affect >> > > > > > > existing >> > > > > > > users. Does this mean that in the future we might add an >> option to >> > > > > > disable >> > > > > > > each feature? >> > > > > > > >> > > > > > > Flink already has a very long list of configurations [1][2] >> and >> > > this >> > > > is >> > > > > > > very scary >> > > > > > > and not easy to use. We should try to remove the unnecessary >> > > > > > configuration >> > > > > > > from >> > > > > > > the list in Flink 2.0. However, from my perspective, adding >> this >> > > > option >> > > > > > > makes us far >> > > > > > > away from this direction. >> > > > > > > >> > > > > > > Best, >> > > > > > > Jark >> > > > > > > >> > > > > > > [1] >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/config/ >> > > > > > > [2] >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/config/ >> > > > > > > >> > > > > > > On Sat, 9 Sept 2023 at 17:33, Jing Ge >> <j...@ververica.com.invalid> >> > > > > > wrote: >> > > > > > > >> > > > > > > > Hi, >> > > > > > > > >> > > > > > > > Thanks for bringing this to our attention. At the first >> glance, >> > > it >> > > > > > looks >> > > > > > > > reasonable to offer a new configuration to enable/disable >> SQL >> > > hints >> > > > > > > > globally. However, IMHO, it is not the right timing to do >> it now, >> > > > > > because >> > > > > > > > we should not only think as platform providers but also as >> end >> > > > > > users(the >> > > > > > > > number of end users are much bigger than platform >> providers): >> > > > > > > > >> > > > > > > > 1. Users don't need it because users have the choice to use >> hints >> > > > or >> > > > > > not, >> > > > > > > > just like Jark pointed out. With this configuration, there >> will >> > > be >> > > > a >> > > > > > > fight >> > > > > > > > between platform providers and users which will cause more >> > > > confusions >> > > > > > and >> > > > > > > > conflicts. And users will probably win, IMHO, because they >> are >> > > the >> > > > > end >> > > > > > > > customers that use Flink to create business values. >> > > > > > > > 2. SQL hints could be considered as an additional feature >> for >> > > users >> > > > > to >> > > > > > > > control, to optimize the execution plan without touching the >> > > > internal >> > > > > > > > logic, i.e. features for advanced use cases and i.e. don't >> use it >> > > > if >> > > > > > you >> > > > > > > > don't understand it. >> > > > > > > > 3. Before the system is smart enough to take over(where we >> are >> > > now, >> > > > > > > > fortunately and unfortunately :-))), there should be a way >> for >> > > > users >> > > > > to >> > > > > > > do >> > > > > > > > such tuning, even if it is a temporary phase from a >> > > > > > > > long-term's perspective, i.e. just because it is a temporary >> > > > > solution, >> > > > > > > does >> > > > > > > > not mean it is not necessary for now. >> > > > > > > > 4. What if users write wrong hints? Well, the code review >> process >> > > > is >> > > > > > > > recommended. Someone who truly understands hints should >> double >> > > > check >> > > > > it >> > > > > > > > before hints are merged to the master or submitted to the >> > > > production >> > > > > > env. >> > > > > > > > Just like a common software development process. >> > > > > > > > >> > > > > > > > Just my two cents. >> > > > > > > > >> > > > > > > > Best regards, >> > > > > > > > Jing >> > > > > > > > >> > > > > > > > On Thu, Sep 7, 2023 at 10:02 PM Bonnie Arogyam Varghese >> > > > > > > > <bvargh...@confluent.io.invalid> wrote: >> > > > > > > > >> > > > > > > > > Hi Liu, >> > > > > > > > > The default will be set to enabled which is the current >> > > > behavior. >> > > > > > The >> > > > > > > > > option will allow users/platform providers to disable it >> if >> > > they >> > > > > want >> > > > > > > to. >> > > > > > > > > >> > > > > > > > > On Wed, Sep 6, 2023 at 6:39 PM liu ron < >> ron9....@gmail.com> >> > > > wrote: >> > > > > > > > > >> > > > > > > > > > Hi, Boonie >> > > > > > > > > > >> > > > > > > > > > I'm with Jark on why disable hint is needed if it won't >> > > affect >> > > > > > > > security. >> > > > > > > > > If >> > > > > > > > > > users don't need to use hint, then they won't care >> about it >> > > > and I >> > > > > > > don't >> > > > > > > > > > think it's going to be a nuisance. On top of that, >> Lookup >> > > Join >> > > > > Hint >> > > > > > > is >> > > > > > > > > very >> > > > > > > > > > useful for streaming jobs, and disabling the hint would >> > > result >> > > > in >> > > > > > > users >> > > > > > > > > not >> > > > > > > > > > being able to use it. >> > > > > > > > > > >> > > > > > > > > > Best, >> > > > > > > > > > Ron >> > > > > > > > > > >> > > > > > > > > > Bonnie Arogyam Varghese <bvargh...@confluent.io >> .invalid> >> > > > > > > 于2023年9月6日周三 >> > > > > > > > > > 23:52写道: >> > > > > > > > > > >> > > > > > > > > > > Hi Liu Ron, >> > > > > > > > > > > To answer your question, >> > > > > > > > > > > Security might not be the main reason for >> disabling this >> > > > > > option >> > > > > > > > but >> > > > > > > > > > > other arguments brought forward by Timo. Let me know >> if you >> > > > > have >> > > > > > > any >> > > > > > > > > > > further questions or concerns. >> > > > > > > > > > > >> > > > > > > > > > > On Tue, Sep 5, 2023 at 9:35 PM Bonnie Arogyam >> Varghese < >> > > > > > > > > > > bvargh...@confluent.io> wrote: >> > > > > > > > > > > >> > > > > > > > > > > > It looks like it will be nice to have a config to >> disable >> > > > > > hints. >> > > > > > > > Any >> > > > > > > > > > > other >> > > > > > > > > > > > thoughts/concerns before we can close this >> discussion? >> > > > > > > > > > > > >> > > > > > > > > > > > On Fri, Aug 18, 2023 at 7:43 AM Timo Walther < >> > > > > > twal...@apache.org >> > > > > > > > >> > > > > > > > > > wrote: >> > > > > > > > > > > > >> > > > > > > > > > > >> > lots of the streaming SQL syntax are extensions >> of >> > > SQL >> > > > > > > standard >> > > > > > > > > > > >> >> > > > > > > > > > > >> That is true. But hints are kind of a special case >> > > because >> > > > > > they >> > > > > > > > are >> > > > > > > > > > not >> > > > > > > > > > > >> even "part of Flink SQL" that's why they are >> written in >> > > a >> > > > > > > comment >> > > > > > > > > > > syntax. >> > > > > > > > > > > >> >> > > > > > > > > > > >> Anyway, I feel hints could be sometimes confusing >> for >> > > > users >> > > > > > > > because >> > > > > > > > > > most >> > > > > > > > > > > >> of them have no effect for streaming and long-term >> we >> > > > could >> > > > > > also >> > > > > > > > set >> > > > > > > > > > > >> some hints via the CompiledPlan. And if you have >> > > multiple >> > > > > > teams, >> > > > > > > > > > > >> non-skilled users should not play around with >> hints and >> > > > > leave >> > > > > > > the >> > > > > > > > > > > >> decision to the system that might become smarter >> over >> > > > time. >> > > > > > > > > > > >> >> > > > > > > > > > > >> Regards, >> > > > > > > > > > > >> Timo >> > > > > > > > > > > >> >> > > > > > > > > > > >> >> > > > > > > > > > > >> On 17.08.23 18:47, liu ron wrote: >> > > > > > > > > > > >> > Hi, Bonnie >> > > > > > > > > > > >> > >> > > > > > > > > > > >> >> Options hints could be a security concern since >> users >> > > > can >> > > > > > > > > override >> > > > > > > > > > > >> > settings. >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > I think this still doesn't answer my question >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > Best, >> > > > > > > > > > > >> > Ron >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > Jark Wu <imj...@gmail.com> 于2023年8月17日周四 >> 19:51写道: >> > > > > > > > > > > >> > >> > > > > > > > > > > >> >> Sorry, I still don't understand why we need to >> > > disable >> > > > > the >> > > > > > > > query >> > > > > > > > > > > hint. >> > > > > > > > > > > >> >> It doesn't have the security problems as options >> > > hint. >> > > > > > Bonnie >> > > > > > > > > said >> > > > > > > > > > it >> > > > > > > > > > > >> >> could affect performance, but that depends on >> users >> > > > using >> > > > > > it >> > > > > > > > > > > >> explicitly. >> > > > > > > > > > > >> >> If there is any performance problem, users can >> remove >> > > > the >> > > > > > > hint. >> > > > > > > > > > > >> >> >> > > > > > > > > > > >> >> If we want to disable query hint just because >> it's an >> > > > > > > extension >> > > > > > > > > to >> > > > > > > > > > > SQL >> > > > > > > > > > > >> >> standard. >> > > > > > > > > > > >> >> I'm afraid we have to introduce a bunch of >> > > > configuration, >> > > > > > > > because >> > > > > > > > > > > lots >> > > > > > > > > > > >> of >> > > > > > > > > > > >> >> the streaming SQL syntax are extensions of SQL >> > > > standard. >> > > > > > > > > > > >> >> >> > > > > > > > > > > >> >> Best, >> > > > > > > > > > > >> >> Jark >> > > > > > > > > > > >> >> >> > > > > > > > > > > >> >> On Thu, 17 Aug 2023 at 15:43, Timo Walther < >> > > > > > > twal...@apache.org >> > > > > > > > > >> > > > > > > > > > > wrote: >> > > > > > > > > > > >> >> >> > > > > > > > > > > >> >>> +1 for this proposal. >> > > > > > > > > > > >> >>> >> > > > > > > > > > > >> >>> Not every data team would like to enable >> hints. Also >> > > > > > because >> > > > > > > > > they >> > > > > > > > > > > are >> > > > > > > > > > > >> an >> > > > > > > > > > > >> >>> extension to the SQL standard. It might also >> be the >> > > > case >> > > > > > > that >> > > > > > > > > > custom >> > > > > > > > > > > >> >>> rules would be overwritten otherwise. Setting >> hints >> > > > > could >> > > > > > > also >> > > > > > > > > be >> > > > > > > > > > > the >> > > > > > > > > > > >> >>> exclusive task of a DevOp team. >> > > > > > > > > > > >> >>> >> > > > > > > > > > > >> >>> Regards, >> > > > > > > > > > > >> >>> Timo >> > > > > > > > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > > > > > > > >> >>> On 17.08.23 09:30, Konstantin Knauf wrote: >> > > > > > > > > > > >> >>>> Hi Bonnie, >> > > > > > > > > > > >> >>>> >> > > > > > > > > > > >> >>>> this makes sense to me, in particular, given >> that >> > > we >> > > > > > > already >> > > > > > > > > have >> > > > > > > > > > > >> this >> > > > > > > > > > > >> >>>> toggle for a different type of hints. >> > > > > > > > > > > >> >>>> >> > > > > > > > > > > >> >>>> Best, >> > > > > > > > > > > >> >>>> >> > > > > > > > > > > >> >>>> Konstantin >> > > > > > > > > > > >> >>>> >> > > > > > > > > > > >> >>>> Am Mi., 16. Aug. 2023 um 19:38 Uhr schrieb >> Bonnie >> > > > > Arogyam >> > > > > > > > > > Varghese >> > > > > > > > > > > >> >>>> <bvargh...@confluent.io.invalid>: >> > > > > > > > > > > >> >>>> >> > > > > > > > > > > >> >>>>> Hi Liu, >> > > > > > > > > > > >> >>>>> Options hints could be a security concern >> since >> > > > > users >> > > > > > > can >> > > > > > > > > > > >> override >> > > > > > > > > > > >> >>>>> settings. However, query hints specifically >> could >> > > > > affect >> > > > > > > > > > > >> performance. >> > > > > > > > > > > >> >>>>> Since we have a config to disable Options >> hint, >> > > I'm >> > > > > > > > suggesting >> > > > > > > > > > we >> > > > > > > > > > > >> also >> > > > > > > > > > > >> >>> have >> > > > > > > > > > > >> >>>>> a config to disable Query hints. >> > > > > > > > > > > >> >>>>> >> > > > > > > > > > > >> >>>>> On Wed, Aug 16, 2023 at 9:41 AM liu ron < >> > > > > > > ron9....@gmail.com >> > > > > > > > > >> > > > > > > > > > > wrote: >> > > > > > > > > > > >> >>>>> >> > > > > > > > > > > >> >>>>>> Hi, >> > > > > > > > > > > >> >>>>>> >> > > > > > > > > > > >> >>>>>> Thanks for driving this proposal. >> > > > > > > > > > > >> >>>>>> >> > > > > > > > > > > >> >>>>>> Can you explain why you would need to >> disable >> > > query >> > > > > > hints >> > > > > > > > > > because >> > > > > > > > > > > >> of >> > > > > > > > > > > >> >>>>>> security issues? I don't really understand >> why >> > > > query >> > > > > > > hints >> > > > > > > > > > > affects >> > > > > > > > > > > >> >>>>>> security. >> > > > > > > > > > > >> >>>>>> >> > > > > > > > > > > >> >>>>>> Best, >> > > > > > > > > > > >> >>>>>> Ron >> > > > > > > > > > > >> >>>>>> >> > > > > > > > > > > >> >>>>>> Bonnie Arogyam Varghese < >> bvargh...@confluent.io >> > > > > > .invalid> >> > > > > > > > > > > >> >> 于2023年8月16日周三 >> > > > > > > > > > > >> >>>>>> 23:59写道: >> > > > > > > > > > > >> >>>>>> >> > > > > > > > > > > >> >>>>>>> Platform providers may want to disable >> hints >> > > > > > completely >> > > > > > > > for >> > > > > > > > > > > >> security >> > > > > > > > > > > >> >>>>>>> reasons. >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>>> Currently, there is a configuration to >> disable >> > > > > OPTIONS >> > > > > > > > hint >> > > > > > > > > - >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>> >> > > > > > > > > > > >> >>>>> >> > > > > > > > > > > >> >>> >> > > > > > > > > > > >> >> >> > > > > > > > > > > >> >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/config/#table-dynamic-table-options-enabled >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>>> However, there is no configuration >> available to >> > > > > > disable >> > > > > > > > > QUERY >> > > > > > > > > > > >> hints >> > > > > > > > > > > >> >> - >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>> >> > > > > > > > > > > >> >>>>> >> > > > > > > > > > > >> >>> >> > > > > > > > > > > >> >> >> > > > > > > > > > > >> >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/dev/table/sql/queries/hints/#query-hints >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>>> The proposal is to add a new configuration: >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>>> Name: table.query-options.enabled >> > > > > > > > > > > >> >>>>>>> Description: Enable or disable the QUERY >> hint, >> > > if >> > > > > > > > disabled, >> > > > > > > > > an >> > > > > > > > > > > >> >>>>>>> exception would be thrown if any QUERY >> hints are >> > > > > > > specified >> > > > > > > > > > > >> >>>>>>> Note: The default value will be set to >> true. >> > > > > > > > > > > >> >>>>>>> >> > > > > > > > > > > >> >>>>>> >> > > > > > > > > > > >> >>>>> >> > > > > > > > > > > >> >>>> >> > > > > > > > > > > >> >>>> >> > > > > > > > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > > > > > > > >> >> >> > > > > > > > > > > >> > >> > > > > > > > > > > >> >> > > > > > > > > > > >> >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> >