Hi Bonnie, I think changing it to something like <name>.enabled could lead to misunderstanding for instance when we set this flag to false what should it mean? 1. Just ignore hints and execute a query like the same query however with removed hints 2. Fail on validation because hints are disabled 3. something else
I tend to think that we are talking about just ignoring hints, so option 1 (and Oracle follows option 1 as well as mentioned at [1]). So I would suggest to keep ignore in property name to make it more clear Please let me know if I miss anything [1] https://docs.oracle.com/en/database/oracle/oracle-database/23/refrn/OPTIMIZER_IGNORE_HINTS.html#GUID-D62CA6D8-D0D8-4A20-93EA-EEB4B3144347 On Fri, Sep 29, 2023 at 7:20 PM Bonnie Arogyam Varghese <bvargh...@confluent.io.invalid> wrote: > 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. > >> > > > > > > > > > > >> >>>>>>> > >> > > > > > > > > > > >> >>>>>> > >> > > > > > > > > > > >> >>>>> > >> > > > > > > > > > > >> >>>> > >> > > > > > > > > > > >> >>>> > >> > > > > > > > > > > >> >>> > >> > > > > > > > > > > >> >>> > >> > > > > > > > > > > >> >> > >> > > > > > > > > > > >> > > >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > -- Best regards, Sergey