From: Kevin W. <kev...@us...> - 2004-12-31 17:07:39
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13407 Modified Files: DB2Dialect.cs Dialect.cs FirebirdDialect.cs GenericDialect.cs MsSql2000Dialect.cs MsSql7Dialect.cs MySQLDialect.cs Oracle9Dialect.cs OracleDialect.cs PostgreSQLDialect.cs QueryFunctionStandard.cs SybaseDialect.cs TypeNames.cs Log Message: fixing xml comments and letting ReSharper do reformatting Index: FirebirdDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/FirebirdDialect.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** FirebirdDialect.cs 29 Jul 2004 16:45:05 -0000 1.7 --- FirebirdDialect.cs 31 Dec 2004 17:07:24 -0000 1.8 *************** *** 1,5 **** - using System; using System.Data; - using NHibernate.SqlTypes; namespace NHibernate.Dialect --- 1,3 ---- *************** *** 10,68 **** public class FirebirdDialect : Dialect { public FirebirdDialect() : base() { ! Register( DbType.AnsiStringFixedLength, "CHAR(255)"); Register( DbType.AnsiStringFixedLength, 8000, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR(255)" ); Register( DbType.AnsiString, 8000, "VARCHAR($1)" ); ! Register( DbType.AnsiString, 2147483647, "BLOB"); // should use the IType.ClobType ! Register( DbType.Binary, 2147483647, "BLOB SUB_TYPE 0" );// should use the IType.BlobType ! Register( DbType.Boolean, "SMALLINT" ); Register( DbType.Byte, "SMALLINT" ); ! Register( DbType.Currency, "DECIMAL(16,4)"); ! Register( DbType.Date, "DATE"); Register( DbType.DateTime, "TIMESTAMP" ); Register( DbType.Decimal, "DECIMAL(18,0)" ); // NUMERIC(18,0) is equivalent to DECIMAL(18,0) ! Register( DbType.Decimal, 18, "DECIMAL(18, $1)"); ! Register( DbType.Double, "DOUBLE PRECISION" ); Register( DbType.Int16, "SMALLINT" ); Register( DbType.Int32, "INTEGER" ); Register( DbType.Int64, "BIGINT" ); ! Register( DbType.Single, "FLOAT" ); ! Register( DbType.StringFixedLength, "CHAR(255)"); ! Register( DbType.StringFixedLength, 4000, "CHAR($1)"); Register( DbType.String, "VARCHAR(255)" ); Register( DbType.String, 4000, "VARCHAR($1)" ); ! Register( DbType.String, 1073741823, "BLOB SUB_TYPE 1" );// should use the IType.ClobType Register( DbType.Time, "TIME" ); } public override string AddColumnString { ! get ! { ! return "add"; ! } } ! public override string GetSequenceNextValString(string sequenceName) { ! return string.Format("select gen_id({0}, 1 ) from RDB$DATABASE", sequenceName); } ! public override string GetCreateSequenceString(string sequenceName) { ! return string.Format("create generator {0}", sequenceName); } ! public override string GetDropSequenceString(string sequenceName) { ! return string.Format("drop generator {0}", sequenceName); } public override bool SupportsSequences { ! get { return true; } } } ! } --- 8,81 ---- public class FirebirdDialect : Dialect { + /// <summary></summary> public FirebirdDialect() : base() { ! Register( DbType.AnsiStringFixedLength, "CHAR(255)" ); Register( DbType.AnsiStringFixedLength, 8000, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR(255)" ); Register( DbType.AnsiString, 8000, "VARCHAR($1)" ); ! Register( DbType.AnsiString, 2147483647, "BLOB" ); // should use the IType.ClobType ! Register( DbType.Binary, 2147483647, "BLOB SUB_TYPE 0" ); // should use the IType.BlobType ! Register( DbType.Boolean, "SMALLINT" ); Register( DbType.Byte, "SMALLINT" ); ! Register( DbType.Currency, "DECIMAL(16,4)" ); ! Register( DbType.Date, "DATE" ); Register( DbType.DateTime, "TIMESTAMP" ); Register( DbType.Decimal, "DECIMAL(18,0)" ); // NUMERIC(18,0) is equivalent to DECIMAL(18,0) ! Register( DbType.Decimal, 18, "DECIMAL(18, $1)" ); ! Register( DbType.Double, "DOUBLE PRECISION" ); Register( DbType.Int16, "SMALLINT" ); Register( DbType.Int32, "INTEGER" ); Register( DbType.Int64, "BIGINT" ); ! Register( DbType.Single, "FLOAT" ); ! Register( DbType.StringFixedLength, "CHAR(255)" ); ! Register( DbType.StringFixedLength, 4000, "CHAR($1)" ); Register( DbType.String, "VARCHAR(255)" ); Register( DbType.String, 4000, "VARCHAR($1)" ); ! Register( DbType.String, 1073741823, "BLOB SUB_TYPE 1" ); // should use the IType.ClobType Register( DbType.Time, "TIME" ); } + /// <summary></summary> public override string AddColumnString { ! get { return "add"; } } ! /// <summary> ! /// ! /// </summary> ! /// <param name="sequenceName"></param> ! /// <returns></returns> ! public override string GetSequenceNextValString( string sequenceName ) { ! return string.Format( "select gen_id({0}, 1 ) from RDB$DATABASE", sequenceName ); } ! /// <summary> ! /// ! /// </summary> ! /// <param name="sequenceName"></param> ! /// <returns></returns> ! public override string GetCreateSequenceString( string sequenceName ) { ! return string.Format( "create generator {0}", sequenceName ); } ! /// <summary> ! /// ! /// </summary> ! /// <param name="sequenceName"></param> ! /// <returns></returns> ! public override string GetDropSequenceString( string sequenceName ) { ! return string.Format( "drop generator {0}", sequenceName ); } + /// <summary></summary> public override bool SupportsSequences { ! get { return true; } } } ! } \ No newline at end of file Index: OracleDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/OracleDialect.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** OracleDialect.cs 16 Aug 2004 05:30:58 -0000 1.5 --- OracleDialect.cs 31 Dec 2004 17:07:24 -0000 1.6 *************** *** 1,26 **** - using System; - using NHibernate.SqlCommand; ! namespace NHibernate.Dialect { /// <summary> /// An SQL dialect for Oracle, compatible with Oracle 8. /// </summary> ! public class OracleDialect : Oracle9Dialect { ! public OracleDialect() : base() { } ! ! public override JoinFragment CreateOuterJoinFragment() { return new OracleJoinFragment(); } ! public override CaseFragment CreateCaseFragment() { ! return new DecodeCaseFragment(this); } } ! } --- 1,27 ---- using NHibernate.SqlCommand; ! namespace NHibernate.Dialect { /// <summary> /// An SQL dialect for Oracle, compatible with Oracle 8. /// </summary> ! public class OracleDialect : Oracle9Dialect { ! /// <summary></summary> ! public OracleDialect() : base() { } ! ! /// <summary></summary> ! public override JoinFragment CreateOuterJoinFragment() { return new OracleJoinFragment(); } ! /// <summary></summary> ! public override CaseFragment CreateCaseFragment() { ! return new DecodeCaseFragment( this ); } } ! } \ No newline at end of file Index: SybaseDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** SybaseDialect.cs 29 Oct 2004 05:52:44 -0000 1.11 --- SybaseDialect.cs 31 Dec 2004 17:07:24 -0000 1.12 *************** *** 1,14 **** ! using System; ! using System.Data; ! ! namespace NHibernate.Dialect { /// <summary> /// An SQL dialect compatible with Sybase. /// </summary> ! public class SybaseDialect : Dialect { ! ! public SybaseDialect() : base() { ! /* Java mapping was: --- 1,14 ---- ! using NHibernate.Cfg; + namespace NHibernate.Dialect + { /// <summary> /// An SQL dialect compatible with Sybase. /// </summary> ! public class SybaseDialect : Dialect ! { ! /// <summary></summary> ! public SybaseDialect() : base() ! { /* Java mapping was: *************** *** 29,62 **** Types.BLOB, "IMAGE" ); Types.CLOB, "TEXT" ); ! */ ! ! DefaultProperties[Cfg.Environment.OuterJoin] = "true"; } ! public override string AddColumnString { get { return "add"; } } ! public override string NullColumnString { get { return " null"; } } ! public override bool QualifyIndexName { get { return false; } } ! ! public override bool SupportsForUpdate { get { return false; } } ! ! public override bool SupportsIdentityColumns { get { return true; } } ! public override string IdentitySelectString { get { return "select @@identity"; } } ! public override string IdentityColumnString { ! get { return "IDENTITY NOT NULL"; } } ! public override string NoColumnsInsertString { get { return "DEFAULT VALUES"; } } --- 29,82 ---- Types.BLOB, "IMAGE" ); Types.CLOB, "TEXT" ); ! */ ! ! DefaultProperties[ Environment.OuterJoin ] = "true"; } ! /// <summary></summary> ! public override string AddColumnString ! { get { return "add"; } } ! ! /// <summary></summary> ! public override string NullColumnString ! { get { return " null"; } } ! ! /// <summary></summary> ! public override bool QualifyIndexName ! { get { return false; } } ! ! /// <summary></summary> ! public override bool SupportsForUpdate ! { get { return false; } } ! ! /// <summary></summary> ! public override bool SupportsIdentityColumns ! { get { return true; } } ! ! /// <summary></summary> ! public override string IdentitySelectString ! { get { return "select @@identity"; } } ! ! /// <summary></summary> ! public override string IdentityColumnString ! { ! get { return "IDENTITY NOT NULL"; } } ! /// <summary></summary> ! public override string NoColumnsInsertString ! { get { return "DEFAULT VALUES"; } } Index: TypeNames.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/TypeNames.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TypeNames.cs 19 Jul 2004 03:24:02 -0000 1.4 --- TypeNames.cs 31 Dec 2004 17:07:24 -0000 1.5 *************** *** 1,9 **** - using System; using System.Collections; using System.Data; - using NHibernate.Util; ! namespace NHibernate.Dialect { /// <summary> --- 1,7 ---- using System.Collections; using System.Data; using NHibernate.Util; ! namespace NHibernate.Dialect { /// <summary> *************** *** 40,44 **** /// </code> /// </remarks> ! public class TypeNames { private string placeholder; --- 38,42 ---- /// </code> /// </remarks> ! public class TypeNames { private string placeholder; *************** *** 50,54 **** /// </summary> /// <param name="placeholder">String to be replaced by actual size/length in type names</param> ! public TypeNames(string placeholder) { this.placeholder = placeholder; --- 48,52 ---- /// </summary> /// <param name="placeholder">String to be replaced by actual size/length in type names</param> ! public TypeNames( string placeholder ) { this.placeholder = placeholder; *************** *** 60,66 **** /// <param name="typecode">the type key</param> /// <returns>the default type name associated with the specified key</returns> ! public string Get(DbType typecode) { ! return (string) defaults[typecode]; } --- 58,64 ---- /// <param name="typecode">the type key</param> /// <returns>the default type name associated with the specified key</returns> ! public string Get( DbType typecode ) { ! return ( string ) defaults[ typecode ]; } *************** *** 74,88 **** /// default type name otherwise /// </returns> ! public string Get(DbType typecode, int size) { ! IDictionary map = weighted[typecode] as IDictionary; ! if (map != null && map.Count > 0) { ! foreach(int entrySize in map.Keys) { ! if (size <= entrySize) { return StringHelper.ReplaceOnce( ! (string) map[entrySize], placeholder, size.ToString() --- 72,86 ---- /// default type name otherwise /// </returns> ! public string Get( DbType typecode, int size ) { ! IDictionary map = weighted[ typecode ] as IDictionary; ! if( map != null && map.Count > 0 ) { ! foreach( int entrySize in map.Keys ) { ! if( size <= entrySize ) { return StringHelper.ReplaceOnce( ! ( string ) map[ entrySize ], placeholder, size.ToString() *************** *** 91,95 **** } } ! return StringHelper.ReplaceOnce(Get(typecode), placeholder, size.ToString()); } --- 89,93 ---- } } ! return StringHelper.ReplaceOnce( Get( typecode ), placeholder, size.ToString() ); } *************** *** 98,118 **** /// </summary> /// <param name="typecode">the type key</param> ! /// <param name="size">the (maximum) type size/length</param> /// <param name="value">The associated name</param> ! public void Put(DbType typecode, int capacity, string value) { SequencedHashMap map = weighted[ typecode ] as SequencedHashMap; ! if (map==null) { ! weighted[typecode] = map = new SequencedHashMap(); } ! map[capacity] = value; } ! public void Put(DbType typecode, string value) { ! defaults[typecode] = value; } } ! } --- 96,121 ---- /// </summary> /// <param name="typecode">the type key</param> ! /// <param name="capacity">the (maximum) type size/length</param> /// <param name="value">The associated name</param> ! public void Put( DbType typecode, int capacity, string value ) { SequencedHashMap map = weighted[ typecode ] as SequencedHashMap; ! if( map == null ) { ! weighted[ typecode ] = map = new SequencedHashMap(); } ! map[ capacity ] = value; } ! /// <summary> ! /// ! /// </summary> ! /// <param name="typecode"></param> ! /// <param name="value"></param> ! public void Put( DbType typecode, string value ) { ! defaults[ typecode ] = value; } } ! } \ No newline at end of file Index: GenericDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/GenericDialect.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** GenericDialect.cs 19 Jul 2004 03:24:02 -0000 1.9 --- GenericDialect.cs 31 Dec 2004 17:07:24 -0000 1.10 *************** *** 1,38 **** - using System; using System.Data; ! using NHibernate.SqlTypes; ! ! namespace NHibernate.Dialect { /// <summary> /// A generic SQL dialect which may or may not work on any actual databases /// </summary> ! public class GenericDialect : Dialect { ! public GenericDialect() : base() { ! Register( DbType.AnsiStringFixedLength, "CHAR($1)"); Register( DbType.AnsiString, "VARCHAR($1)" ); ! Register( DbType.Binary, "VARBINARY($1)"); ! Register( DbType.Boolean, "BIT" ); Register( DbType.Byte, "TINYINT" ); ! Register( DbType.Currency, "MONEY"); ! Register( DbType.Date, "DATE"); Register( DbType.DateTime, "DATETIME" ); ! Register( DbType.Decimal, "DECIMAL(19, $1)"); ! Register( DbType.Double, "DOUBLE PRECISION" ); Register( DbType.Guid, "UNIQUEIDENTIFIER" ); Register( DbType.Int16, "SMALLINT" ); Register( DbType.Int32, "INT" ); Register( DbType.Int64, "BIGINT" ); ! Register( DbType.Single, "REAL" ); ! Register( DbType.StringFixedLength, "NCHAR($1)"); Register( DbType.String, "NVARCHAR($1)" ); Register( DbType.Time, "TIME" ); ! } ! public override string AddColumnString { get { return "add column"; } --- 1,37 ---- using System.Data; ! namespace NHibernate.Dialect { /// <summary> /// A generic SQL dialect which may or may not work on any actual databases /// </summary> ! public class GenericDialect : Dialect { ! /// <summary></summary> ! public GenericDialect() : base() { ! Register( DbType.AnsiStringFixedLength, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR($1)" ); ! Register( DbType.Binary, "VARBINARY($1)" ); ! Register( DbType.Boolean, "BIT" ); Register( DbType.Byte, "TINYINT" ); ! Register( DbType.Currency, "MONEY" ); ! Register( DbType.Date, "DATE" ); Register( DbType.DateTime, "DATETIME" ); ! Register( DbType.Decimal, "DECIMAL(19, $1)" ); ! Register( DbType.Double, "DOUBLE PRECISION" ); Register( DbType.Guid, "UNIQUEIDENTIFIER" ); Register( DbType.Int16, "SMALLINT" ); Register( DbType.Int32, "INT" ); Register( DbType.Int64, "BIGINT" ); ! Register( DbType.Single, "REAL" ); ! Register( DbType.StringFixedLength, "NCHAR($1)" ); Register( DbType.String, "NVARCHAR($1)" ); Register( DbType.Time, "TIME" ); ! } ! /// <summary></summary> ! public override string AddColumnString { get { return "add column"; } *************** *** 40,42 **** } ! } --- 39,41 ---- } ! } \ No newline at end of file Index: MySQLDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** MySQLDialect.cs 6 Dec 2004 03:39:23 -0000 1.21 --- MySQLDialect.cs 31 Dec 2004 17:07:24 -0000 1.22 *************** *** 2,20 **** using System.Data; using System.Text; - using NHibernate.SqlCommand; using NHibernate.SqlTypes; using NHibernate.Util; ! namespace NHibernate.Dialect { /// <summary> /// A SQL dialect for MySQL /// </summary> ! public class MySQLDialect : Dialect { ! public MySQLDialect() : base() { ! Register( DbType.AnsiStringFixedLength, "CHAR(255)"); Register( DbType.AnsiStringFixedLength, 255, "CHAR($1)" ); Register( DbType.AnsiStringFixedLength, 65535, "TEXT" ); --- 2,21 ---- using System.Data; using System.Text; using NHibernate.SqlCommand; using NHibernate.SqlTypes; using NHibernate.Util; + using Environment = NHibernate.Cfg.Environment; ! namespace NHibernate.Dialect { /// <summary> /// A SQL dialect for MySQL /// </summary> ! public class MySQLDialect : Dialect { ! /// <summary></summary> ! public MySQLDialect() : base() { ! Register( DbType.AnsiStringFixedLength, "CHAR(255)" ); Register( DbType.AnsiStringFixedLength, 255, "CHAR($1)" ); Register( DbType.AnsiStringFixedLength, 65535, "TEXT" ); *************** *** 24,38 **** Register( DbType.AnsiString, 65535, "TEXT" ); Register( DbType.AnsiString, 16777215, "MEDIUMTEXT" ); ! Register( DbType.Binary, "LONGBLOB"); ! Register( DbType.Binary, 127, "TINYBLOB"); ! Register( DbType.Binary, 65535, "BLOB"); ! Register( DbType.Binary, 16777215, "MEDIUMBLOB"); ! Register( DbType.Boolean, "TINYINT(1)" ); Register( DbType.Byte, "TINYINT UNSIGNED" ); ! Register( DbType.Currency, "MONEY"); ! Register( DbType.Date, "DATE"); Register( DbType.DateTime, "DATETIME" ); Register( DbType.Decimal, "NUMERIC(19,5)" ); ! Register( DbType.Decimal, 19, "NUMERIC(19, $1)"); Register( DbType.Double, "DOUBLE" ); Register( DbType.Guid, "VARCHAR(40)" ); --- 25,39 ---- Register( DbType.AnsiString, 65535, "TEXT" ); Register( DbType.AnsiString, 16777215, "MEDIUMTEXT" ); ! Register( DbType.Binary, "LONGBLOB" ); ! Register( DbType.Binary, 127, "TINYBLOB" ); ! Register( DbType.Binary, 65535, "BLOB" ); ! Register( DbType.Binary, 16777215, "MEDIUMBLOB" ); ! Register( DbType.Boolean, "TINYINT(1)" ); Register( DbType.Byte, "TINYINT UNSIGNED" ); ! Register( DbType.Currency, "MONEY" ); ! Register( DbType.Date, "DATE" ); Register( DbType.DateTime, "DATETIME" ); Register( DbType.Decimal, "NUMERIC(19,5)" ); ! Register( DbType.Decimal, 19, "NUMERIC(19, $1)" ); Register( DbType.Double, "DOUBLE" ); Register( DbType.Guid, "VARCHAR(40)" ); *************** *** 40,45 **** Register( DbType.Int32, "INTEGER" ); Register( DbType.Int64, "BIGINT" ); ! Register( DbType.Single, "FLOAT" ); ! Register( DbType.StringFixedLength, "CHAR(255)"); Register( DbType.StringFixedLength, 255, "CHAR($1)" ); Register( DbType.StringFixedLength, 65535, "TEXT" ); --- 41,46 ---- Register( DbType.Int32, "INTEGER" ); Register( DbType.Int64, "BIGINT" ); ! Register( DbType.Single, "FLOAT" ); ! Register( DbType.StringFixedLength, "CHAR(255)" ); Register( DbType.StringFixedLength, 255, "CHAR($1)" ); Register( DbType.StringFixedLength, 65535, "TEXT" ); *************** *** 50,101 **** Register( DbType.String, 16777215, "MEDIUMTEXT" ); Register( DbType.Time, "TIME" ); ! ! DefaultProperties[Cfg.Environment.OuterJoin] = "true"; } ! public override string AddColumnString { ! get{ return "add column"; } } ! public override bool DropConstraints { get { return false; } } ! public override bool QualifyIndexName { get { return false; } } ! ! public override bool SupportsIdentityColumns { get { return true; } } ! public override string IdentitySelectString { ! get {return "SELECT LAST_INSERT_ID()";} } public override string IdentityColumnString { ! get{return "NOT NULL AUTO_INCREMENT"; } } ! protected override char CloseQuote { ! get { return '`';} } protected override char OpenQuote { ! get { return '`';} } ! public override bool SupportsLimit { ! get { return true; } } public override bool PreferLimit { --- 51,113 ---- Register( DbType.String, 16777215, "MEDIUMTEXT" ); Register( DbType.Time, "TIME" ); ! ! DefaultProperties[ Environment.OuterJoin ] = "true"; } ! /// <summary></summary> ! public override string AddColumnString { ! get { return "add column"; } } ! ! /// <summary></summary> ! public override bool DropConstraints { get { return false; } } ! ! /// <summary></summary> ! public override bool QualifyIndexName { get { return false; } } ! ! /// <summary></summary> ! public override bool SupportsIdentityColumns { get { return true; } } ! ! /// <summary></summary> public override string IdentitySelectString { ! get { return "SELECT LAST_INSERT_ID()"; } } + /// <summary></summary> public override string IdentityColumnString { ! get { return "NOT NULL AUTO_INCREMENT"; } } ! /// <summary></summary> protected override char CloseQuote { ! get { return '`'; } } + /// <summary></summary> protected override char OpenQuote { ! get { return '`'; } } ! /// <summary></summary> ! public override bool SupportsLimit { ! get { return true; } } + /// <summary></summary> public override bool PreferLimit { *************** *** 103,107 **** } ! public override SqlString GetLimitString(SqlString querySqlString) { Parameter p1 = new Parameter(); --- 115,124 ---- } ! /// <summary> ! /// ! /// </summary> ! /// <param name="querySqlString"></param> ! /// <returns></returns> ! public override SqlString GetLimitString( SqlString querySqlString ) { Parameter p1 = new Parameter(); *************** *** 115,144 **** 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) { ! string cols = String.Join(StringHelper.CommaSpace, foreignKey); ! return new StringBuilder(30) ! .Append(" add index (") ! .Append(cols) ! .Append("), add constraint ") ! .Append(constraintName) ! .Append(" foreign key (") ! .Append(cols) ! .Append(") references ") ! .Append(referencedTable) ! .Append(" (") ! .Append( String.Join(StringHelper.CommaSpace, primaryKey) ) ! .Append(')') .ToString(); } } ! } --- 132,169 ---- SqlStringBuilder pagingBuilder = new SqlStringBuilder(); ! pagingBuilder.Add( querySqlString ); ! pagingBuilder.Add( " limit " ); ! pagingBuilder.Add( p1 ); ! pagingBuilder.Add( ", " ); ! pagingBuilder.Add( p2 ); return pagingBuilder.ToSqlString(); } ! /// <summary> ! /// ! /// </summary> ! /// <param name="constraintName"></param> ! /// <param name="foreignKey"></param> ! /// <param name="referencedTable"></param> ! /// <param name="primaryKey"></param> ! /// <returns></returns> ! public override string GetAddForeignKeyConstraintString( string constraintName, string[ ] foreignKey, string referencedTable, string[ ] primaryKey ) { ! string cols = String.Join( StringHelper.CommaSpace, foreignKey ); ! return new StringBuilder( 30 ) ! .Append( " add index (" ) ! .Append( cols ) ! .Append( "), add constraint " ) ! .Append( constraintName ) ! .Append( " foreign key (" ) ! .Append( cols ) ! .Append( ") references " ) ! .Append( referencedTable ) ! .Append( " (" ) ! .Append( String.Join( StringHelper.CommaSpace, primaryKey ) ) ! .Append( ')' ) .ToString(); } } ! } \ No newline at end of file Index: PostgreSQLDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** PostgreSQLDialect.cs 29 Oct 2004 05:52:44 -0000 1.11 --- PostgreSQLDialect.cs 31 Dec 2004 17:07:24 -0000 1.12 *************** *** 1,55 **** - using System; using System.Data; ! using NHibernate.SqlCommand; using NHibernate.SqlTypes; ! namespace NHibernate.Dialect { /// <summary> /// An SQL dialect for PostgreSQL. /// </summary> ! public class PostgreSQLDialect : Dialect { ! public PostgreSQLDialect() { ! Register( DbType.AnsiStringFixedLength, "char(255)"); Register( DbType.AnsiStringFixedLength, 8000, "char($1)" ); Register( DbType.AnsiString, "varchar(255)" ); Register( DbType.AnsiString, 8000, "varchar($1)" ); ! Register( DbType.AnsiString, 2147483647, "text"); Register( DbType.Binary, 2147483647, "bytea" ); ! Register( DbType.Boolean, "boolean" ); Register( DbType.Byte, "int2" ); ! Register( DbType.Currency, "decimal(16,4)"); ! Register( DbType.Date, "date"); Register( DbType.DateTime, "timestamp" ); Register( DbType.Decimal, "decimal(19,5)" ); ! Register( DbType.Decimal, 19, "decimal(18, $1)"); ! Register( DbType.Double, "float8" ); Register( DbType.Int16, "int2" ); Register( DbType.Int32, "int4" ); Register( DbType.Int64, "int8" ); ! Register( DbType.Single, "float4" ); ! Register( DbType.StringFixedLength, "char(255)"); ! Register( DbType.StringFixedLength, 4000, "char($1)"); Register( DbType.String, "varchar(255)" ); Register( DbType.String, 4000, "varchar($1)" ); ! Register( DbType.String, 1073741823, "text" );// Register( DbType.Time, "time" ); ! DefaultProperties[Cfg.Environment.OuterJoin] = "true"; } ! public override string AddColumnString { get { return "add column"; } } ! public override bool DropConstraints { get { return false; } } public override string CascadeConstraintsString { --- 1,58 ---- using System.Data; ! using NHibernate.Cfg; using NHibernate.SqlCommand; using NHibernate.SqlTypes; ! namespace NHibernate.Dialect { /// <summary> /// An SQL dialect for PostgreSQL. /// </summary> ! public class PostgreSQLDialect : Dialect { ! /// <summary></summary> ! public PostgreSQLDialect() { ! Register( DbType.AnsiStringFixedLength, "char(255)" ); Register( DbType.AnsiStringFixedLength, 8000, "char($1)" ); Register( DbType.AnsiString, "varchar(255)" ); Register( DbType.AnsiString, 8000, "varchar($1)" ); ! Register( DbType.AnsiString, 2147483647, "text" ); Register( DbType.Binary, 2147483647, "bytea" ); ! Register( DbType.Boolean, "boolean" ); Register( DbType.Byte, "int2" ); ! Register( DbType.Currency, "decimal(16,4)" ); ! Register( DbType.Date, "date" ); Register( DbType.DateTime, "timestamp" ); Register( DbType.Decimal, "decimal(19,5)" ); ! Register( DbType.Decimal, 19, "decimal(18, $1)" ); ! Register( DbType.Double, "float8" ); Register( DbType.Int16, "int2" ); Register( DbType.Int32, "int4" ); Register( DbType.Int64, "int8" ); ! Register( DbType.Single, "float4" ); ! Register( DbType.StringFixedLength, "char(255)" ); ! Register( DbType.StringFixedLength, 4000, "char($1)" ); Register( DbType.String, "varchar(255)" ); Register( DbType.String, 4000, "varchar($1)" ); ! Register( DbType.String, 1073741823, "text" ); // Register( DbType.Time, "time" ); ! DefaultProperties[ Environment.OuterJoin ] = "true"; } ! /// <summary></summary> ! public override string AddColumnString { get { return "add column"; } } ! /// <summary></summary> ! public override bool DropConstraints { get { return false; } } + /// <summary></summary> public override string CascadeConstraintsString { *************** *** 57,91 **** } ! public override string GetSequenceNextValString(string sequenceName) { return string.Concat( "select nextval ('", sequenceName, "')" ); } ! public override string GetCreateSequenceString(string sequenceName) { return "create sequence " + sequenceName; } ! public override string GetDropSequenceString(string sequenceName) { return "drop sequence " + sequenceName; } ! ! public override bool SupportsSequences { get { return true; } } public override bool SupportsLimit { ! get { return true; } } ! public override bool BindLimitParametersInReverseOrder { get { return true; } } ! public override SqlString GetLimitString(SqlString querySqlString) { Parameter p1 = new Parameter(); --- 60,117 ---- } ! /// <summary> ! /// ! /// </summary> ! /// <param name="sequenceName"></param> ! /// <returns></returns> ! public override string GetSequenceNextValString( string sequenceName ) { return string.Concat( "select nextval ('", sequenceName, "')" ); } ! /// <summary> ! /// ! /// </summary> ! /// <param name="sequenceName"></param> ! /// <returns></returns> ! public override string GetCreateSequenceString( string sequenceName ) { return "create sequence " + sequenceName; } ! /// <summary> ! /// ! /// </summary> ! /// <param name="sequenceName"></param> ! /// <returns></returns> ! public override string GetDropSequenceString( string sequenceName ) { return "drop sequence " + sequenceName; } ! ! /// <summary></summary> ! public override bool SupportsSequences { get { return true; } } + /// <summary></summary> public override bool SupportsLimit { ! get { return true; } } ! /// <summary></summary> ! public override bool BindLimitParametersInReverseOrder { get { return true; } } ! /// <summary> ! /// ! /// </summary> ! /// <param name="querySqlString"></param> ! /// <returns></returns> ! public override SqlString GetLimitString( SqlString querySqlString ) { Parameter p1 = new Parameter(); *************** *** 99,111 **** SqlStringBuilder pagingBuilder = new SqlStringBuilder(); ! pagingBuilder.Add(querySqlString); ! pagingBuilder.Add(" limit "); ! pagingBuilder.Add(p1); ! pagingBuilder.Add(" offset "); ! pagingBuilder.Add(p2); return pagingBuilder.ToSqlString(); } public override bool SupportsForUpdateOf { --- 125,138 ---- SqlStringBuilder pagingBuilder = new SqlStringBuilder(); ! pagingBuilder.Add( querySqlString ); ! pagingBuilder.Add( " limit " ); ! pagingBuilder.Add( p1 ); ! pagingBuilder.Add( " offset " ); ! pagingBuilder.Add( p2 ); return pagingBuilder.ToSqlString(); } + /// <summary></summary> public override bool SupportsForUpdateOf { *************** *** 113,115 **** } } ! } --- 140,142 ---- } } ! } \ No newline at end of file Index: QueryFunctionStandard.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/QueryFunctionStandard.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** QueryFunctionStandard.cs 6 Apr 2004 02:26:53 -0000 1.1 --- QueryFunctionStandard.cs 31 Dec 2004 17:07:24 -0000 1.2 *************** *** 1,4 **** - using System; - using NHibernate.Engine; using NHibernate.Hql; --- 1,2 ---- *************** *** 19,27 **** private IType returnType = null; public QueryFunctionStandard() { } ! public QueryFunctionStandard(IType returnType) { this.returnType = returnType; --- 17,30 ---- private IType returnType = null; + /// <summary></summary> public QueryFunctionStandard() { } ! /// <summary> ! /// ! /// </summary> ! /// <param name="returnType"></param> ! public QueryFunctionStandard( IType returnType ) { this.returnType = returnType; *************** *** 30,51 **** #region IQueryFunctionInfo Members ! public IType QueryFunctionType(IType columnType, IMapping mapping) { ! if(returnType==null) return columnType; return returnType; } public bool IsFunctionArgs { ! get{ return true;} } public bool IsFunctionNoArgsUseParanthesis { ! get { return true;} } #endregion } ! } --- 33,65 ---- #region IQueryFunctionInfo Members ! /// <summary> ! /// ! /// </summary> ! /// <param name="columnType"></param> ! /// <param name="mapping"></param> ! /// <returns></returns> ! public IType QueryFunctionType( IType columnType, IMapping mapping ) { ! if( returnType == null ) ! { ! return columnType; ! } return returnType; } + /// <summary></summary> public bool IsFunctionArgs { ! get { return true; } } + /// <summary></summary> public bool IsFunctionNoArgsUseParanthesis { ! get { return true; } } #endregion } ! } \ No newline at end of file Index: DB2Dialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DB2Dialect.cs 8 Nov 2004 00:18:00 -0000 1.5 --- DB2Dialect.cs 31 Dec 2004 17:07:20 -0000 1.6 *************** *** 1,39 **** - using System; using System.Data; using System.Text; ! using NHibernate.SqlCommand; using NHibernate.SqlTypes; ! namespace NHibernate.Dialect { - /// <summary> /// An SQL dialect for DB2. /// </summary> ! public class DB2Dialect : Dialect { ! ! public DB2Dialect() { ! Register( DbType.AnsiStringFixedLength, "CHAR(254)"); Register( DbType.AnsiStringFixedLength, 254, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR(254)" ); Register( DbType.AnsiString, 8000, "VARCHAR($1)" ); ! Register( DbType.AnsiString, 2147483647, "CLOB"); Register( DbType.Binary, 2147483647, "BLOB" ); ! Register( DbType.Boolean, "SMALLINT" ); Register( DbType.Byte, "SMALLINT" ); ! Register( DbType.Currency, "DECIMAL(16,4)"); ! Register( DbType.Date, "DATE"); Register( DbType.DateTime, "TIMESTAMP" ); Register( DbType.Decimal, "DECIMAL(19,5)" ); ! Register( DbType.Decimal, 19, "DECIMAL(19, $1)"); ! Register( DbType.Double, "DOUBLE" ); Register( DbType.Int16, "SMALLINT" ); Register( DbType.Int32, "INTEGER" ); Register( DbType.Int64, "BIGINT" ); ! Register( DbType.Single, "REAL" ); ! Register( DbType.StringFixedLength, "CHAR(254)"); ! Register( DbType.StringFixedLength, 254, "CHAR($1)"); Register( DbType.String, "VARCHAR(254)" ); Register( DbType.String, 8000, "VARCHAR($1)" ); --- 1,38 ---- using System.Data; using System.Text; ! using NHibernate.Cfg; using NHibernate.SqlCommand; using NHibernate.SqlTypes; ! namespace NHibernate.Dialect { /// <summary> /// An SQL dialect for DB2. /// </summary> ! public class DB2Dialect : Dialect ! { ! /// <summary></summary> ! public DB2Dialect() { ! Register( DbType.AnsiStringFixedLength, "CHAR(254)" ); Register( DbType.AnsiStringFixedLength, 254, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR(254)" ); Register( DbType.AnsiString, 8000, "VARCHAR($1)" ); ! Register( DbType.AnsiString, 2147483647, "CLOB" ); Register( DbType.Binary, 2147483647, "BLOB" ); ! Register( DbType.Boolean, "SMALLINT" ); Register( DbType.Byte, "SMALLINT" ); ! Register( DbType.Currency, "DECIMAL(16,4)" ); ! Register( DbType.Date, "DATE" ); Register( DbType.DateTime, "TIMESTAMP" ); Register( DbType.Decimal, "DECIMAL(19,5)" ); ! Register( DbType.Decimal, 19, "DECIMAL(19, $1)" ); ! Register( DbType.Double, "DOUBLE" ); Register( DbType.Int16, "SMALLINT" ); Register( DbType.Int32, "INTEGER" ); Register( DbType.Int64, "BIGINT" ); ! Register( DbType.Single, "REAL" ); ! Register( DbType.StringFixedLength, "CHAR(254)" ); ! Register( DbType.StringFixedLength, 254, "CHAR($1)" ); Register( DbType.String, "VARCHAR(254)" ); Register( DbType.String, 8000, "VARCHAR($1)" ); *************** *** 41,113 **** Register( DbType.Time, "TIME" ); ! DefaultProperties[Cfg.Environment.OuterJoin] = "true"; } ! public override string AddColumnString { get { return "add column"; } } ! public override bool DropConstraints { get { return false; } } ! public override bool SupportsIdentityColumns { get { return true; } } ! public override string IdentitySelectString { get { return "values IDENTITY_VAL_LOCAL()"; } } ! public override string IdentityColumnString { get { return "not null generated by default as identity"; } } ! public override string IdentityInsertString { get { return "default"; } } ! ! public override string GetSequenceNextValString(string sequenceName) { return "values nextval for " + sequenceName; } ! public override string GetCreateSequenceString(string sequenceName) { return "create sequence " + sequenceName; } ! public override string GetDropSequenceString(string sequenceName) { return string.Concat( "drop sequence ", sequenceName, " restrict" ); } ! ! public override bool SupportsSequences { get { return true; } } public override bool SupportsLimit { ! get { return true; } } ! public override bool BindLimitParametersInReverseOrder { get { return false; } } public override bool UseMaxForLimit { ! get { return true; } } ! public override SqlString GetLimitString(SqlString querySqlString) { Parameter p1 = new Parameter(); --- 40,130 ---- Register( DbType.Time, "TIME" ); ! DefaultProperties[ Environment.OuterJoin ] = "true"; } ! /// <summary></summary> ! public override string AddColumnString { get { return "add column"; } } ! /// <summary></summary> ! public override bool DropConstraints { get { return false; } } ! /// <summary></summary> ! public override bool SupportsIdentityColumns { get { return true; } } ! /// <summary></summary> ! public override string IdentitySelectString { get { return "values IDENTITY_VAL_LOCAL()"; } } ! /// <summary></summary> ! public override string IdentityColumnString { get { return "not null generated by default as identity"; } } ! /// <summary></summary> ! public override string IdentityInsertString { get { return "default"; } } ! ! /// <summary></summary> ! public override string GetSequenceNextValString( string sequenceName ) { return "values nextval for " + sequenceName; } ! /// <summary></summary> ! public override string GetCreateSequenceString( string sequenceName ) { return "create sequence " + sequenceName; } ! /// <summary></summary> ! public override string GetDropSequenceString( string sequenceName ) { return string.Concat( "drop sequence ", sequenceName, " restrict" ); } ! ! /// <summary></summary> ! public override bool SupportsSequences { get { return true; } } + /// <summary></summary> public override bool SupportsLimit { ! get { return true; } } ! /// <summary></summary> ! public override bool BindLimitParametersInReverseOrder { get { return false; } } + /// <summary></summary> public override bool UseMaxForLimit { ! get { return true; } } ! /// <summary> ! /// ! /// </summary> ! /// <param name="querySqlString"></param> ! /// <returns></returns> ! public override SqlString GetLimitString( SqlString querySqlString ) { Parameter p1 = new Parameter(); *************** *** 127,136 **** // build a new query and extract the order by part ! foreach (object sqlPart in querySqlString.SqlParts) { string sqlPartString = sqlPart as string; ! if (sqlPartString != null) { ! if (sqlPartString.ToLower().TrimStart().StartsWith("order by")) { isInOrderBy = true; --- 144,153 ---- // build a new query and extract the order by part ! foreach( object sqlPart in querySqlString.SqlParts ) { string sqlPartString = sqlPart as string; ! if( sqlPartString != null ) { ! if( sqlPartString.ToLower().TrimStart().StartsWith( "order by" ) ) { isInOrderBy = true; *************** *** 138,163 **** } ! if (isInOrderBy && sqlPart is string) { ! orderByStringBuilder.Append((string)sqlPart); } else { ! pagingBuilder.AddObject(sqlPart); } } ! string rownumClause = "rownumber() over(" + orderByStringBuilder.ToString() + ") as rownum, "; // Add the rownum clause first, right after the original select ! pagingBuilder.Insert(1, rownumClause); // Add the rest ! pagingBuilder.Insert(0, "select * from ("); ! pagingBuilder.Add(") as tempresult "); // Add the where clause ! pagingBuilder.Add(" where rownum between "); ! pagingBuilder.Add(p1); ! pagingBuilder.Add(" and "); ! pagingBuilder.Add(p2); ! return pagingBuilder.ToSqlString(); } --- 155,180 ---- } ! if( isInOrderBy && sqlPart is string ) { ! orderByStringBuilder.Append( ( string ) sqlPart ); } else { ! pagingBuilder.AddObject( sqlPart ); } } ! string rownumClause = "rownumber() over(" + orderByStringBuilder.ToString() + ") as rownum, "; // Add the rownum clause first, right after the original select ! pagingBuilder.Insert( 1, rownumClause ); // Add the rest ! pagingBuilder.Insert( 0, "select * from (" ); ! pagingBuilder.Add( ") as tempresult " ); // Add the where clause ! pagingBuilder.Add( " where rownum between " ); ! pagingBuilder.Add( p1 ); ! pagingBuilder.Add( " and " ); ! pagingBuilder.Add( p2 ); ! return pagingBuilder.ToSqlString(); } Index: MsSql2000Dialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** MsSql2000Dialect.cs 29 Oct 2004 05:52:44 -0000 1.20 --- MsSql2000Dialect.cs 31 Dec 2004 17:07:24 -0000 1.21 *************** *** 1,30 **** - using System; using System.Data; ! using NHibernate.SqlCommand; - using NHibernate.SqlTypes; ! namespace NHibernate.Dialect { /// <summary> /// An SQL dialect compatible with Microsoft SQL Server 2000. /// </summary> ! public class MsSql2000Dialect: Dialect { ! ! public MsSql2000Dialect() : base() { ! Register( DbType.AnsiStringFixedLength, "CHAR(255)"); Register( DbType.AnsiStringFixedLength, 8000, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR(255)" ); Register( DbType.AnsiString, 8000, "VARCHAR($1)" ); ! Register( DbType.AnsiString, 2147483647, "TEXT"); ! Register( DbType.Binary, "VARBINARY(8000)"); ! Register( DbType.Binary, 8000, "VARBINARY($1)"); Register( DbType.Binary, 2147483647, "IMAGE" ); ! Register( DbType.Boolean, "BIT" ); Register( DbType.Byte, "TINYINT" ); ! Register( DbType.Currency, "MONEY"); ! Register( DbType.Date, "DATETIME"); Register( DbType.DateTime, "DATETIME" ); // TODO: figure out if this is the good way to fix the problem --- 1,28 ---- using System.Data; ! using NHibernate.Cfg; using NHibernate.SqlCommand; ! namespace NHibernate.Dialect { /// <summary> /// An SQL dialect compatible with Microsoft SQL Server 2000. /// </summary> ! public class MsSql2000Dialect : Dialect { ! /// <summary></summary> ! public MsSql2000Dialect() : base() { ! Register( DbType.AnsiStringFixedLength, "CHAR(255)" ); Register( DbType.AnsiStringFixedLength, 8000, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR(255)" ); Register( DbType.AnsiString, 8000, "VARCHAR($1)" ); ! Register( DbType.AnsiString, 2147483647, "TEXT" ); ! Register( DbType.Binary, "VARBINARY(8000)" ); ! Register( DbType.Binary, 8000, "VARBINARY($1)" ); Register( DbType.Binary, 2147483647, "IMAGE" ); ! Register( DbType.Boolean, "BIT" ); Register( DbType.Byte, "TINYINT" ); ! Register( DbType.Currency, "MONEY" ); ! Register( DbType.Date, "DATETIME" ); Register( DbType.DateTime, "DATETIME" ); // TODO: figure out if this is the good way to fix the problem *************** *** 35,40 **** // sql-type="decimal(20,5)" if they need to do that. The Decimal parameter and ddl will get generated // correctly with minimal work. ! Register( DbType.Decimal, "DECIMAL(19,5)" ); ! Register( DbType.Decimal, 19, "DECIMAL(19, $1)"); Register( DbType.Double, "DOUBLE PRECISION" ); //synonym for FLOAT(53) Register( DbType.Guid, "UNIQUEIDENTIFIER" ); --- 33,38 ---- // sql-type="decimal(20,5)" if they need to do that. The Decimal parameter and ddl will get generated // correctly with minimal work. ! Register( DbType.Decimal, "DECIMAL(19,5)" ); ! Register( DbType.Decimal, 19, "DECIMAL(19, $1)" ); Register( DbType.Double, "DOUBLE PRECISION" ); //synonym for FLOAT(53) Register( DbType.Guid, "UNIQUEIDENTIFIER" ); *************** *** 43,74 **** Register( DbType.Int64, "BIGINT" ); Register( DbType.Single, "REAL" ); //synonym for FLOAT(24) ! Register( DbType.StringFixedLength, "NCHAR(255)"); ! Register( DbType.StringFixedLength, 4000, "NCHAR($1)"); Register( DbType.String, "NVARCHAR(255)" ); Register( DbType.String, 4000, "NVARCHAR($1)" ); Register( DbType.String, 1073741823, "NTEXT" ); Register( DbType.Time, "DATETIME" ); ! ! DefaultProperties[Cfg.Environment.OuterJoin] = "true"; } ! public override string AddColumnString { get { return "add"; } } ! public override string NullColumnString { get { return " null"; } } ! public override bool QualifyIndexName { get { return false; } } ! ! public override bool SupportsForUpdate { get { return false; } } ! /// <summary> /// MsSql allows the use of SELECT SCOPE_IDENTITY to be in the same --- 41,78 ---- Register( DbType.Int64, "BIGINT" ); Register( DbType.Single, "REAL" ); //synonym for FLOAT(24) ! Register( DbType.StringFixedLength, "NCHAR(255)" ); ! Register( DbType.StringFixedLength, 4000, "NCHAR($1)" ); Register( DbType.String, "NVARCHAR(255)" ); Register( DbType.String, 4000, "NVARCHAR($1)" ); Register( DbType.String, 1073741823, "NTEXT" ); Register( DbType.Time, "DATETIME" ); ! ! DefaultProperties[ Environment.OuterJoin ] = "true"; } ! /// <summary></summary> ! public override string AddColumnString { get { return "add"; } } ! ! /// <summary></summary> ! public override string NullColumnString { get { return " null"; } } ! ! /// <summary></summary> ! public override bool QualifyIndexName { get { return false; } } ! ! /// <summary></summary> ! public override bool SupportsForUpdate { get { return false; } } ! /// <summary> /// MsSql allows the use of SELECT SCOPE_IDENTITY to be in the same *************** *** 78,84 **** public override bool SupportsIdentitySelectInInsert { ! get { return true; } } ! /// <summary> /// Add the Identity Select string to the Insert Sql. --- 82,88 ---- public override bool SupportsIdentitySelectInInsert { ! get { return true; } } ! /// <summary> /// Add the Identity Select string to the Insert Sql. *************** *** 86,113 **** /// <param name="insertSql">The SqlString that contains the INSERT sql.</param> /// <returns>A new SqlString with <c>; SELECT SCOPE_IDENTITY()</c> at the end.</returns> ! public override SqlString AddIdentitySelectToInsert(SqlString insertSql) { return insertSql.Append( "; " + IdentitySelectString ); } ! public override bool SupportsIdentityColumns { get { return true; } } ! public override string IdentitySelectString { get { return "select SCOPE_IDENTITY()"; } } ! public override string IdentityColumnString { ! get { return "IDENTITY NOT NULL"; } } ! public override string NoColumnsInsertString { get { return "DEFAULT VALUES"; } ! } public override int MaxAnsiStringSize { --- 90,123 ---- /// <param name="insertSql">The SqlString that contains the INSERT sql.</param> /// <returns>A new SqlString with <c>; SELECT SCOPE_IDENTITY()</c> at the end.</returns> ! public override SqlString AddIdentitySelectToInsert( SqlString insertSql ) { return insertSql.Append( "; " + IdentitySelectString ); } ! /// <summary></summary> ! public override bool SupportsIdentityColumns { get { return true; } } ! /// <summary></summary> ! public override string IdentitySelectString { get { return "select SCOPE_IDENTITY()"; } } ! ! /// <summary></summary> ! public override string IdentityColumnString { ! get { return "IDENTITY NOT NULL"; } } ! /// <summary></summary> ! public override string NoColumnsInsertString { get { return "DEFAULT VALUES"; } ! } + /// <summary></summary> public override int MaxAnsiStringSize { *************** *** 115,147 **** } ! public override int MaxBinaryBlobSize { get { return 2147483647; } } ! public override int MaxBinarySize { get { return 8000; } ! } ! public override int MaxStringClobSize { get { return 1073741823; } } public override int MaxStringSize { ! get { return 4000; } } ! protected override char CloseQuote { ! get { return ']';} } protected override char OpenQuote { ! get { return '[';} } --- 125,162 ---- } ! /// <summary></summary> ! public override int MaxBinaryBlobSize { get { return 2147483647; } } ! ! /// <summary></summary> public override int MaxBinarySize { get { return 8000; } ! } ! /// <summary></summary> ! public override int MaxStringClobSize { get { return 1073741823; } } + /// <summary></summary> public override int MaxStringSize { ! get { return 4000; } } ! /// <summary></summary> protected override char CloseQuote { ! get { return ']'; } } + /// <summary></summary> protected override char OpenQuote { ! get { return '['; } } *************** *** 155,170 **** /// is an OpenQuote. /// </remarks> ! protected override string Quote(string name) { ! return OpenQuote + name.Replace(CloseQuote.ToString(), new string(CloseQuote, 2) ) + CloseQuote; } ! public override string UnQuote(string quoted) { ! if ( IsQuoted(quoted) ) ! quoted = quoted.Substring(1,quoted.Length - 2); ! return quoted.Replace( new string(CloseQuote, 2), CloseQuote.ToString() ); } } ! } --- 170,192 ---- /// is an OpenQuote. /// </remarks> ! protected override string Quote( string name ) { ! return OpenQuote + name.Replace( CloseQuote.ToString(), new string( CloseQuote, 2 ) ) + CloseQuote; } ! /// <summary> ! /// ! /// </summary> ! /// <param name="quoted"></param> ! /// <returns></returns> ! public override string UnQuote( string quoted ) { ! if( IsQuoted( quoted ) ) ! { ! quoted = quoted.Substring( 1, quoted.Length - 2 ); ! } ! return quoted.Replace( new string( CloseQuote, 2 ), CloseQuote.ToString() ); } } ! } \ No newline at end of file Index: Oracle9Dialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/Oracle9Dialect.cs,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** Oracle9Dialect.cs 29 Oct 2004 05:52:44 -0000 1.15 --- Oracle9Dialect.cs 31 Dec 2004 17:07:24 -0000 1.16 *************** *** 1,7 **** - using System; using System.Collections; using System.Data; ! using System.Text; ! using NHibernate.Engine; using NHibernate.Hql; --- 1,5 ---- using System.Collections; using System.Data; ! using NHibernate.Cfg; using NHibernate.Engine; using NHibernate.Hql; *************** *** 9,15 **** using NHibernate.SqlTypes; using NHibernate.Type; - using NHibernate.Util; ! namespace NHibernate.Dialect { /// <summary> --- 7,12 ---- using NHibernate.SqlTypes; using NHibernate.Type; ! namespace NHibernate.Dialect { /// <summary> *************** *** 17,45 **** /// An SQL dialect for Oracle 9 /// </summary> ! public class Oracle9Dialect : Dialect { - private readonly IDictionary aggregateFunctions = new Hashtable(); ! public Oracle9Dialect() : base() { // DefaultProperties[Cfg.Environment.UseStreamsForBinary] = "true"; ! DefaultProperties[Cfg.Environment.OuterJoin] = "true"; ! Register( DbType.AnsiStringFixedLength, "CHAR(255)"); Register( DbType.AnsiStringFixedLength, 2000, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR2(255)" ); Register( DbType.AnsiString, 2000, "VARCHAR2($1)" ); ! Register( DbType.AnsiString, 2147483647, "CLOB"); // should use the IType.ClobType ! Register( DbType.Binary, "RAW(2000)"); ! Register( DbType.Binary, 2000, "RAW($1)"); Register( DbType.Binary, 2147483647, "BLOB" ); ! Register( DbType.Boolean, "NUMBER(1,0)" ); Register( DbType.Byte, "NUMBER(3,0)" ); ! Register( DbType.Currency, "NUMBER(19,1)"); ! Register( DbType.Date, "DATE"); Register( DbType.DateTime, "DATE" ); ! Register( DbType.Decimal, "NUMBER(19,5)" ); ! Register( DbType.Decimal, 19, "NUMBER(19, $1)"); // having problems with both ODP and OracleClient from MS not being able // to read values out of a field that is DOUBLE PRECISION --- 14,42 ---- /// An SQL dialect for Oracle 9 /// </summary> ! public class Oracle9Dialect : Dialect { private readonly IDictionary aggregateFunctions = new Hashtable(); ! /// <summary></summary> ! public Oracle9Dialect() : base() { // DefaultProperties[Cfg.Environment.UseStreamsForBinary] = "true"; ! DefaultProperties[ Environment.OuterJoin ] = "true"; ! Register( DbType.AnsiStringFixedLength, "CHAR(255)" ); Register( DbType.AnsiStringFixedLength, 2000, "CHAR($1)" ); Register( DbType.AnsiString, "VARCHAR2(255)" ); Register( DbType.AnsiString, 2000, "VARCHAR2($1)" ); ! Register( DbType.AnsiString, 2147483647, "CLOB" ); // should use the IType.ClobType ! Register( DbType.Binary, "RAW(2000)" ); ! Register( DbType.Binary, 2000, "RAW($1)" ); Register( DbType.Binary, 2147483647, "BLOB" ); ! Register( DbType.Boolean, "NUMBER(1,0)" ); Register( DbType.Byte, "NUMBER(3,0)" ); ! Register( DbType.Currency, "NUMBER(19,1)" ); ! Register( DbType.Date, "DATE" ); Register( DbType.DateTime, "DATE" ); ! Register( DbType.Decimal, "NUMBER(19,5)" ); ! Register( DbType.Decimal, 19, "NUMBER(19, $1)" ); // having problems with both ODP and OracleClient from MS not being able // to read values out of a field that is DOUBLE PRECISION *************** *** 51,56 **** Register( DbType.Int64, "NUMBER(20,0)" ); Register( DbType.Single, "FLOAT(24)" ); ! Register( DbType.StringFixedLength, "NCHAR(255)"); ! Register( DbType.StringFixedLength, 2000, "NCHAR($1)"); Register( DbType.String, "NVARCHAR2(255)" ); Register( DbType.String, 2000, "NVARCHAR2($1)" ); --- 48,53 ---- Register( DbType.Int64, "NUMBER(20,0)" ); Register( DbType.Single, "FLOAT(24)" ); ! Register( DbType.StringFixedLength, "NCHAR(255)" ); ! Register( DbType.StringFixedLength, 2000, "NCHAR($1)" ); Register( DbType.String, "NVARCHAR2(255)" ); Register( DbType.String, 2000, "NVARCHAR2($1)" ); *************** *** 59,128 **** // add all the functions from the base into this instance ! foreach(DictionaryEntry de in base.AggregateFunctions) { ! aggregateFunctions[de.Key] = de.Value; } ! aggregateFunctions["trunc"] = new QueryFunctionStandard(); ! aggregateFunctions["round"] = new QueryFunctionStandard(); ! aggregateFunctions["abs"] = new QueryFunctionStandard(NHibernate.Int32); ! aggregateFunctions["sign"] = new QueryFunctionStandard(NHibernate.Int32); ! aggregateFunctions["ceil"] = new QueryFunctionStandard(NHibernate.Int32); ! aggregateFunctions["floor"] = new QueryFunctionStandard(NHibernate.Int32); ! aggregateFunctions["sqrt"] = new QueryFunctionStandard(); ! aggregateFunctions["exp"] = new QueryFunctionStandard(); ! aggregateFunctions["ln"] = new QueryFunctionStandard(); ! aggregateFunctions["sin"] = new QueryFunctionStandard(); ! aggregateFunctions["sinh"] = new QueryFunctionStandard(); ! aggregateFunctions["cos"] = new QueryFunctionStandard(); ! aggregateFunctions["cosh"] = new QueryFunctionStandard(); ! aggregateFunctions["tan"] = new QueryFunctionStandard(); ! aggregateFunctions["tanh"] = new QueryFunctionStandard(); ! aggregateFunctions["stddev"] = new QueryFunctionStandard(); ! aggregateFunctions["variance"] = new QueryFunctionStandard(); ! aggregateFunctions["sysdate"] = new SysdateQueryFunctionInfo(); ! aggregateFunctions["lastday"] = new QueryFunctionStandard(NHibernate.Date); } ! ! public override string AddColumnString { get { return "add"; } } ! public override string GetSequenceNextValString(string sequenceName) { return "select " + sequenceName + ".nextval from dual"; } ! ! public override string GetCreateSequenceString(string sequenceName) { return "create sequence " + sequenceName + " INCREMENT BY 1 START WITH... [truncated message content] |