Hi Alexander, Thank you very much. Do you think this these patches will be ready for 10.3.10 GA ? Regards.
-----Message d'origine----- De : Alexander Barkov [mailto:bar@mariadb.com] Envoyé : jeudi 4 octobre 2018 16:05 À : jerome brauge Cc : MariaDB Developers (maria-developers@lists.launchpad.net) Objet : Re: MDEV-17359
Hi Jerome,
Note, Oracle supports not only concatenation in the pattern, but also additive and multiplicative expressions, e.g.:
SELECT 'x' FROM DUAL WHERE '100' LIKE 10*10;
This kind of expressions currently also do not work.
I think that in this rule:
| bit_expr LIKE mysql_concatenation_expr opt_escape { $$= new (thd->mem_root) Item_func_like(thd, $1, $3, $4, Lex->escape_used); if (unlikely($$ == NULL)) MYSQL_YYABORT; }
mysql_concatenation_expr should be just replaced to bit_expr.
But this adds a lot of new shift/reduce conflicts because of flaws in the current grammar. They need to be fixed before MDEV-17359.
I reported these conflicts in:
MDEV-17374 Shift/reduce conflicts because of SOUNDS_SYM, ESCAPE_SYM, USER_SYM not given precedence
I'll have a patch soon, then will return to MDEV-17359.
Greetings.
Jerome,
Can you please wait. I'll do some more analysis on the subject.
On 10/04/2018 09:16 AM, Alexander Barkov wrote:
Hello Jerome,
On 10/03/2018 05:33 PM, jerome brauge wrote:
Hello Alexander, Can you review this patch for MDEV-17359 ?
Best regards.
Thanks for you contribution!
I noticed that Oracle also supports concatenation in the ESCAPE clause:
SELECT 'x' FROM DUAL WHERE 'a' LIKE 'b' ESCAPE ''||'x'||'';
This can be done separately, or can be addressed in the same patch, if you wish :)
Review comments:
I've been trying to gradually make the two *.yy files as similar as possible, to turn them into a single *.yy at the end. So new changes in the grammar should usually make the two files look more similar rather than make them diverge.
However, it seems in case of concatenation and like, having only a pair of MYSQL_CONCAT_SYM and ORACLE_CONCAT_SYM does not solve
On 10/04/2018 09:26 AM, Alexander Barkov wrote: the
problem. I could not make a quick patch which would converge sql_yacc.yy and sql_yacc_ora.yy.
It's likely that we'll have to introduce separate MYSQL_LIKE_SYM and ORACLE_LIKE_SYM. But I can do it separately later (after more analysis).
I the meanwhile, could you please rename mysql_concatenation_expr into oracle_concatenation_expr in sql_yacc_ora.yy, so it looks like this:
oracle_concatenation_expr: simple_expr | oracle_concatenation_expr ORACLE_CONCAT_SYM simple_expr { $$= new (thd->mem_root) Item_func_concat_operator_oracle(thd, $1, $3); if (unlikely($$ == NULL)) MYSQL_YYABORT; } ;
Later, when we join the two *.yy files, we will need both mysql_concatenation_expr (in its current reduction) and oracle_concatenation_expr (in your reduction with ORACLE_CONCAT_SYM and Item_func_concat_operator_oracle) .
Thanks.
Ce message et les pièces jointes sont confidentiels et établis à l'attention exclusive de ses destinataires. Toute utilisation ou diffusion, même partielle, non autorisée est interdite. Tout message électronique est susceptible d'altération; CEGID décline donc toute responsabilité au titre de ce message. Si vous n'êtes pas le destinataire de ce message, merci de le détruire et d'avertir l'expéditeur.
This message and any attachments are confidential and intended solely for the addressees. Any unauthorized use or disclosure, either whole or partial is prohibited. E-mails are susceptible to alteration; CEGID shall therefore not be liable for the content of this message. If you are not the intended recipient of this message, please delete it and notify the sender.