[pgsqlclient-checkins] SF.net SVN: pgsqlclient: [175] trunk/PostgreSqlClient/source/PostgreSql/Data
Status: Inactive
Brought to you by:
carlosga_fb
From: <car...@us...> - 2006-06-26 16:00:55
|
Revision: 175 Author: carlosga_fb Date: 2006-06-26 09:00:41 -0700 (Mon, 26 Jun 2006) ViewCVS: http://svn.sourceforge.net/pgsqlclient/?rev=175&view=rev Log Message: ----------- Changes on internal data type handling Modified Paths: -------------- trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnection.cs trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnectionInternal.cs trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnectionStringBuilder.cs Modified: trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnection.cs =================================================================== --- trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnection.cs 2006-06-19 21:31:25 UTC (rev 174) +++ trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnection.cs 2006-06-26 16:00:41 UTC (rev 175) @@ -360,6 +360,9 @@ this.StateChange(this, new StateChangeEventArgs(ConnectionState.Closed, state)); } + // Grab Data Types Oid's from the database if requested + this.connectionInternal.FetchDatabaseOids(); + // Add Info message event handler this.connectionInternal.Database.InfoMessage = new InfoMessageCallback(this.OnInfoMessage); Modified: trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnectionInternal.cs =================================================================== --- trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnectionInternal.cs 2006-06-19 21:31:25 UTC (rev 174) +++ trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnectionInternal.cs 2006-06-26 16:00:41 UTC (rev 175) @@ -257,6 +257,38 @@ return isValid; } + internal void FetchDatabaseOids() + { + if (this.database.Options.UseDatabaseOids) + { + string sql = "SELECT oid FROM pg_type WHERE typname=@typeName"; + + if (this.owningConnection != null) + { + PgCommand command = new PgCommand(sql, this.owningConnection); + command.Parameters.Add("@typeName", PgDbType.VarChar); + + // After the connection gets established we should update the Data Types collection oids + foreach (PgType type in this.Database.DataTypes) + { + command.Parameters["@typeName"].Value = type.Name; + + object realOid = command.ExecuteScalar(); + + if (realOid != null) + { + if (Convert.ToInt32(realOid) != type.Oid) + { + type.UpdateOid(Convert.ToInt32(realOid)); + } + } + } + + command.Dispose(); + } + } + } + #endregion - } + } } \ No newline at end of file Modified: trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnectionStringBuilder.cs =================================================================== --- trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnectionStringBuilder.cs 2006-06-19 21:31:25 UTC (rev 174) +++ trunk/PostgreSqlClient/source/PostgreSql/Data/PostgreSqlClient/PgConnectionStringBuilder.cs 2006-06-26 16:00:41 UTC (rev 175) @@ -55,6 +55,7 @@ synonyms.Add("min pool size", "min pool size"); synonyms.Add("max pool size", "max pool size"); synonyms.Add("ssl", "ssl"); + synonyms.Add("use database oids", "use database oids"); return synonyms; } @@ -135,8 +136,14 @@ set { this.SetValue("Ssl", value); } } - #endregion + public bool UseDatabaseOids + { + get { return this.GetBoolean("use database oids"); } + set { this.SetValue("use database oids", value); } + } + #endregion + #region \xB7 Constructors \xB7 public PgConnectionStringBuilder() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |