<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">чт, 19 июл. 2018 г. в 3:24, n.pettik <<a href="mailto:korablev@tarantool.org">korablev@tarantool.org</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><br><blockquote type="cite"><div><div dir="ltr" style="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"><div class="gmail_quote"><div><div>diff --git a/extra/lempar.c b/extra/lempar.c</div><div>index 00fd79c..d043e39 100644</div><div>--- a/extra/lempar.c</div><div>+++ b/extra/lempar.c</div><div>@@ -336,8 +336,8 @@ void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){</div><div>   if( pParser ){</div><div> #ifdef YYTRACKMAXSTACKDEPTH</div><div>     pParser->yyhwm = 0;</div><div>-    pParser->is_fallback_failed = false;</div><div> #endif</div><div>+    pParser->is_fallback_failed = false;</div></div></div></div></div></blockquote><div><br></div><div>Could you please explain this code movement?</div></div></div></blockquote><div><br></div><div><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;margin-top:10px;margin-bottom:0px;max-width:100%;line-height:1.45;color:rgb(68,77,86);white-space:pre-wrap;overflow:visible;word-wrap:break-word;background-color:rgb(234,245,255);text-decoration-style:initial;text-decoration-color:initial">"Also found
initialization in ifdef that caused some problems with error
messages in occasions when the wrong syntax was used."</pre>To be more accurate it's just variable initialization that was in wrong place.</div><div>Moreover in most cases (almost always) after allocating memory for this</div><div>variable there was non-zero value ('true', basically), that was causing</div><div>"keyword 'BEGIN' is reserved" error message if we use "BEGIN" instead</div><div>of "START TRANSACTION", after the patch changes are applied.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><br><blockquote type="cite"><div dir="ltr" style="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"><div class="gmail_quote"><div><div>+++ b/test/sql-tap/start-transaction.test.lua</div><div>@@ -0,0 +1,266 @@</div><div>+#!/usr/bin/env tarantool</div><div>+test = require("sqltester")</div><div>+test:plan(21)</div><div>+</div><div>+test:do_catchsql_test(</div><div>+<span style="white-space:pre-wrap">     </span>"start-transaction-1.0",</div><div>+<span style="white-space:pre-wrap">      </span>[[</div><div>+<span style="white-space:pre-wrap">              </span>CREATE TABLE IF NOT EXISTS t(id int PRIMARY KEY);</div><div>+<span style="white-space:pre-wrap">               </span>DELETE FROM t;</div><div>+<span style="white-space:pre-wrap">          </span>BEGIN;</div><div>+<span style="white-space:pre-wrap">                  </span>INSERT INTO t VALUES (1);</div><div>+<span style="white-space:pre-wrap">                       </span>INSERT INTO t VALUES (2);</div><div>+<span style="white-space:pre-wrap">               </span>COMMIT;</div><div>+<span style="white-space:pre-wrap"> </span>]], {</div><div>+<span style="white-space:pre-wrap">           </span>-- <start-transaction-1.0></div><div>+<span style="white-space:pre-wrap">                </span>1, "near \"BEGIN\": syntax error"</div><div>+<span style="white-space:pre-wrap">           </span>-- <start-transaction-1.0></div><div>+<span style="white-space:pre-wrap">        </span>})</div><div>+</div><div>+test:do_execsql_test(</div><div>+<span style="white-space:pre-wrap"> </span>"start-transaction-1.1",</div><div>+<span style="white-space:pre-wrap">      </span>[[</div><div>+<span style="white-space:pre-wrap">              </span>SELECT * FROM t;</div><div>+<span style="white-space:pre-wrap">        </span>]], {</div><div>+<span style="white-space:pre-wrap">           </span>-- <start-transaction-1.1></div><div>+</div><div>+<span style="white-space:pre-wrap">                </span>-- <start-transaction-1.1></div><div>+<span style="white-space:pre-wrap">        </span>})</div><div>+</div><div>+test:do_catchsql_test(</div><div>+<span style="white-space:pre-wrap">        </span>"start-transaction-1.2",</div><div>+<span style="white-space:pre-wrap">      </span>[[</div><div>+<span style="white-space:pre-wrap">              </span>CREATE TABLE IF NOT EXISTS t(id int primary key);</div><div>+<span style="white-space:pre-wrap">               </span>delete from t;</div></div></div></div></blockquote><div><br></div><div>We write SQL queries in upper-case. Fix it in other places too.</div></div><br></div></blockquote><div>Fixed it.</div><div><br></div><div>Diff with the previous pushed patch:<br><br><div>diff --git a/test/sql-tap/start-transaction.test.lua b/test/sql-tap/start-transaction.test.lua</div><div>index eece4cd..98ca531 100755</div><div>--- a/test/sql-tap/start-transaction.test.lua</div><div>+++ b/test/sql-tap/start-transaction.test.lua</div><div>@@ -30,8 +30,8 @@ test:do_execsql_test(</div><div> test:do_catchsql_test(</div><div> <span style="white-space:pre"> </span>"start-transaction-1.2",</div><div> <span style="white-space:pre">  </span>[[</div><div>-<span style="white-space:pre">           </span>CREATE TABLE IF NOT EXISTS t(id int primary key);</div><div>-<span style="white-space:pre">            </span>delete from t;</div><div>+<span style="white-space:pre">               </span>CREATE TABLE IF NOT EXISTS t(id INT PRIMARY KEY);</div><div>+<span style="white-space:pre">            </span>DELETE FROM t;</div><div> <span style="white-space:pre">              </span>BEGIN TRANSACTION;</div><div> <span style="white-space:pre">                  </span>INSERT INTO t VALUES (1);</div><div> <span style="white-space:pre">                   </span>INSERT INTO t VALUES (2);</div><div>@@ -256,7 +256,7 @@ test:do_execsql_test(</div><div> test:do_execsql_test(</div><div> <span style="white-space:pre">     </span>"start-transaction-1.20",</div><div> <span style="white-space:pre"> </span>[[</div><div>-<span style="white-space:pre">           </span>drop table t;</div><div>+<span style="white-space:pre">                </span>DROP TABLE t;</div><div> <span style="white-space:pre">       </span>]], {</div><div> <span style="white-space:pre">               </span>-- <start0transaction-1.20></div><div> </div><div>diff --git a/test/sql/tokenizer.result b/test/sql/tokenizer.result</div><div>index 7c0ca8f..95063b5 100644</div><div>--- a/test/sql/tokenizer.result</div><div>+++ b/test/sql/tokenizer.result</div><div>@@ -102,9 +102,9 @@ sql_tokenizer.split_sql('select 1; -- test comment\n; select 2;')</div><div> - - select 1;</div><div>   - ' select 2;'</div><div> ...</div><div>-sql_tokenizer.split_sql("start transaction; insert into table values ('example kek--'); commit;")</div><div>+sql_tokenizer.split_sql("START TRANSACTION; insert into table values ('example kek--'); commit;")</div><div> ---</div><div>-- - start transaction;</div><div>+- - START TRANSACTION;</div><div>   - ' insert into table values (''example kek--'');'</div><div>   - ' commit;'</div><div> ...</div><div>diff --git a/test/sql/tokenizer.test.lua b/test/sql/tokenizer.test.lua</div><div>index 5c1cadc..4a4e289 100644</div><div>--- a/test/sql/tokenizer.test.lua</div><div>+++ b/test/sql/tokenizer.test.lua</div><div>@@ -32,7 +32,7 @@ test_run:cmd("setopt delimiter ''");</div><div> </div><div> sql_tokenizer.split_sql('select 1; -- test comment\n; select 2;')</div><div> </div><div>-sql_tokenizer.split_sql("start transaction; insert into table values ('example kek--'); commit;")</div><div>+sql_tokenizer.split_sql("START TRANSACTION; insert into table values ('example kek--'); commit;")</div><div> </div><div> sql_tokenizer.split_sql("insert into quoted(a) value 'lalala'")</div></div><div><br></div></div></div>