<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-10-19 21:53 GMT+02:00 Marc Delisle <span dir="ltr"><<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Le 2014-10-19 15:01, Hugues Peccatte a écrit :<br>
<span>> 2014-10-19 13:21 GMT+02:00 Marc Delisle <<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a><br>
</span>> <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>>>:<br>
<span>><br>
>   Le 2014-10-18 14:48, Hugues Peccatte a écrit :<br>
>Â Â Â > 2014-10-13 12:21 GMT+02:00 Hugues Peccatte <<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>><br>
</span>>Â Â Â > <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a><br>
<span>>Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>>>>:<br>
>Â Â Â ><br>
>Â Â Â >Â Â Â 2014-10-12 21:06 GMT+02:00 Marc Delisle <<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a> <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>><br>
</span>>Â Â Â >Â Â Â <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a> <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>>>>:<br>
<span>>Â Â Â ><br>
>   >     Le 2014-10-12 12:57, Hugues Peccatte a écrit :<br>
>Â Â Â >Â Â Â Â Â > 2014-10-05 20:36 GMT+02:00 Hugues Peccatte <<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>><br>
>Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>>><br>
>Â Â Â >Â Â Â Â Â > <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a><br>
>Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>><br>
</span>>Â Â Â >Â Â Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>>>>>:<br>
<span>>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â 2014-10-04 9:01 GMT+02:00 Hugues Peccatte <<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>><br>
>Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a><br>
>Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>><br>
</span>>Â Â Â >Â Â Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>>>>>:<br>
<span>>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â Le 4 oct. 2014 03:22, "Madhura Jayaratne" <<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a> <mailto:<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a>><br>
>Â Â Â <mailto:<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a> <mailto:<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a>>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â <mailto:<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a><br>
>Â Â Â <mailto:<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a>><br>
</span>>   >     <mailto:<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a> <mailto:<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a>>>>> a écrit :<br>
<span>>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â > On Sat, Oct 4, 2014 at 1:24 AM, Hugues Peccatte<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â <<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>><br>
>Â Â Â >Â Â Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>>><br>
</span>>Â Â Â >Â Â Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a><br>
>Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>><br>
>Â Â Â >Â Â Â Â Â <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a> <mailto:<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>>>>><br>
<div><div>>Â Â Â >Â Â Â Â Â >Â Â Â Â Â wrote:<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >> 2014-10-03 12:26 GMT+02:00 Marc Delisle <<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a> <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>><br>
>Â Â Â <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a> <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a><br>
>Â Â Â <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>> <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a><br>
>Â Â Â <mailto:<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>>>>>:<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> Hi Hugues,<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> I retested this morning on a laptop, importing a<br>
>Â Â Â >Â Â Â Â Â SQL file<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â containing<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> 10000 employees from the sample employees<br>
>Â Â Â >Â Â Â Â Â database. This is<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â a small file<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> (660 KB).<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> Current master: 3 min 25 sec (and ends with<br>
>Â Â Â >Â Â Â Â Â JSON.parse:<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â unexpected<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> character)<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> Current Tithugues/stringFunctions_master: 2<br>
>Â Â Â min 10<br>
>Â Â Â >Â Â Â Â Â sec (same<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â js error)<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> Current QA_4_2: 0 min 5 sec<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> There has been improvement, but we cannot<br>
>Â Â Â release<br>
>Â Â Â >Â Â Â Â Â 4.3 with<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â this import<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> speed.<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> --<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >>> Marc Delisle | phpMyAdmin<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >> Hi,<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >><br>
>   >     >     >> I agree… But I'm afraid this is linked to<br>
>   >     multibytes functions…<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >> Maybe we shouldn't use the multibytes functions<br>
>   >     everywhere…<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >> I'll still try to improve performances.<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >> Hugues.<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â >><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â > Indeed, I also think that we should use mb_*<br>
>Â Â Â >Â Â Â Â Â function only<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â when necessary and choice to use them should be made<br>
>Â Â Â >Â Â Â Â Â in case by<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â case basis.<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â > --<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â > Thanks and Regards,<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â > Madhura Jayaratne<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â Hi,<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â I didn't push my commits, but that's what I've<br>
>Â Â Â started. I<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â replaced the mb_* calls by standard calls on<br>
>Â Â Â configuration<br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â variables, reserved words, etc.<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Â Â Hugues.<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Hi,<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Out of desperation, I try another algorithm. Instead of<br>
>Â Â Â >Â Â Â Â Â buffering<br>
>Â Â Â >Â Â Â Â Â >Â Â Â data until SQL delimiter, I'll try to parse all lines.<br>
>Â Â Â >Â Â Â Â Â >Â Â Â So, I won't parse 1000 times a buffer of 50000<br>
>Â Â Â characters,<br>
>Â Â Â >Â Â Â Â Â but less<br>
>Â Â Â >Â Â Â Â Â >Â Â Â than 10 times many buffers of 500 characters. I hope<br>
>Â Â Â this<br>
>Â Â Â >Â Â Â Â Â will be<br>
>Â Â Â >Â Â Â Â Â >Â Â Â faster.<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â >Â Â Â Hugues.<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â > Hi,<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â > The new algorithm is over. There are still some controls to<br>
>Â Â Â >Â Â Â Â Â add, but it<br>
>Â Â Â >Â Â Â Â Â > is usable with the file in this ticket: [1]<br>
>Â Â Â >Â Â Â Â Â > You can find my modifications here: [2]<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â > Marc, is it faster for you ?<br>
>Â Â Â >Â Â Â Â Â > It seems that I won ~33% of time. We're still far from 5<br>
>   seconds…<br>
>Â Â Â >Â Â Â Â Â > Maybe I'll try to use standard PHP functions to see the<br>
>Â Â Â >Â Â Â Â Â difference. If<br>
>Â Â Â >Â Â Â Â Â > the standard PHP functions are really faster, I'll try<br>
>Â Â Â to add<br>
>Â Â Â >Â Â Â Â Â an option<br>
>Â Â Â >Â Â Â Â Â > to use mb_* functions or standard PHP functions, as you<br>
>Â Â Â said.<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â >Â Â Â Â Â > [1] <a href="https://sourceforge.net/p/phpmyadmin/bugs/4536/" target="_blank">https://sourceforge.net/p/phpmyadmin/bugs/4536/</a><br>
>Â Â Â >Â Â Â Â Â > [2]<br>
>Â Â Â >Â Â Â Â Â ><br>
>Â Â Â ><br>
>Â Â Â <a href="https://github.com/Tithugues/phpmyadmin/tree/stringFunctions_useStandardFunctions_master" target="_blank">https://github.com/Tithugues/phpmyadmin/tree/stringFunctions_useStandardFunctions_master</a><br>
>Â Â Â ><br>
>Â Â Â >Â Â Â Â Â Hi Hugues,<br>
>Â Â Â >Â Â Â Â Â yes it's faster. With the same testing conditions, the import<br>
>Â Â Â >Â Â Â Â Â takes 1<br>
>Â Â Â >Â Â Â Â Â min 20 sec.<br>
>Â Â Â ><br>
>Â Â Â ><br>
>Â Â Â >Â Â Â Â Â --<br>
>Â Â Â >Â Â Â Â Â Marc Delisle | phpMyAdmin<br>
>Â Â Â ><br>
>Â Â Â ><br>
>Â Â Â >Â Â Â Thanks for your feedback.<br>
>Â Â Â >Â Â Â I'll try another another improvement to be faster.<br>
>Â Â Â ><br>
>Â Â Â >Â Â Â Note for my self:<br>
>Â Â Â >Â Â Â * read X characters but don't restart the search from 0 each time<br>
>Â Â Â >Â Â Â * search for the escaped quote with a lookbehind expression,<br>
>Â Â Â >Â Â Â something like `(?!<\\)(\\\\)*'`<br>
>Â Â Â ><br>
>Â Â Â >Â Â Â Hugues.<br>
>Â Â Â ><br>
>Â Â Â ><br>
>Â Â Â > Hi,<br>
>Â Â Â ><br>
>Â Â Â > As asked by Marc, I added on option to import by reading as a<br>
>Â Â Â multibytes<br>
>Â Â Â > string or not.<br>
>Â Â Â > The default configuration won't read as multibytes string (because<br>
>Â Â Â it's<br>
>   > too long…). It seems that the DnD to import doesn't use the default<br>
>Â Â Â > configuration, so what ever you define as default, it won't be use in<br>
>Â Â Â > this process.<br>
>Â Â Â > Should we create a ticket for this ? I think it's possible to get<br>
>Â Â Â it in<br>
>Â Â Â > javascript.<br>
>Â Â Â ><br>
>Â Â Â > Hugues.<br>
>Â Â Â ><br>
><br>
>Â Â Â With the new option "Read as multibytes" left to its default disabled<br>
>Â Â Â value, my test file imports in 5 seconds.<br>
><br>
>Â Â Â When this option is ticked, it takes 60 seconds.<br>
><br>
>Â Â Â Note that in both cases, I get a Javascript error at the end (the error<br>
>Â Â Â report does not show the same error in Firefox than in Chromium). Can<br>
>Â Â Â anyone confirm this?<br>
><br>
><br>
>Â Â Â --<br>
>Â Â Â Marc Delisle | phpMyAdmin<br>
><br>
><br>
> Marc,<br>
><br>
> Could we please have both errors? I don't have it on Chrome. I'll try on<br>
> Firefox and IE.<br>
><br>
> Thanks,<br>
> Hugues.<br>
<br>
</div></div>>From Iceweasel 24.8.1:<br>
<br>
{<br>
  "pma_version": "4.3.0-dev",<br>
  "browser_name": "FIREFOX",<br>
  "browser_version": "24.0",<br>
  "user_os": "Linux",<br>
  "server_software": "Apache/2.2.22 (Debian)",<br>
  "user_agent_string": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0)<br>
Gecko/20140924 Firefox/24.0 Iceweasel/24.8.1",<br>
  "locale": "en",<br>
  "configuration_storage": "enabled",<br>
  "php_version": "5.4.4-14+deb7u14",<br>
  "exception_type": "js",<br>
  "exception": {<br>
    "mode": "stack",<br>
    "name": "SyntaxError",<br>
    "message": "JSON.parse: unexpected character",<br>
    "stack": [<br>
      {<br>
        "func": ".parseJSON",<br>
        "args": "",<br>
        "line": 2,<br>
        "column": "",<br>
        "context": [<br>
          "/*! jQuery v1.8.3 <a href="http://jquery.com" target="_blank">jquery.com</a> | <a href="http://jquery.org/license" target="_blank">jquery.org/license</a><br>
*/\r",<br>
          "(function(e,t){function _(e){var t=M[e]={};return<br>
v.each(e.split(y),functio//...",<br>
          "",<br>
          "function sprintf() {",<br>
          "/*",<br>
          " * Copyright (c) 2013 Kevin van Zonneveld<br>
(<a href="http://kvz.io" target="_blank">http://kvz.io</a>)",<br>
          " * and Contributors (<a href="http://phpjs.org/authors" target="_blank">http://phpjs.org/authors</a>)"<br>
        ],<br>
        "filename": "jquery/jquery-1.8.3.min.js"<br>
      },<br>
      {<br>
        "func": "PMA_console.initialize/<",<br>
        "args": "",<br>
        "line": 164,<br>
        "column": "",<br>
        "context": [<br>
          "        $('#pma_console_options<br>
input[name=current_query]').prop('c//...",<br>
          "        PMA_console.updateConfig();",<br>
          "      });",<br>
          "",<br>
          "      $(document).ajaxComplete(function<br>
(event, xhr) {",<br>
          "        var data =<br>
$.parseJSON(xhr.responseText);",<br>
          "        PMA_console.ajaxCallback(data);",<br>
          "      });",<br>
          "",<br>
          "      PMA_console.isInitialized = true;",<br>
          "    }"<br>
        ],<br>
        "filename": "console.js"<br>
      },<br>
      {<br>
        "func": "ErrorReport.wrap_function/new_func",<br>
        "args": "",<br>
        "line": 262,<br>
        "column": "",<br>
        "context": [<br>
          "   */",<br>
          "  wrap_function: function (func) {",<br>
          "    if (!func.wrapped) {",<br>
          "      var new_func = function () {",<br>
          "        try {",<br>
          "          return func.apply(this,<br>
arguments);",<br>
          "        } catch (x) {",<br>
          "          TraceKit.report(x);",<br>
          "        }",<br>
          "      };",<br>
          "      new_func.wrapped = true;"<br>
        ],<br>
        "filename": "error_report.js"<br>
      },<br>
      {<br>
        "func": "v.event.dispatch",<br>
        "args": "",<br>
        "line": 2,<br>
        "column": "",<br>
        "context": [<br>
          "/*! jQuery v1.8.3 <a href="http://jquery.com" target="_blank">jquery.com</a> | <a href="http://jquery.org/license" target="_blank">jquery.org/license</a><br>
*/\r",<br>
          "(function(e,t){function _(e){var t=M[e]={};return<br>
v.each(e.split(y),functio//...",<br>
          "",<br>
          "function sprintf() {",<br>
          "/*",<br>
          " * Copyright (c) 2013 Kevin van Zonneveld<br>
(<a href="http://kvz.io" target="_blank">http://kvz.io</a>)",<br>
          " * and Contributors (<a href="http://phpjs.org/authors" target="_blank">http://phpjs.org/authors</a>)"<br>
        ],<br>
        "filename": "jquery/jquery-1.8.3.min.js"<br>
      },<br>
      {<br>
        "func": "$event.dispatch",<br>
        "args": "",<br>
        "line": 372,<br>
        "column": "",<br>
        "context": [<br>
          "$event.dispatch = function( event ){",<br>
          "\tif ( $.data( this, \"suppress.\"+ event.type ) -<br>
new Date().getTime() > 0 ){",<br>
          "\t\t$.removeData( this, \"suppress.\"+ event.type );",<br>
          "\t\treturn;",<br>
          "\t}",<br>
          "\treturn $dispatch.apply( this, arguments );",<br>
          "};",<br>
          "",<br>
          "// event fix hooks for touch events...",<br>
          "var touchHooks = ",<br>
          "$event.fixHooks.touchstart = "<br>
        ],<br>
        "filename": "jquery/jquery.event.drag-2.2.js"<br>
      },<br>
      {<br>
        "func": "v.event.add/u",<br>
        "args": "",<br>
        "line": 2,<br>
        "column": "",<br>
        "context": [<br>
          "/*! jQuery v1.8.3 <a href="http://jquery.com" target="_blank">jquery.com</a> | <a href="http://jquery.org/license" target="_blank">jquery.org/license</a><br>
*/\r",<br>
          "(function(e,t){function _(e){var t=M[e]={};return<br>
v.each(e.split(y),functio//...",<br>
          "",<br>
          "function sprintf() {",<br>
          "/*",<br>
          " * Copyright (c) 2013 Kevin van Zonneveld<br>
(<a href="http://kvz.io" target="_blank">http://kvz.io</a>)",<br>
          " * and Contributors (<a href="http://phpjs.org/authors" target="_blank">http://phpjs.org/authors</a>)"<br>
        ],<br>
        "filename": "jquery/jquery-1.8.3.min.js"<br>
      },<br>
      {<br>
        "func": "v.event.trigger",<br>
        "args": "",<br>
        "line": 2,<br>
        "column": "",<br>
        "context": [<br>
          "/*! jQuery v1.8.3 <a href="http://jquery.com" target="_blank">jquery.com</a> | <a href="http://jquery.org/license" target="_blank">jquery.org/license</a><br>
*/\r",<br>
          "(function(e,t){function _(e){var t=M[e]={};return<br>
v.each(e.split(y),functio//...",<br>
          "",<br>
          "function sprintf() {",<br>
          "/*",<br>
          " * Copyright (c) 2013 Kevin van Zonneveld<br>
(<a href="http://kvz.io" target="_blank">http://kvz.io</a>)",<br>
          " * and Contributors (<a href="http://phpjs.org/authors" target="_blank">http://phpjs.org/authors</a>)"<br>
        ],<br>
        "filename": "jquery/jquery-1.8.3.min.js"<br>
      },<br>
      {<br>
        "func": "v.event.trigger",<br>
        "args": "",<br>
        "line": 2,<br>
        "column": "",<br>
        "context": [<br>
          "/*! jQuery v1.8.3 <a href="http://jquery.com" target="_blank">jquery.com</a> | <a href="http://jquery.org/license" target="_blank">jquery.org/license</a><br>
*/\r",<br>
          "(function(e,t){function _(e){var t=M[e]={};return<br>
v.each(e.split(y),functio//...",<br>
          "",<br>
          "function sprintf() {",<br>
          "/*",<br>
          " * Copyright (c) 2013 Kevin van Zonneveld<br>
(<a href="http://kvz.io" target="_blank">http://kvz.io</a>)",<br>
          " * and Contributors (<a href="http://phpjs.org/authors" target="_blank">http://phpjs.org/authors</a>)"<br>
        ],<br>
        "filename": "jquery/jquery-1.8.3.min.js"<br>
      },<br>
      {<br>
        "func": "T",<br>
        "args": "",<br>
        "line": 2,<br>
        "column": "",<br>
        "context": [<br>
          "/*! jQuery v1.8.3 <a href="http://jquery.com" target="_blank">jquery.com</a> | <a href="http://jquery.org/license" target="_blank">jquery.org/license</a><br>
*/\r",<br>
          "(function(e,t){function _(e){var t=M[e]={};return<br>
v.each(e.split(y),functio//...",<br>
          "",<br>
          "function sprintf() {",<br>
          "/*",<br>
          " * Copyright (c) 2013 Kevin van Zonneveld<br>
(<a href="http://kvz.io" target="_blank">http://kvz.io</a>)",<br>
          " * and Contributors (<a href="http://phpjs.org/authors" target="_blank">http://phpjs.org/authors</a>)"<br>
        ],<br>
        "filename": "jquery/jquery-1.8.3.min.js"<br>
      },<br>
      {<br>
        "func": ".send/r",<br>
        "args": "",<br>
        "line": 2,<br>
        "column": "",<br>
        "context": [<br>
          "/*! jQuery v1.8.3 <a href="http://jquery.com" target="_blank">jquery.com</a> | <a href="http://jquery.org/license" target="_blank">jquery.org/license</a><br>
*/\r",<br>
          "(function(e,t){function _(e){var t=M[e]={};return<br>
v.each(e.split(y),functio//...",<br>
          "",<br>
          "function sprintf() {",<br>
          "/*",<br>
          " * Copyright (c) 2013 Kevin van Zonneveld<br>
(<a href="http://kvz.io" target="_blank">http://kvz.io</a>)",<br>
          " * and Contributors (<a href="http://phpjs.org/authors" target="_blank">http://phpjs.org/authors</a>)"<br>
        ],<br>
        "filename": "jquery/jquery-1.8.3.min.js"<br>
      }<br>
    ],<br>
    "useragent": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0)<br>
Gecko/20140924 Firefox/24.0 Iceweasel/24.8.1",<br>
    "incomplete": "false",<br>
    "uri": "db_import.php?target="<br>
  },<br>
  "script_name": "db_import.php",<br>
  "microhistory": {<br>
    "pages": [<br>
      {<br>
        "hash":<br>
"index.php?db=&table=&server=1&target=&token=c455fd8a0595a5032d18c07a64e7ab0a"<br>
      },<br>
      {<br>
        "hash":<br>
"db_structure.php?db=test&table=&server=1&target=&token=c455fd8a0595a5032d18c07a64e7ab0a",<br>
        "params": {<br>
          "opendb_url": "db_structure.php",<br>
          "safari_browser": "0",<br>
          "collation_connection": "utf8mb4_general_ci",<br>
          "lang": "en",<br>
          "server": "1",<br>
          "text_dir": "ltr",<br>
          "pma_text_default_tab": "Browse",<br>
          "pma_text_left_default_tab": "Structure",<br>
          "LimitChars": "50",<br>
          "pftext": "",<br>
          "confirm": "true",<br>
          "LoginCookieValidity": "144000",<br>
          "logged_in": "true"<br>
        }<br>
      },<br>
      {<br>
        "hash":<br>
"index.php?db=&table=&server=1&target=&token=c455fd8a0595a5032d18c07a64e7ab0a",<br>
        "params": {<br>
          "opendb_url": "db_structure.php",<br>
          "safari_browser": "0",<br>
          "collation_connection": "utf8mb4_general_ci",<br>
          "lang": "en",<br>
          "server": "1",<br>
          "text_dir": "ltr",<br>
          "pma_text_default_tab": "Browse",<br>
          "pma_text_left_default_tab": "Structure",<br>
          "LimitChars": "50",<br>
          "pftext": "",<br>
          "confirm": "true",<br>
          "LoginCookieValidity": "144000",<br>
          "logged_in": "true"<br>
        }<br>
      },<br>
      {<br>
        "hash":<br>
"db_structure.php?db=test&table=&server=1&target=&token=c455fd8a0595a5032d18c07a64e7ab0a",<br>
        "params": {<br>
          "opendb_url": "db_structure.php",<br>
          "safari_browser": "0",<br>
          "collation_connection": "utf8mb4_general_ci",<br>
          "lang": "en",<br>
          "server": "1",<br>
          "text_dir": "ltr",<br>
          "pma_text_default_tab": "Browse",<br>
          "pma_text_left_default_tab": "Structure",<br>
          "LimitChars": "50",<br>
          "pftext": "",<br>
          "confirm": "true",<br>
          "LoginCookieValidity": "144000",<br>
          "logged_in": "true"<br>
        }<br>
      },<br>
      {<br>
        "hash":<br>
"db_import.php?db=test&table=&server=1&target=&token=c455fd8a0595a5032d18c07a64e7ab0a",<br>
        "params": {<br>
          "opendb_url": "db_structure.php",<br>
          "safari_browser": "0",<br>
          "collation_connection": "utf8mb4_general_ci",<br>
          "lang": "en",<br>
          "server": "1",<br>
          "text_dir": "ltr",<br>
          "pma_text_default_tab": "Browse",<br>
          "pma_text_left_default_tab": "Structure",<br>
          "LimitChars": "50",<br>
          "pftext": "",<br>
          "confirm": "true",<br>
          "LoginCookieValidity": "144000",<br>
          "logged_in": "true"<br>
        }<br>
      }<br>
    ],<br>
    "current_index": "5"<br>
<div><div>Â Â }<br>
}<br>
<br>
--<br>
Marc Delisle | phpMyAdmin</div></div></blockquote><div><br></div><div>Hi,</div><div><br></div><div>It seems that the new algorithm is over, see [1]. The unit tests are now ok (except for the one failing on master). I did some tests with escaped quotes (with quote or backslash), delimiters into strings, modified delimiters.</div><div>Marc, do you still have your error please? (I didn't work on it, but I hope that your issue is linked to the not-finished version…)</div><div><br></div><div>Feel free to look at the new algorithm and to tell me if you see any flaw.</div><div>If you can lead to an error with a correct SQL file, please send it to me.</div><div><br></div><div>Thanks for your feedback.</div><div><br></div><div>[1] <a href="https://github.com/Tithugues/phpmyadmin/tree/stringFunctions_useStandardFunctions_master" target="_blank">https://github.com/Tithugues/phpmyadmin/tree/stringFunctions_useStandardFunctions_master</a></div><div><br></div><div>Hugues.</div></div></div></div>