A MysqlSqlOperatorTable isn’t a bad idea. Each operator table could be a place to collect the operators for that DB.
I have a couple of asks: * Don’t include standard operators on that table * If operators are shared with another DB (e.g. the LEAST function will occur in both OracleSqlOperatorTable and MysqlSqlOperatorTable) make sure that the code only occurs in one place. Julian > On Feb 11, 2019, at 5:51 AM, Stamatis Zampetakis <zabe...@gmail.com> wrote: > > Hi Hongze, Qianjin, > > I apologise fo the late response. > > I still don't understand why it is problematic to create a separate > MySQLOperatorTable. > You can easily combine operator tables (using ChainedSqlOperatorTable for > instance) and pass them around to places were otherwise you would put a > single operator table (e.g., SqlValidator). > It is also easy to use multiple operator tables at a higher level using the > connection property FUN [1]. > > Best, > Stamatis > > [1] > https://calcite.apache.org/apidocs/org/apache/calcite/config/CalciteConnectionProperty.html#FUN > > > Στις Παρ, 1 Φεβ 2019 στις 6:39 π.μ., ο/η ForwardXu <x1q...@qq.com> έγραψε: > >> hi statmatis: >> It's also possible that we could do better in both ways, as Hongze Zhang >> said. One of the initial reasons I implemented json_type was to use it in >> flink as well. However, we know that flink is not open to support a dialect >> like mysql. >> best >> qianjin >> >> >> >> >> ------------------ 原始邮件 ------------------ >> 发件人: "Hongze Zhang"<notify...@126.com>; >> 发送时间: 2019年2月1日(星期五) 中午1:09 >> 收件人: "dev@calcite.apache.org"<dev@calcite.apache.org>; >> >> 主题: Re: Re: Integrating MySQL's JSON functions >> >> >> >> Hi Stamatis, >> >> Thanks for mentioning MySQLOperatorTable! >> >> I just read some code about the usage of OracleOperatorTable in Calcite, >> but I am now not strongly inclined to add MySQL's JSON functions to >> MySQLOperatorTable. >> MySQL's JSON functions are rarely conflict with what are from standard, >> and they extends the JSON ability of MySQL in many sides. I think it might >> be a good try to treat functions from both MySQL's and standard's as a >> whole JSON operator suite. >> Users may want to directly use any function they know, I think it is >> better to not to confuse them with the truth that what's in standard and >> what's not. >> For the conflict part like JSON_OBJECT(key , value) and JSON_OBJECT(key : >> value), I think we can just support both. >> >> What do you think? >> >> >> >> Hongze >> >> From: Stamatis Zampetakis >> Date: 2019-02-01 06:32 >> To: dev >> Subject: Re: Integrating MySQL's JSON functions >> Nice document Hongze! >> >> Since the functions are only present in MySQL why not create a >> MySQLOperatorTable and put them there? I went over the discussion in >> CALCITE-2791 but I did not understand why it is preferable to put them in >> the SqlStdOperatorTable. >> >> Στις Πέμ, 31 Ιαν 2019 στις 10:51 μ.μ., ο/η Julian Hyde <jh...@apache.org> >> έγραψε: >> >>> +1 >>> >>> In the reference doc, let’s make it clear that these are in MySQL but not >>> in the standard. (Unlike some of their other extensions to standard SQL, >>> MySQL seem to have done a good job - they are well-designed and >>> well-documented.) >>> >>>> On Jan 31, 2019, at 10:20 AM, Hongze Zhang <notify...@126.com> wrote: >>>> >>>> Hi all, >>>> >>>> >>>> There is a PR CALCITE-2791[1] from xuqianjin about adding a MySQL >>> function JSON_TYPE[2], and I want to know what do you think about it. >>>> >>>> >>>> JSON_TYPE is not a standard JSON function defined by SQL:2016. In MySQL >>> the use of this function is to get the type of a JSON doc. The similar >>> operator in Calcite 1.18.0 is "IS JSON (VALUE/SCALAR/OBJECT/ARRAY)", >>> however sometimes JSON_TYPE can do more than it. >>>> >>>> As for other non-standard JSON functions, I made a simple summary table >>> about JSON support (mainly as functions) details of some of most >> important >>> SQL implementations. you can open it via link >>> >> https://docs.google.com/spreadsheets/d/1A6vrEEu3WK49dJ5mfaYeMLFvAy0JR9uoJsiaKhxUal4/edit#gid=0 >>>> >>>> >>>> And I suggest to introduce some JSON functions that is from MySQL and >>> might be useful for Calcite but not supported, not Just JSON_TYPE: >>>> 1. JSON_INSERT / JSON_SET / JSON_REPLACE /JSON_REMOVE [3] >>>> 2. JSON_DEPTH / JSON_LENGTH / JSON_TYPE [4] >>>> I think the PR[1] can be a good start. >>>> >>>> >>>> Does anyone have thought about this? Looking forward to your reply. >>>> >>>> >>>> [1] https://issues.apache.org/jira/browse/CALCITE-2791 >>>> [2] >>> >> https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html#function_json-type >>>> [3] >>> https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html >>>> [4] >>> https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html >>> >>>