<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 7 Dec 2018, at 14:27, Vladislav Shpilevoy <<a href="mailto:v.shpilevoy@tarantool.org" class="">v.shpilevoy@tarantool.org</a>> wrote:</div><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 07/12/2018 14:20, n.pettik wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" class="">On 5 Dec 2018, at 23:35, Vladislav Shpilevoy <<a href="mailto:v.shpilevoy@tarantool.org" class="">v.shpilevoy@tarantool.org</a>> wrote:<br class=""><br class="">Vova, please, ignore. It was accidentally sent to you.<br class=""><br class="">Nikita, please, review.<br class=""></blockquote>I didn’t receive mail since there were issues with our mailing list,<br class="">so I looked at patch-set on GitHub.<br class=""><blockquote type="cite" class=""><br class="">On 05/12/2018 02:47, Roman Khabibov wrote:<br class=""><blockquote type="cite" class="">Branch: <a href="https://github.com/tarantool/tarantool/tree/romanhabibov/gh-3580-err-msg-pathjoin" class="">https://github.com/tarantool/tarantool/tree/romanhabibov/gh-3580-err-msg-pathjoin</a><br class="">Issue: <a href="https://github.com/tarantool/tarantool/issues/3580" class="">https://github.com/tarantool/tarantool/issues/3580</a><br class="">Roman Khabibov (2):<br class="">  sql: add CHAR description without length<br class=""></blockquote></blockquote><blockquote type="cite" class="">    Fix an ability to describe CHAR without specifying the<br class=""></blockquote>Not ‘fix’ but rather ‘add’. Otherwise, it sounds wierd.<br class=""><blockquote type="cite" class="">    length as it is allowed by standard. It was<br class="">    accidentally broken by this commit:<br class="">    7752cdfd31f9956a4d6bb0f306c561a0ac73e7ab<br class="">         Needed for #3616<br class=""></blockquote>It is not needed for #3616 - this commit and issue are not connected.<br class="">Issue disappeared after static types were introduced. It is ok that<br class="">you added test case on this issue, but these two problems are not related.<br class="">Consider refactoring:<br class="">diff --git a/src/box/sql/parse.y b/src/box/sql/parse.y<br class="">index f5e86fba1..d56fce451 100644<br class="">--- a/src/box/sql/parse.y<br class="">+++ b/src/box/sql/parse.y<br class="">@@ -1485,26 +1485,22 @@ typedef(A) ::= DATE . { A.type = AFFINITY_REAL; }<br class=""> typedef(A) ::= TIME . { A.type = AFFINITY_REAL; }<br class=""> typedef(A) ::= DATETIME . { A.type = AFFINITY_REAL; }<br class=""> -%type char_len {int}<br class="">-typedef(A) ::= CHAR char_len(B) . {<br class="">+typedef(A) ::= CHAR . {<br class="">   A.type = AFFINITY_TEXT;<br class="">-  (void) B;<br class=""> }<br class=""> -%type vchar_len {int}<br class="">-typedef(A) ::= VARCHAR vchar_len(B) . {<br class="">-  A.type = AFFINITY_TEXT;<br class="">+char_len(A) ::= LP INTEGER(B) RP . {<br class="">+  (void) A;<br class="">   (void) B;<br class=""> }<br class=""> -char_len(A) ::=  . {<br class="">-  (void) A;<br class="">+typedef(A) ::= CHAR char_len(B) . {<br class="">+  A.type = AFFINITY_TEXT;<br class="">+  (void) B;<br class=""> }<br class=""> -char_len(A) ::=  vchar_len(A) .<br class="">-<br class="">-vchar_len(A) ::= LP INTEGER(B) RP . {<br class="">-  (void) A;<br class="">+typedef(A) ::= VARCHAR char_len(B) . {<br class="">+  A.type = AFFINITY_TEXT;<br class="">   (void) B;<br class=""> }<br class="">In this case code looks a bit more straightforward IMHO.<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I've tried this refactoring too but faced with</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">grammar 'features'. You can not define two rules</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">starting with the same prefix. Did you test it? Maybe</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I was wrong?</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote><br class=""></div><div>Yep, I tested - it works.</div><br class=""></body></html>