From: Michael D. <mik...@us...> - 2004-12-06 03:39:33
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27998/Dialect Modified Files: MySQLDialect.cs Log Message: patch for Sergey for LIMIT support and modified driver to no longer prepare commands. Index: MySQLDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** MySQLDialect.cs 29 Oct 2004 05:52:44 -0000 1.20 --- MySQLDialect.cs 6 Dec 2004 03:39:23 -0000 1.21 *************** *** 3,6 **** --- 3,7 ---- using System.Text; + using NHibernate.SqlCommand; using NHibernate.SqlTypes; using NHibernate.Util; *************** *** 24,28 **** Register( DbType.AnsiString, 16777215, "MEDIUMTEXT" ); Register( DbType.Binary, "LONGBLOB"); ! Register( DbType.Binary, 255, "VARCHAR($1) BINARY"); Register( DbType.Binary, 65535, "BLOB"); Register( DbType.Binary, 16777215, "MEDIUMBLOB"); --- 25,29 ---- Register( DbType.AnsiString, 16777215, "MEDIUMTEXT" ); Register( DbType.Binary, "LONGBLOB"); ! Register( DbType.Binary, 127, "TINYBLOB"); Register( DbType.Binary, 65535, "BLOB"); Register( DbType.Binary, 16777215, "MEDIUMBLOB"); *************** *** 34,38 **** Register( DbType.Decimal, "NUMERIC(19,5)" ); Register( DbType.Decimal, 19, "NUMERIC(19, $1)"); ! Register( DbType.Double, "FLOAT" ); Register( DbType.Guid, "VARCHAR(40)" ); Register( DbType.Int16, "SMALLINT" ); --- 35,39 ---- Register( DbType.Decimal, "NUMERIC(19,5)" ); Register( DbType.Decimal, 19, "NUMERIC(19, $1)"); ! Register( DbType.Double, "DOUBLE" ); Register( DbType.Guid, "VARCHAR(40)" ); Register( DbType.Int16, "SMALLINT" ); *************** *** 92,95 **** --- 93,127 ---- } + public override bool SupportsLimit + { + get { return true; } + } + + public override bool PreferLimit + { + get { return true; } + } + + public override SqlString GetLimitString(SqlString querySqlString) + { + Parameter p1 = new Parameter(); + Parameter p2 = new Parameter(); + + p1.Name = "p1"; + p1.SqlType = new Int32SqlType(); + + p2.Name = "p2"; + p2.SqlType = new Int32SqlType(); + + SqlStringBuilder pagingBuilder = new SqlStringBuilder(); + pagingBuilder.Add(querySqlString); + pagingBuilder.Add(" limit "); + pagingBuilder.Add(p1); + pagingBuilder.Add(", "); + pagingBuilder.Add(p2); + + return pagingBuilder.ToSqlString(); + } + public override string GetAddForeignKeyConstraintString(string constraintName, string[] foreignKey, string referencedTable, string[] primaryKey) { |