ADO.NET provider for Firebird 3.0.1 released

Few weeks ago the 3.0.0 version was released (actually it was during Firebird Conference 2012, during my talk ;) ) and it came with some new features and improvements (hence version 3.0.0). And as it goes, nothing is perfect and few items slipped through testing phase. So that’s th reason why today, I’m happy to announce version 3.0.1 to be released.

You can download it from NuGet or from Firebird SQL site as it gets updated.

This release contains fixes for two regressions introduced in 3.0.0. You can see both in tracker. It’s also my initial step to release these small bugfix releases more often (as discussed in list).

Go grab it, while it’s hot.

12 thoughts on “ADO.NET provider for Firebird 3.0.1 released

  1. Pingback: Firebird News » .NET provider for Firebird 3.0.1 released

  2. Scot

    The change for http://tracker.firebirdsql.org/browse/DNET-452 appears to have broken EF 5′s Context.Database.SqlQuery() capability. I have an app that uses this feature extensively that works fine in 2.7.7, but fails on 3.0.0.1 with an error at FDDataReader.GetColumnIndex. It looks like

    return value.Replace(”, ‘ ‘).Trim();

    is not equivalent to

    return value.TrimEnd(”, ‘ ‘);

  3. fish

    Firebird Embedded does not work with FirebirdSql.Data.FirebirdClient 3.0.1
    Err: ‘Unable to complete network request to host “localhost”.

  4. cincura.net Post author

    It’s not same from C#’s POV but should be considering the wire protocol. Anyway a repro-case would be helpful. BTW this affects any query (with varchar) not just EF.

  5. fish

    I am using the following connection string to connect Firebird embedded.
    ServerType=Embedded;User=SYSDBA;Password=masterkey;Dialect=3;Pooling=false;Database=C:\1.GDB;
    3.0.0 OK but 3.0.1 Fail

    I think the ServerType (Embedded or 1) is not unavailable on 3.0.1

  6. cincura.net Post author

    Works fine here:

    var conn = new FbConnection(@"ServerType=Embedded;User=SYSDBA;Password=masterkey;Dialect=3;Pooling=false;Database=1.GDB;");
    conn.Open();
    
    Unhandled Exception: FirebirdSql.Data.FirebirdClient.FbException: I/O error during "CreateFile (open)" operation for file "C:\1.GDB"
    Error while trying to open file ---> FirebirdSql.Data.Common.IscException: I/O error during "CreateFile (open)" operation for file "C:\1.GDB"
    Error while trying to open file
       at FirebirdSql.Data.Client.Native.FesDatabase.ParseStatusVector(IntPtr[] statusVector) in c:\Users\Jiri\Documents\devel\NETProvider\working\trunk\NETProvider\source\FirebirdSql\Data\Client\Native\FesDatabase.cs:line 422
       at FirebirdSql.Data.Client.Native.FesDatabase.Attach(DatabaseParameterBuffer dpb, String dataSource, Int32 port, String database) in c:\Users\Jiri\Documents\devel\NETProvider\working\trunk\NETProvider\source\FirebirdSql\Data\Client\Native\FesDatabase.cs:line 290
       at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect() in c:\Users\Jiri\Documents\devel\NETProvider\working\trunk\NETProvider\source\FirebirdSql\Data\FirebirdClient\FbConnectionInternal.cs:line 201
       --- End of inner exception stack trace ---
       at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect() in c:\Users\Jiri\Documents\devel\NETProvider\working\trunk\NETProvider\source\FirebirdSql\Data\FirebirdClient\FbConnectionInternal.cs:line 226
       at FirebirdSql.Data.FirebirdClient.FbConnection.Open() in c:\Users\Jiri\Documents\devel\NETProvider\working\trunk\NETProvider\source\FirebirdSql\Data\FirebirdClient\FbConnection.cs:line 593
       at ConsoleApplication1.Program.Main(String[] args) in c:\Users\Jiri\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs:line 15
    

    and succeeds with:

    FbConnection.CreateDatabase(@"ServerType=Embedded;User=SYSDBA;Password=masterkey;Dialect=3;Pooling=false;Database=1.GDB;");
    var conn = new FbConnection(@"ServerType=Embedded;User=SYSDBA;Password=masterkey;Dialect=3;Pooling=false;Database=1.GDB;");
    conn.Open();
    
  7. cincura.net Post author

    I don’t have Firebird running here. And you can see from stack, it’s using P/Invoke path, not network.

  8. fish

    if (key == “server type”)
    {
    FbServerType serverType = default(FbServerType);
    try
    {
    Enum.Parse(typeof(FbServerType), values[1], true);
    }
    catch
    {
    throw new NotSupportedException(“Not supported ‘server type’.”);
    }
    this.options[key] = serverType;
    }
    else
    {
    this.options[key] = values[1];
    }

    You have omitted the variable.
    serverType = (FbServerType)Enum.Parse(typeof(FbServerType), values[1], true);

  9. cincura.net Post author

    Fucking .NET 3.5 compatibility. I used Enum.TryParse, but as I was building all versions I had to change it. Interesting the previous code worked as expected, wondering what it was loading. Thanks for catching. 3.0.2 soon.

  10. Scot

    Could not reproduce error in a test app. I eventually downloaded the FirebirdClient source and debugged. Basically, the exception thrown in FbDataReader.GetColumnIndex was not being handled by the EntityFramework when materializing query results to an object. I’m honestly not sure how it got resolved, but after a Clean and Rebuild it works now. Anyway, issue resolved. Thanks.

Leave a Reply