

2012-02-21 

	Npgsql 2.0.11.93 (beta3)
	
	
	Highlights: 
	
		In this beta version we can highlight two features:
		
		1. Improved connection pooling. Thanks to Andrew heads up we improved Npgsql connection pool code
		to avoid locks as much as possible. This gave us 30%+ performance improvements.
		
		2. LOG: unexpected EOF on client connection" messages are gone! After so much time causing those messages 
		to appear on server log, Npgsql finally got rid of them.
		
	
	
	
	Fixed bugs:
	
		[#1010992] System.Double to DOUBLE PRECISION conversion bug. Thanks Udo Liess for excellent report, 
		test case and fix.
		
		Fixed "LOG: unexpected EOF on client connection" messages  appearing in postgresql log. See
		http://fxjr.blogspot.com/2011/12/fixed-log-unexpected-eof-on-client.html
		for more information.

		[#1011100] NpgsqlParameter and DBNull Value. Now  NpgsqlParameter changes the dbtype accordingly to 
		the value assigned to it unless the dbtype has been assigned explicitly.
		
		[#1011101] LINQ to entities timestamptz does not accept DateTimeOffset or DateTime. Thanks Misha Sugakov
		for patch and testing.
		
		[#1011138] Connection pooling performance suffers under heavy load.  Rewritten connector pool logic in 
		order to keep lock for much less time and also with a higher granularity.  Thanks Andrew for heads up.
		
		[#1011102]  DateTimeOffset/TimeSpan mapping problem on EF 4.1, .NET 4, using code first.  
		Thanks Mirko Geffken for patch.



2011-09-28 

    Npgsql 2.0.11.92 (beta2)
    
    
    Fixed bugs:
    
        [#1011008] Add PhysicalAddress (MAC Address) support to Npgsql. Thanks Gildas for patche and test case.    
        
        [#1010977] Add application_name support to connection string. Thanks Chris Coleman for patch.
        
        [ npgsql-Bugs-1011018 ] Invalid Cast with DbType.Time Parameter. Thanks Patrick Earl for patch.  
        Also added test case to reproduce the problem.
        
        [#1011021] Support DbMetaDataCollectionNames.ReservedWords. Thanks Patrick Earl for patch.
        
        Fixed problem with last update about Password as byte[]. Reverted type of Password property of 
        NpgsqlConnectionStringBuilder to String again. It was changed from String to byte[] which was
        causing problems with previous client code. There is a new
        property called PasswordAsByteArray for those willing to use the
        byte[] property. Thanks Dan Shoubridge for heads up.

        [#1011044]. Fixed missing NpgsqlDataReader.GetTimeSpan() method.
        Added unit test case to cover this method.

        Added patch from Patrick Earl. Thanks, Patrick!
        http://pgfoundry.org/forum/message.php?msg_id=1014749
        This was implemented to support more of the NHibernate test suite.

        src/NpgsqlTypes/NpgsqlTypeConverters.cs:
        [npgsql-Patches-1011012 ] Australian Date and Time Formats. Thanks Hans Peter for patch

        Fixes to VS.Net project properties. Thanks Philippe Le Grand for heads up.
      

2011-03-24

    Npgsql 2.0.11.91 (beta1)
    
    
    Important Notice:
    
        This is a beta release intended to test some critical fixes added since last stable release.
        Special attention should be given to connection pool interactions. We improved connection pool of Npgsql. Previous implementation was letting connections to be leaked. Now this implementation keeps a reference to all the connections and keeps better track of them. We also improved connection validation from pool before delivering it to the user. This may fix problems where users were reporting strange data from new connections.
        Another attention should be paid to Dataset and DataAdapter operations. We changed some internals of NpgsqlCommandBuilder which may cause problems. We'd like you to check if you get problems. For more information check this thread: http://pgfoundry.org/tracker/?func=detail&atid=590&aid=1010973&group_id=1000140
        
    
    Fixed bugs:
    
        [#1010951] AllowPartiallyTrustedCallers for npgsql assemblies.
        [#1010973] specified cast is invalid - datetime fields. In order to fix this bug I had to disable some code in NpgsqlCommandBuilder. Watch out for possible side effects.
        Fixed problems with SSPI authentication when the password had some non ascii characteres. Also, Npgsql supports to authenticate with an user name other than the current logged one. Thanks Ahmed Shinwari for tests and patch.
        [#1010997] Consider using System.Threading.Timer instead of System.Timers.Timer. Thanks Alex A Ermoshenko for feedback, patch and tests.
        NpgsqlConnector.CancelRequest leaks Connector. NpgsqlConnector.CancelRequest creates a connector to cancel the running request, but does not close it. More info at: http://pgfoundry.org/forum/forum.php?thread_id=10059&forum_id=519 Thanks David Leaver for patch.
        Exception when closing connection. If your connection is in the Ready state and the stream is actually broken NpgsqlReadyState.Close will throw an exception when trying to write to the stream. More info can be found at: http://pgfoundry.org/forum/forum.php?thread_id=10066&forum_id=519 Thanks David Leaver for the patch.
		In Multi-threaded applications there is a race condition that can occur which will result in a broken connection being re-added to the pool. Thanks David Leaver for patches. More information here: http://pgfoundry.org/forum/forum.php?thread_id=10067&forum_id=519
		[#1010986] Endless recursion on hanging connection in ProcessBackendResponsesEnum. Thanks Gildas for feedback and tests.
		
	Enhancements:
	   
	   Added performance patch to GetKeyName method. Thanks Dan Smith for patch. http://lists.pgfoundry.org/pipermail/npgsql-devel/2011-February/001117.html
	   

2010-11-05

    Npgsql 2.0.11
    
    Fixed bugs:
    
        [#1010863] GroupBy Expression with two or more parameters creates a sql error
        [#1010860] [EF, 2.0.10.0] Invalid query is generated
        Added fix to return CLR type when working with NpgsqlInet and IPAddress types in NpgsqlDataReader.GetValue(). See http://pgfoundry.org/forum/message.php?msg_id=1006360 for more info about that.
        [#1010921] Data corrupted transferring bytea data from PostgreSQL 9 server. Thanks Mathieu Fenniak for patch. See http://pgfoundry.org/pipermail/npgsql-devel/2010-January/001057.html. This patch should have been applied a long time ago. It was my fault (Francisco) Sorry for that :(
        
    New Features:
        [#1010650] DbConnection.GetSchema: Metadata for Indexes

2010-08-01

    Npgsql 2.0.10
    
    
    Important Notice:
    
        Possible breaking change: This release adds support for NpgsqlParameter.NpgsqlValue. This means that Npgsql specific types will be returned by this property. NpgsqlParameter.Value will return *only* CLR types. So, if you are expecting to work with Npgsql specific types, please use NpgsqlParameter.NpgsqlValue property. Sorry for this problem. This change will help Npgsql to conform better with ADO.NET DataSet and other helper classes.
        
        This version fixes a multithread problem where even using a different connection for each thread it was possible to corrupt data received by Npgsql. This bug was introduced in 2.0.9 and it is now fixed. If you are getting "The backend sent an unrecognized response" exceptions, there is a high probability that this bug is causing it. Please, upgrade.
        
        
    Fixed bugs:
    
        [#1010796] Notification thread not released after copy from stdin.
        Fixed problems when updating data with DataTable. See http://pgfoundry.org/forum/message.php?msg_id=1005598
        [#1010804] Endless loop in BitString? 
        Fix multi-level join generated sql
        [#1010829] Fix support for CommandBehavior.SequentialAccess with multiple columns.
        [#1010825] support derive parameters for parameterless functions
        support null items in arrays
        NpgsqlSchema.ssdl: provide default value during model generation
        [#1010776] for a prepared command, ExecuteNonQuery() does not return.
        [#1010787] Inserting an array does not work in a prepared statement.
        [#1010798] Cast-Exception with NpgsqlTimeStamp to System.DateTime.
        
    
    New Features:
    
        Added VS2010 project file
        Support for Time types and DateTimeOffset types in Entity Framework
        Josh Cooley ported a lot of Mono tests so we may expect to have more conformance versions of Npgsql on next releases.
        This version adds NpgsqlParameter.NpgsqlValue property. Now, developers who want to work with Npgsql specific types can use this property. See Important Notice about possible breaking change this might cause.
        


2010-04-13

    Npgsql 2.0.9
    
    This release had a lot of changes and all users are encouraged to update to this version.
    
    
    Fixed problems with socket run buffer out of memory when reading large chuncks of data of Large Object. 
IOException with an error code of 10055 (WSAENOBUFS). 

    [#1010746] NpgsqlDate.AddMonths(m): IndexOutOfRangeException. Thanks Gildas (prime.gildas @nospam@ gmail.com) for patch 
and testcase. Also thanks Sibylle Koczian (nulla.epistola@nospam@ web.de) for patch reviewing and testing.

    Added a fix for caseinsensitive parameter names in query strings. Thanks Antonio Leiva for the patch!
    
    Added a fix for 64 bits windows.The type of the SecHandle structure was hardcoded to int 32 bit int values which was giving
problems on 64 bits windows. Now uses an architecture independente pointer type. Thanks Brar Piening for patch and heads up.

    Fixed another commandtimeout problem. This time, creating an internal Npgsqlcommand was reseting it. See http://pgfoundry.org/forum/message.php?msg_id=1005814 for more info. 
    
Thanks David Leaver (dave @nospam@ smartrak.co.nz) for heads up and test case.

    Readded ability to log the string being written to server. It was removed in the last optimization by mistake.
    
    Added an small performance improvement by creating a shared buffer for Int32 and Int16 reading. This way, buffers don't need  to be recreated all the time.
    
    [#1010779] Respect CommandTimeout in first function call w/ string parameter. Patch applied. Thanks Noah Misch (noah.misch	  @nospam@ channeladvisor.com) for tests and patch.
    
    [#1010788] NpgsqlCommand and UpdatedRowSource property.  Now NpgsqlCommands created through NpgsqlCommandBuilder will have by default UpdatedRowSource property as UpdateRowSource.None.


    
    
    New Features:
    
    Added FxCop, Gendarme and NAnt libraries. Now it is much easier to build Npgsql from command line. Just run build.sh or build.bat from inside Npgsql/src folder.
    Added a lot of functionality and fixes to Npgsql.build based on Daniel Nauck AspSQLProvider.build. Thanks Daniel for heads up.
    
    [#1010764] Support for abstime (used with postgres time traver). Thanks Tapio Haapala (tapio.haapala @nospam@f-solutions.fi) for patch.
    [#1010777] String syntax for function call parameters. Thanks Noah Misch (noah.misch @nospam@ channeladvisor.com) for patch.
   
    Added VS.Net 2010 project file.
    
    [#1010780] Reduce use of utility queries for function calls (CommandType.StoredProcedure) Thanks Noah Mishc (noah.misch @nospam@ channeladvisor.com) for patches
  
    SSL Renegotiation: Try to set SSL negotiation to 0. See http://lists.pgfoundry.org/pipermail/npgsql-devel/2010-February/001065.html for more information. Thanks Albe Laurenz for heads up and patch.
	
	New build system. Npgsql now generates automatically the AssemblyInfo.cs file based on version number passed as parameter in build process.
In order to do that, just run the following: ./build.sh -D:CCNetLabel=2.0.9.0 ( if using windows, the command is build.bat) and it will be generated an Npgsql assembly with the version specified. This is a working in progress and all feedback is welcome.


2009-12-28


    Npgsql 2.0.8
    
    This is a bug fix release.
    
    
    
    Highlights for this release:
        
        Work in progress for the bug reported in message 1005698. Josh is working to provide a much more solid fix for this.
        Josh started to add support for better type handling of Npgsql types and CLR types. This way, Npgsql users will be able to get values in either Npgsql specific types, like NpgsqlTimeTZ, or CLR type, like DateTime.
         
        
        
    
    New Features:
    
        Added support for Snapshot Isolation Level.
        
        Npgsql/NpgsqlDataReader.cs: Support for provider specific types (with compatibility flag on change to NpgsqlInterval). This adds initial support for better datatype handling for Npgsql specific types and CLR types.
        

    Bugs fixed:
    
        Initial support for bug fix reported in message 1005698.  The fix changes valid sql that produced	  incorrect results to sometimes valid sql that produced correct results when valid.	Also contains work in progress to resolve the invalid sql. (Josh Cooley)
        [#1010727] Entity framework exception if null inserted in XML column Changed null handling so that the value is only type cast when used in a select clause.	
        [#1010673] syntax error in queries generated by entity framework 2.0.6 ms.net sp1 Changed the filter handling to better work when subqueries in joins.
        [#1010687] Spelling error in NpgsqlCommand Object command timeout exception.
        Added method AddWithValue and made Add(String, object) obsolete and this was causing ambiguity problems with Add and NpgsqlDbType and DbType. See http://pgfoundry.org/tracker/index.php?func=detail&aid=1010714&group_id=1000140&atid=590 and http://pgfoundry.org/tracker/index.php?func=detail&aid=1010715&group_id=1000140&atid=592 for more details. Thanks Gildas (prime.gildas @nospam@ gmail.com)	  for heads up and discussion about that. Note that the issue of adding a new method which takes a DbType parameter is not finished yet. We should check if this is still needed. Updated documentation to not use DbType in the examples. 
        Bug: Money to Decimal conversion. Fixed problem where negative money values weren't being returned correctly. Thanks Denis Moinel (denis.moinel @nospam@ gmail.com) for heads up and patch. See http://pgfoundry.org/forum/message.php?msg_id=1005647 for more info.
        Fix time zone parsing bug reported in message 1005627.	Now handle negative timezones correctly.
        Fixed a bug where Npgsql wasn't honoring the connectiontimeout on Startup method. See http://pgfoundry.org/forum/message.php?msg_id=1005603 for more info. Thanks chaitra p (cpadsalgi @nospam@ peak6.com) for heads up.


         

2009-11-15

    Npgsql 2.0.7
    
    
    This is a bug fix only release. We are planning to add more features in the next build.
    
    
    Bugs fixed: 
    
        [#1010527] Fix query timeout connection corruption.
        [#1010700] Capture parameter names with NpgsqlCommandBuilder.DeriveParameters.  Thanks Brian Schloz (bschloz @nospam@ hotmail.com) for patch.  Also added nunit testcase.
        [#1010668] Npgsql ConnectionStringBuilder provides no connectionstring properties. Now Npgsql correctly reports default connectionstring properties. Thanks Alaric Dailey for heads up	  and patch!
        Fixed bug when trying to retrieve a date value with -infinity value. See more here:	  http://pgfoundry.org/forum/message.php?msg_id=1005249 Thanks Andrus Moor for bug report and test case and Laurenz Albe for reporting the commit where the infinity date value was added.
        [#1010679] NpgsqlCommand.GetClearCommandText speed optimization. Thanks Dmitri Maximov (dmitri.maximov @nospam@ dataobjects.net) for patch.

2009-07-11

    Npgsql 2.0.6
    
    Bugs fixed:
    
      [#1010666] CommandTimeout does gets reset to 20 when a Connection object is assigned to it
      [#1010665] Entity Framework Self Referencing Table Bug
      [#1010663] Npgsql 2.0.5 entity framework: cast of numeric values in german culture enviroments fails
      
      [#1010652] Command checker for output vars is using not performing query
      
      [#1010635] Error trying to connect to Postgresql 7.3. Fixed. Now, Npgsql correctly handles standard_conforming_strings. Thanks Jon Hanna for feedback and Juan Carlos Segui for bug report.
      Use period for decimal seperator between seconds and milliseconds.  Reported by several people. (Josh Cooley)
      Changed mechanism used to calculate fractional seconds so they get represented correctly in string format. (Josh Cooley)
      Fix bugs constructor and property bugs in NpgsqlInterval and NpgsqlTime as reported by Otto H. (Josh Cooley)
      Force InvariantCulture for fractional seconds in ToString (thanks to Otto H) (Josh Cooley)
      [#1010649] DataReader.FieldCount returning -1. Fixed. Thanks Dario Quintana for bug report.
      Give type to NULL literals.  See message 1005019.  Bug reported by Eric Adv. (Josh Cooley)
      [#1010663] - Fix decimal character for decimal numbers.


      This build should fix the problems people is having with long running queries being cancelled even when the developer sets a high timeout.
      Thanks Adriaan, Npgsql now performs function checks much faster on setups which have too many functions as now Npgsql sends a query which allows server to use indexes to find the function.
      Josh Cooley added fixes to some culture sensible queries. He also fixed problems with unions and NULL values in columns

      Visual Studio Designer support (not working right now)
      Josh Cooley started to add visual studio designer support to Npgsql. It is not working yet. We are using excellent Robert Simpson's sqlite provider code as a base to ours. Thank you Robert!
      




2009-05-06

    Npgsql 2.0.5
    
    Bugs fixed:
    
      [#1010379] NpgsqlDataAdapter.Update - Return value is wrong. Thanks Christian Holzner for feedback and testcase.
	  Fixed regression with prepared statements with parameters with sizes. The size of parameters were being added in the statement tail. Thanks Rodrigo Cuevas (bellinux at gmail dot com) for heads up and Lee Ibbotson (lee.ibbotson @nospam@ sequence.co.uk) for patch. This also solves ticket 11 of Daniel's asp.net providers. http://dev.nauck-it.de/aspsqlprovider/ticket/11.
	  [npgsql-help][1004683] RE: Statement execution returns incorrect DataSet Improved check of valid connection to consume all the value returned. This may be causing Npgsql to let some data in the stream.  Thanks Andy Berryman for heads up.
	  [#1010379] NpgsqlDataAdapter.Update - Return value is wrong. Thanks Christian Holzner for feedback and testcase.
	  [#1010558] Added callback to provide client certificates for ssl authentication.  Thanks Frank Bollack (frank.bollack @nospam@ visapix.de) for patch!
	  
	  [#1010599] - update xml docs (fix typo in Clone) Thanks to Lars Carlsson
	  [#1010267] - read all bytes in a copydata message.
	  [#1010567] failed LargeObject operation causes NotSupportedException. This patch may also work as a workaround for any seek exception problem. We still have to investigate why Npgsql is letting behind data in the stream.
	  
	  Josh Cooley added a lot of fixes for Transactions support and Entity Framework.
	  
    
2009-02-28

    Npgsql 2.0.4
    
    [ npgsql-Bugs-1010562 ] Bytea optimization in 2.0.3 is bad. Thanks Jon Hanna.
    
    Fixed a problem with decimal values and localization. Npgsql was sending the value incorrectly.

2009-02-24

    Npgsql 2.0.3

    [#1010496] GetOrdinal Implementation differs from Interface Standard. The two deviations were:
    1. We were not katakana-width insensitive.
    2. We did not throw IndexOutOfRangeException if the field is not found.
    Both fixes could break running code, so we should be alert for that possibility.
    Added support to standard_conforming_strings server setting. Thanks Jon Hanna
    Added BitString support. Thanks Jon Hanna
    [#1010543] Parameter value 'Int32.MinValue' throw NpgsqlException(ERROR: 22003: integer out of range). Thanks David Bachmann, Josh Cooley and Dario Quintana for all help and feedback to fix this.
    [#1010538] The length type modifier for fixed-length character type cast is wrong. Thanks Jon Hanna
    Drop overloaded functions and procedures since they cause problems for edmgen. Thanks Josh Cooley
    Fixed relationships with a simpler query.  Thanks to Eugênio Ferreira Lima <eugenioflima at gmail.com>. Thanks Josh Cooley
    Better support for datetime values. Thanks Jon Hanna.



2008-12-15

    Npgsql 2.0.2
    
Fixes:

    Fix the fix for datetime.MinValue and MaxValue. Only MinValue was fixed. Now both Min and Max are fixed. Thanks Andrus Moor for heads up.(fxjr)
    Fixed problem with parameter sizes and prepared statements.(fxjr)
    [#1010488] NgsqlParameter of type containing DBNull values throws NullReferenceException
    [#1010521] NpgsqlInterval should be quoted.
    Datetime with negative values (thanks to Mathieu Fenniak <mathieu@fenniak.net>) and singular values  such as "1 day"
    [#1010495] Bad performance calling a (empty) function very often.
  
	  
New additions:
    
    Added documentation about how to use Npgsql with Provider Factory. Thanks Alaric for heads up.
    Ensure refcursors work with System.Transactions. (Josh)
    
    On this release, Josh Cooley fixed some bugs on Entity Framework support and System.Transactions.
      
    For more information about those and other fixes, please, see our ChangeLog.
    
  
2008-10-04

    Npgsql2 2.0.1
    
    This version brings some minor bugfixes since 2.0 release.
    
    Fixed a bug where boolean values were being quoted. This was giving problems with edmgen tool for entityframework support.
    Fix for a date and infinity values comparison.
From patch:

"This check for Datetime.minvalue and maxvalue is needed in order to
workaround a problem when comparing date values with infinity.
This is a known issue with postgresql and it is reported here:
http://archives.postgresql.org/pgsql-general/2008-10/msg00535.php
Josh's solution to add cast is documented here:
http://pgfoundry.org/forum/message.php?msg_id=1004118"

Thanks Josh for fix idea.

[#1010488] NgsqlParameter of type containing DBNull values throws NullReferenceException. Thanks Christ Akkermans for testcase.

Changed some NpgsqlTypes namespace structs in order to get better Npgsql1 compatibility in order to have Npgsql2 included in future Mono releases. Thanks Josh Cooley for last minute fix on those changes.

Fixed SqlInsertGenerator: Add schema qualification to table name when fetching sequence values. Thanks Josh Cooley for fix.


2008-09-12
    Npgsql2 RC2
    
    This version contains some fixes and updates for latest entity framework release.
    We are already in feature freeze and not so many things were added this time.
    
    Highlights include:
    
    Npgsql2 rc2 now supports .NET 3.5 sp1 with Entity Framework support.  We support model generation by the command line edmgen.exe tool.  This requires the Npgsql be registered in the provider <DbProviderFactories> section of machine.config.
    
    A lot of fixes were done on connection pool handling. Also, when running under Mono, Npgsql wasn't using connection pool. Now it is.
    
    We added some code to better handle threadabort when executing queries with Npgsql. It isn't perfect but is much better than with previous versions.
    

2008-04-07
	Npgsql2 Beta3


	Please note: This release contains changes that will require a recompile of code using it.

New Features:

	Added support for integrated security on windows. In order to use it, just use the connection string parameter: Integrated Security=true. Thanks Brar Piening for patch!
	[#1010216] Support for array handling. Parameters can be of type T[] where T is an already supported type. In addition, parameters of a type that support IEnumerable<T> will be treated as T[], types that support IEnumerable<U> where U supports IEnumerable<T> will be treated as a two-dimensional T[] and so on (though if each U has a different number of T items the result is a jagged array and postgres will hence return an error as it doesn't support jagged arrays). The NpgsqlDbType value NpgsqlDbType.Array should be combined using binary-or to produce an array type (e.g. NpgsqlDbType.Array | NpgsqlDbType.Box is an array of box). Direct support for a type is checked first in determining correct handling so byte[] and string are threated as bytea or text by default, not as byte[] or char[] (string implements IEnumerable<char>). GetValue() will also return an array when appropriate. Support for IEnumerable<T> is write-only as the system cannot determine that you might want e.g. List<Int32> rather than Int32[], but when desired a different collection can be created from the returned array (e.g. List<Int32> myList = new List<Int32>((Int32[])reader.GetValue(0)).

	New types for representing dates and times with the extra information postgres provides beyond that available in DateTime and TimeSpan and allowing for dates outside of the range [0001-01-01T00:00:00 - 9999-12-31T23:59:59] that DateTime allows for. These are still under development and likely to be changed in the near-future, so subsequent beta releases may introduce breaking changes.

	DataReader is now loaded as-needed from the source data. This produces a considerable increase in scalability - in particular very large recordsets will now be much faster and use much less memory, and there is no longer a limit after which the provider consumes all available memory (memory usage remains very low even when reading billions of rows).

	Support for CommandBehavior.SequentialAccess. Note that because of the nature of the encoding used by postgres it is not possible to get a count of pending bytes or chars by calling GetBytes() or GetChars() with a null parameter for the buffer when SequentialAccess is being used (this issue does not affect GetBytes() or GetChars() without SequentialAccess). Beyond this issue, the normal peformance benefits of SequentialAccess are now available to Npgsql users (again, bytea of many MB in size can now be read and only the size of your buffer will affect memory consumption).

	While ADO.NET has never allowed an operation on a connection while an IDataReader is open, a side-effect of Npgsql's previous method of creating NpgsqlDataReader objects is that this would not cause an error when users did so. Now doing so will throw an InvalidOperationException as per the spec, but adding "preloadreader=true;" or "preload reader=true;" etc. to the connection string will result in a backwards-compatible mode, so that existing code taking advantage of this lenience need not suddenly break. This loses all of the performance and scalability gains of the new code so it SHOULD ONLY BE USED IN CASES WHERE EXISTING CODE HAS PROBLEMS and is for backwards-compatibility only. Internal use of datareaders uses the new method in either case. It is also notable that if you have a DataReader open, but all its results have been read, that it does not have this issue, so applications which failed to close NpgsqlDataReader objects but always read all available data will not need to use this backwards-compatibility mode (this is still strictly not allowed by the spec, so authors of such applications are advised that they may experience errors should they try to extend their applications to support other databases).

	Increased resiliance to loss of underlying connection (should e.g. postgres be restarted between Npgsql operations) and stream corruption (should e.g. a thread be aborted during read or write operations).

	Increased resiliance in the face of an unexpected value - still throws an error on Get* but survives the error.

	Dropped support for client encodings other than UTF-8. Since .NET/Mono can always convert a string to and from UTF-8, all supported postgres versions can always accept and send strings in UTF-8, and there are no values that either .NET nor postgres can use as a character that cannot be encoded in UTF-8, the only real result of allowing other encodings is to introduce the possibility of certain bugs that cannot happen with UTF-8. The handling of "ascii" was also not strictly ASCII, in a way in which handling of characters outside the range [U+0000 - U+007F] was undefined and often different betweent the client and the server. The Encoding property of NpgsqlConnectionStringBuilder is left for backwards-compatibility, but will always return "UNICODE", will silently ignore attempts to set it, and is marked as obsolete (so using it will raise warning 618).

	Changed NpgsqlConnection.PostgreSqlVersion to return a System.Version as ServerVersion offered no functionality beyond that offered by Server.Version, a class more familiar to .NET/Mono hackers, and more easily used along with other code. ServerVersion still exists for backwards compatibility, which can be implicitly cast to and from System.Version. Any use of ServerVersion will raise warning 618 on compiling. This change also removes a flaw with ServerVersion.GetHashCode() which was producing poor hash codes that made hash collisions highly likely (because this is used internally for several reasons there would be a needless performance hit if you the same application made use of two servers with different, but clashing, versions. E.g. if you connected to an 8.1.2, 8.2.1, 8.3.0 and a 8.3.1 server retrieving the correct internal information for the first three would be slowed down by their having the same hash codes).

	Removed some dead code and unused namespace imports (slight speed up on compile time).
	
	Duplication of tests for different connection string values, to catch any bugs that only occur with some settings.

	Added support for parameters explicit typing on plain queries (this support was already present when calling functions). Now when sending queries, Npgsql will send the exact typing of the parameters as specified by DbType or NpgsqlDbType enums. This will allow better type matching between client and server. Thanks Jon Hanna, Josh Cooley and Agrinei for heads up. See http://pgfoundry.org/forum/message.php?msg_id=1002944 for more info.

	Added support to search_path in connection string. Thanks Andrus Moor for patch! See here: http://pgfoundry.org/forum/message.php?msg_id=1002859 for discussion.

	Added support to property ProcessID in NpgsqlConnection.
	[#1010312] Code cleanup. Thanks Alaric Dailey for patch.

Bug fixes:
	[#1000396] CommandBehavior.SingleResult and CommandBehavior.SingleRow producing invalid SQL with some queries. While previous fixes had improved this, there are always edge-cases for which the previous method would fail, or worse would silently change the effects of a query. SingleRow and SchemaOnly now do not alter the command set (users can still use LIMIT in a natural way for commands that will only ever be used in this way), but extraneous information is skipped as efficiently as possible.
	[#1008865] Incorrect parsing of OID for lastInsertedOID.
	[#1000721] Failure on reading > 1million rows. See note on lazy-loading of datareader.
	[#1010317] GetSchemaTable() returning first result even if NextResult() has been called between first and subsequent calls.
	[#1000721] Memory Usage, ExecuteReader and > 1 Million Rows - Fixed with functionality change to load datareader as needed.
	[#1000659] Cannot pass array as a parameter to plgsql function call - Fixed with addition of array-handling support.
	[#1002776] The connection string parameter CommandTimeout does't affected on Command.CommandTimeout. Thanks Oleg Ufaev for patch.
	Npgsql used to prepend ":" to parameter names when they were added without it. This was causing problems with Entity framework and also was wrong at first place. Now Npgsql returns the name correctly. (Josh Cooley)
	Fixed problem when calling functions with inout or out parameters. They were being incorrectly added with a column list	which was complained by postgresql server: ERROR: 42601: a column definition list is only allowed for functions returning "record". See http://pgfoundry.org/forum/forum.php?thread_id=1075&forum_id=519 for discussion about this. Thanks very much to Anton Andreev (fn30762 at fmi dot uni-sofia dot bg) for his help providing test cases.
	Fixed NpgsqlSchema.GetDataSourceInformation() which was throwing exception. Thanks Patrik Husfloen (husfloen at gmail dot com) for patch.
	[#1010218] Send 'SET CLIENT_ENCODING TO UNICODE' command only if required. Thanks David Bachmann for patch.

2007-11-06


New Features:

	Added support to use '=' and ';' in connection string values. '=' are added by doubling it: == and ';' in the
	value by enclosing in single or double quotation marks, (if the value in enclosed in quotation marks, a quotation mark can be put in the value by doubling). Thanks Ben Sagal (bensagal at gmail dot com) for patch.

	New NpgsqlCopyIn and NpgsqlCopyOut classes support fast bulk data transfer with COPY FROM STDIN and COPY TO STDOUT commands as explained at http://www.postgresql.org/docs/8.2/interactive/sql-copy.html. Depending on how they are called, they consume or provide byte streams for passing data into and out of a database table (or SELECT), respectively.
	Experimental NpgsqlCopySerializer class is also provided. It takes input field values as objects. It should eventually handle encoding, buffering and different feed formats on behalf of the caller. Hopefully it will evolve into a convenient and secure method of feeding data into database and get accompanied by a deserializer.
	Note that when feeding straight to COPY FROM STDIN operation, you have to provide data using the same encoding as the server uses. Same goes for data read by COPY TO STDOUT. Also, you should be warned that data should be passed one row at a time to work around some server-side discrepancy. Thanks Kalle Hallivuori (kato at iki dot fi)

	Npgsql tests are now easier to run. Up to now, there was a hardcoded path to find nunit assemblies when running the nant tests target. Now, thanks to Gert Driesen (gert dot driesen at ardatis dot com) these assemblies are found without any hardcoded path.

	Added support for DataSourceInformation schema in NpgsqlConnection.GetSchema(string collectionName, string[]
	restrictions). Thanks Rasha (strasha at gmail dot com) for patch.

	Improved NpgsqlCommandBuilder so it now conforms to ADO.NET 2.0 standards. Thanks Rasha (strasha at gmail dot com) for patch.

	Added initial support for System.Transactions. This code is still in very early stage, so if you have any problems with it, please let us know so we can fix it as soon as possible. More info and sample code can be found in our UserManual. (Josh Cooley)

	[#1008537] New resource files - zh-CN. Added support for Chinese (Simplified). Thanks Fan (Frank) Chown (reverseark at gmail dot com) for patch!


	Bug fixes:

	[#1007697] Parameter name is not trimmed NpgsqlParameter constructor. Thanks Joren Six (sixjoren at msn dot com) for patch.

	Fixed SSL authentication by setting an static field to true: RSACryptoServiceProvider.UseMachineKeyStore = true. See https://bugzilla.novell.com/show_bug.cgi?id=MONO77559 and http://pgfoundry.org/forum/message.php?msg_id=1002377 for more info about that. Thanks Erwin Thaler (the at adv dot magwien dot gv dot at) for heads up.

	[#1003272] Queue Empty exception. Thanks Francois Payette ( francoisp at netmosphere dot net) for patch.
	[#1000847] Connection settings are parsed wrong with Turkish locale. Thanks Gokcer Gokdal (gokcergokdal at yahoo dot com) for patch.

	Fixed a possible lockup when using SyncNotification. Runtime wasn't releasing the lock fairly. See http://pgfoundry.org/forum/message.php?msg_id=1002650 for more info. Thanks Clive Simmens (cs at ctronix dot com) for heads up, tests and patch.


2007-07-03

    Npgsql2 Preview Release


    This is a preview release of Npgsql2 which supports ADO.Net 2.0 API. Note that this release may be the last release under LGPL license. So, some features may not be readily available in next release when we change to BSD license. This is due to the fact that some patches may not get its permission to be relicensed whether because the developer didn't want or can't be found. If any feature currently present won't show in next release we will let you know.

	Enjoy!

	The Npgsql Development Team
