Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Firebird 3.0 [DNET630] #590

Closed
firebird-automations opened this issue Sep 14, 2015 · 19 comments
Closed

Support for Firebird 3.0 [DNET630] #590

firebird-automations opened this issue Sep 14, 2015 · 19 comments

Comments

@firebird-automations
Copy link

Submitted by: Mark Junker (fubar-coder)

Jira_subtask_outward DNET631
Jira_subtask_outward DNET642
Jira_subtask_outward DNET644
Jira_subtask_outward DNET645
Jira_subtask_outward DNET647
Jira_subtask_outward DNET649
Jira_subtask_outward DNET650
Jira_subtask_outward DNET652
Jira_subtask_outward DNET653
Jira_subtask_outward DNET672
Jira_subtask_outward DNET675
Jira_subtask_outward DNET676
Jira_subtask_outward DNET706
Jira_subtask_outward DNET760
Jira_subtask_outward DNET773
Jira_subtask_outward DNET784
Relate to DNET836

Votes: 4

It seems that the Firebird http://ADO.NET driver doesn't support Firebird 3.0 beta 2 yet. At least two things come to mind that probably have to be changed:

* Support for BOOLEAN data type
* Support for changed data structures
* I found at least one situation where the data structure was changed: When I try to open an already opened embedded database

@firebird-automations
Copy link
Author

Commented by: @cincuranet

What changed data structures you're talking about?

@firebird-automations
Copy link
Author

Commented by: Mark Junker (fubar-coder)

Here's a stack trace when I try to open an already opened database:

System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.
bei FirebirdSql.Data.Common.IscHelper.VaxInteger(Byte[] buffer, Int32 index, Int32 length) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\Common\IscHelper.cs:Zeile 312.
bei FirebirdSql.Data.Common.IscHelper.ParseDatabaseInfo(Byte[] buffer) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\Common\IscHelper.cs:Zeile 35.
bei FirebirdSql.Data.Client.Native.FesDatabase.GetDatabaseInfo(Byte[] items, Int32 bufferLength) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\Client\Native\FesDatabase.cs:Zeile 392.
bei FirebirdSql.Data.Client.Native.FesDatabase.GetServerVersion() in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\Client\Native\FesDatabase.cs:Zeile 372.
bei FirebirdSql.Data.Client.Native.FesDatabase.Attach(DatabaseParameterBuffer dpb, String dataSource, Int32 port, String database) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\Client\Native\FesDatabase.cs:Zeile 291.
bei FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect() in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionInternal.cs:Zeile 171.
bei FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Pool.CreateNewConnectionIfPossibleImpl(FbConnectionString connectionString) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionPoolManager.cs:Zeile 202.
bei FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Pool.GetConnection(FbConnection owner) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionPoolManager.cs:Zeile 106.
bei FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Get(FbConnectionString connectionString, FbConnection owner) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionPoolManager.cs:Zeile 221.
bei FirebirdSql.Data.FirebirdClient.FbConnection.Open() in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:Zeile 542.

@firebird-automations
Copy link
Author

Commented by: @cincuranet

Are you using latest provider? Does this happen only on FB3 and FB2.5.x is OK? This doesn't look like FB3 caused to me.

@firebird-automations
Copy link
Author

Commented by: Mark Junker (fubar-coder)

Yes, I'm using 4.8.0.0 and this happens with FB3 only. When using the FB2.5 DLLs, I get the following exception:

FirebirdSql.Data.FirebirdClient.FbException (0x80004005): I/O error during "CreateFile (open)" operation for file "D:\DATALINE\DATALINE.OFFICE.MFC\BUILD\DEBUG\DATA\MUSTER.FDB"
Error while trying to open file ---> I/O error during "CreateFile (open)" operation for file "D:\DATALINE\DATALINE.OFFICE.MFC\BUILD\DEBUG\DATA\MUSTER.FDB"
Error while trying to open file
bei FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect() in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionInternal.cs:Zeile 196.
bei FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Pool.CreateNewConnectionIfPossibleImpl(FbConnectionString connectionString) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionPoolManager.cs:Zeile 202.
bei FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Pool.GetConnection(FbConnection owner) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionPoolManager.cs:Zeile 106.
bei FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Get(FbConnectionString connectionString, FbConnection owner) in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionPoolManager.cs:Zeile 221.
bei FirebirdSql.Data.FirebirdClient.FbConnection.Open() in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:Zeile 542.

It might be an interesting for you, that the other application opens the database using a Firebird server, while my test application tries to open the DB directly (embedded).

@firebird-automations
Copy link
Author

Modified by: @cincuranet

Link: This issue is related to DNET648 [ DNET648 ]

@firebird-automations
Copy link
Author

Modified by: @cincuranet

status: Open [ 1 ] => In Progress [ 3 ]

@firebird-automations
Copy link
Author

Modified by: @cincuranet

Link: This issue is related to DNET648 [ DNET648 ] =>

@firebird-automations
Copy link
Author

Modified by: @cincuranet

Link: This issue relate to DNET836 [ DNET836 ]

@firebird-automations
Copy link
Author

Modified by: @cincuranet

status: In Progress [ 3 ] => Closed [ 6 ]

resolution: Incomplete [ 4 ]

@firebird-automations
Copy link
Author

Modified by: @cincuranet

status: Closed [ 6 ] => Reopened [ 4 ]

resolution: Incomplete [ 4 ] =>

@firebird-automations
Copy link
Author

Modified by: @cincuranet

Component: Entity Framework [ 10110 ]

Component: Entity Framework Core [ 10160 ]

@firebird-automations
Copy link
Author

Modified by: @cincuranet

Version: 4.8.1.0 [ 10720 ] =>

@firebird-automations
Copy link
Author

Commented by: @dyemanov

I've found possible incompatibility with FB3. The native fbclient v3 always passes isc_dpb_utf8_filename (even if it wasn't specified by user) and all DPB strings are encoded in UTF8. Provider passes everything "as is" (using system encoding), similar to how FB 2.5 fbclient works. This may break monitoring if isc_dpb_process_name contains non-ASCII characters and server's locale is different from the client's one (example: CP1251 on the Windows client, UTF8 on the Linux server). It would be convinient to follow the fbclient logic -- i.e. always pass isc_dpb_utf8_filename (and transliterate all DPB strings accordingy) -- for protocol P13 and above.

@firebird-automations
Copy link
Author

Commented by: @cincuranet

OK. Will do. Thanks Dmitry.

@cincuranet
Copy link
Member

Closing in favor of separate issues.

@dyemanov
Copy link
Member

AFAIS, the issue I described earlier still exists. It makes monitoring usage impossible for many clients using .NET provider. Jiri, could you please post an update, when we may expect it to be fixed/improved?

@cincuranet
Copy link
Member

@dyemanov Can you create separate issue for that?

@dyemanov
Copy link
Member

Done, see #1020.

@cincuranet
Copy link
Member

Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants