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 48 bit (technically 64 bit) transaction ids. [JDBC432] #473

Closed
firebird-automations opened this issue May 1, 2016 · 8 comments
Closed

Comments

@firebird-automations
Copy link

Submitted by: @mrotteveel

Relate to DNET896

Firebird 3 introduces 48 bit transaction ids (realised as 64 bit values). Jaybird needs to support these. Relevant areas are isc_database_info, isc_transaction_info and the services API.

For isc_database_info and isc_transaction_info the values below 2^32 are handled as they were (4 bytes), and above they are sent as 8 bytes (length prefixed). For the services API additional tags were introduced: isc_spb_tra_id_64, isc_spb_single_tra_id_64, isc_spb_multi_tra_id_64. They are used only if the value overflows 2^32.

Commits: 76dca74 06d56cc 2445d35

@firebird-automations
Copy link
Author

Commented by: @mrotteveel

It would be preferable to get support into 2.2.x, but we need to maintain backwards compatibility.

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

Fix Version: Jaybird 2.2.11 [ 10751 ]

Fix Version: Jaybird 3.0 [ 10440 ]

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

description: Firebird 3 introduces 48 bit transaction ids (realised as 64 bit values). Jaybird needs to support these. Relevant areas are isc_database_info, isc_transaction_info and the services API.

For isc_database_info and isc_transaction_info the values below 2^32 are handled as they were (4 bytes), and above they are sent as 8 bytes (length prefixed). For the services API additional tags were introduced: isc_spb_tra_id_64, isc_spb_single_tra_id_64, isc_spb_multi_tra_id_64. They are used only of the value overflows 2^32.

=>

Firebird 3 introduces 48 bit transaction ids (realised as 64 bit values). Jaybird needs to support these. Relevant areas are isc_database_info, isc_transaction_info and the services API.

For isc_database_info and isc_transaction_info the values below 2^32 are handled as they were (4 bytes), and above they are sent as 8 bytes (length prefixed). For the services API additional tags were introduced: isc_spb_tra_id_64, isc_spb_single_tra_id_64, isc_spb_multi_tra_id_64. They are used only if the value overflows 2^32.

@firebird-automations
Copy link
Author

Commented by: @mrotteveel

Added support in FBMaintenanceManager in 2.2 and 3.0. Made some changes that are backwards incompatible between Jaybird 2.2 and Jaybird 3.0 (modified return types of two methods to return long[] and List<Long> instead of int[] and List<Integer>. For Jaybird 2.2 I opted to include an explicit long variant of these methods to retain compatibility. Deprecated the commitTransaction(int) and rollbackTransaction(int) methods to be removed in Jaybird 3.1.

Researching exactly what I need to do for op_reconnec/isc_reconnect_transaction.

@firebird-automations
Copy link
Author

Commented by: @mrotteveel

Support in reconnect also implemented.

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

status: Open [ 1 ] => Resolved [ 5 ]

resolution: Fixed [ 1 ]

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

status: Resolved [ 5 ] => Closed [ 6 ]

@firebird-automations
Copy link
Author

Modified by: @cincuranet

Link: This issue relate to DNET896 [ DNET896 ]

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