From: Date: February 1 2008 7:57pm Subject: Connector/NET commit: r1158 - in branches/5.1: . Driver/Source List-Archive: http://lists.mysql.com/commits/41585 X-Bug: 34220 Message-Id: <200802011857.m11Iv5UJ015160@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified: branches/5.1/CHANGES branches/5.1/Driver/Source/Statement.cs Log: - Small bugfix and speed enhancement in Statement.TokenizeSql (bug #34220) We accepted the && bug fix and the parameter marker speed enhancement. We will also add enhancements in 5.2 to only call TokenizeSql when parameters are present. Modified: branches/5.1/CHANGES =================================================================== --- branches/5.1/CHANGES 2008-02-01 18:25:55 UTC (rev 1157) +++ branches/5.1/CHANGES 2008-02-01 18:57:05 UTC (rev 1158) @@ -8,6 +8,7 @@ - Incorporated some connection string cache optimizations sent to us by Maxim Mass (bug #34000) - Fixed problem with opening a connection that was previously closed by sudden server disconnection (bug #33909) - Fixed code to yeild better exception when using different connection strings in a single transaction (bug #34204) + - Small bugfix and speed enhancement in Statement.TokenizeSql (bug #34220) Version 5.1.4 - 11/12/2007 - Fixed issue where column name metadata was not using the charset given on the connection string Modified: branches/5.1/Driver/Source/Statement.cs =================================================================== --- branches/5.1/Driver/Source/Statement.cs 2008-02-01 18:25:55 UTC (rev 1157) +++ branches/5.1/Driver/Source/Statement.cs 2008-02-01 18:57:05 UTC (rev 1158) @@ -187,6 +187,7 @@ { bool batch = Connection.Settings.AllowBatch & Driver.SupportsBatch; char delim = Char.MinValue; + char parameterMarker = Connection.ParameterMarker; StringBuilder sqlPart = new StringBuilder(); bool escaped = false; ArrayList tokens = new ArrayList(); @@ -206,19 +207,19 @@ sqlPart.Remove(0, sqlPart.Length); continue; } - else if ((c == '\'' || c == '\"' || c == '`') & !escaped & delim == Char.MinValue) + else if ((c == '\'' || c == '\"' || c == '`') && !escaped && delim == Char.MinValue) delim = c; else if (c == '\\') escaped = !escaped; - else if (c == Connection.ParameterMarker && delim == Char.MinValue && !escaped) + else if (c == parameterMarker && delim == Char.MinValue && !escaped) { tokens.Add(sqlPart.ToString()); sqlPart.Remove(0, sqlPart.Length); } - else if (sqlPart.Length > 0 && sqlPart[0] == Connection.ParameterMarker && + else if (sqlPart.Length > 0 && sqlPart[0] == parameterMarker && !Char.IsLetterOrDigit(c) && c != '_' && c != '.' && c != '$' && - ((c != '@' && c != Connection.ParameterMarker) && - (c != '?' && c != Connection.ParameterMarker))) + ((c != '@' && c != parameterMarker) && + (c != '?' && c != parameterMarker))) { tokens.Add(sqlPart.ToString()); sqlPart.Remove(0, sqlPart.Length);