Binary compatibility report for the ODB library between 2.1.1 and 2.2.0 versions on x86
Test Info
Library Name | ODB |
Version #1 | 2.1.1 |
Version #2 | 2.2.0 |
CPU Type | x86 |
GCC Version | 4.6.1 |
Test Results
Total Header Files | 76 |
Total Shared Libraries | 1 |
Total Symbols / Types | 130 / 138 |
Verdict | Incompatible (11.2%) |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 61 |
Removed Symbols | High | 3 |
Problems with Data Types | High | 3 |
Medium | 6 |
Low | 8 |
Problems with Symbols | High | 2 |
Medium | 0 |
Low | 0 |
Problems with Constants | Low | 0 |
Other Changes in Data Types | - | 1 |
Added Symbols (61)
connection.hxx,
libodb-2.2.so
namespace odb
connection::cache_query_ ( prepared_query_impl* pq, std::type_info const& ti, void* params, std::type_info const* params_info, void(*params_deleter)(void*) )
[symbol: _ZN3odb10connection12cache_query_EPNS_19prepared_query_implERKSt9type_infoPvPS4_PFvS6_E]
connection::clear_prepared_map ( )
[symbol: _ZN3odb10connection18clear_prepared_mapEv]
connection::invalidate_results ( )
[symbol: _ZN3odb10connection18invalidate_resultsEv]
connection::lookup_query_ ( char const* name, std::type_info const& ti, void** params, std::type_info const* params_info ) const
[symbol: _ZNK3odb10connection13lookup_query_EPKcRKSt9type_infoPPvPS4_]
connection::recycle ( )
[symbol: _ZN3odb10connection7recycleEv]
exceptions.hxx,
libodb-2.2.so
namespace odb
prepared_already_cached::prepared_already_cached [in-charge] ( char const* name )
[symbol: _ZN3odb23prepared_already_cachedC1EPKc]
prepared_already_cached::prepared_already_cached [not-in-charge] ( char const* name )
[symbol: _ZN3odb23prepared_already_cachedC2EPKc]
prepared_already_cached::what ( ) const
[symbol: _ZNK3odb23prepared_already_cached4whatEv]
prepared_already_cached::~prepared_already_cached [in-charge-deleting] ( )
[symbol: _ZN3odb23prepared_already_cachedD0Ev]
prepared_already_cached::~prepared_already_cached [in-charge] ( )
[symbol: _ZN3odb23prepared_already_cachedD1Ev]
prepared_already_cached::~prepared_already_cached [not-in-charge] ( )
[symbol: _ZN3odb23prepared_already_cachedD2Ev]
prepared_type_mismatch::prepared_type_mismatch [in-charge] ( char const* name )
[symbol: _ZN3odb22prepared_type_mismatchC1EPKc]
prepared_type_mismatch::prepared_type_mismatch [not-in-charge] ( char const* name )
[symbol: _ZN3odb22prepared_type_mismatchC2EPKc]
prepared_type_mismatch::what ( ) const
[symbol: _ZNK3odb22prepared_type_mismatch4whatEv]
prepared_type_mismatch::~prepared_type_mismatch [in-charge-deleting] ( )
[symbol: _ZN3odb22prepared_type_mismatchD0Ev]
prepared_type_mismatch::~prepared_type_mismatch [in-charge] ( )
[symbol: _ZN3odb22prepared_type_mismatchD1Ev]
prepared_type_mismatch::~prepared_type_mismatch [not-in-charge] ( )
[symbol: _ZN3odb22prepared_type_mismatchD2Ev]
prepared-query.hxx,
libodb-2.2.so
namespace odb
prepared_query_impl::list_remove ( )
[symbol: _ZN3odb19prepared_query_impl11list_removeEv]
prepared_query_impl::prepared_query_impl [in-charge] ( connection& p1 )
[symbol: _ZN3odb19prepared_query_implC1ERNS_10connectionE]
prepared_query_impl::prepared_query_impl [not-in-charge] ( connection& p1 )
[symbol: _ZN3odb19prepared_query_implC2ERNS_10connectionE]
prepared_query_impl::~prepared_query_impl [in-charge-deleting] ( )
[symbol: _ZN3odb19prepared_query_implD0Ev]
prepared_query_impl::~prepared_query_impl [in-charge] ( )
[symbol: _ZN3odb19prepared_query_implD1Ev]
prepared_query_impl::~prepared_query_impl [not-in-charge] ( )
[symbol: _ZN3odb19prepared_query_implD2Ev]
query-dynamic.hxx,
libodb-2.2.so
namespace odb
operator! ( query_base const& p1 )
[symbol: _ZN3odbntERKNS_10query_baseE]
operator&& ( query_base const& p1, query_base const& p2 )
[symbol: _ZN3odbaaERKNS_10query_baseES2_]
operator|| ( query_base const& p1, query_base const& p2 )
[symbol: _ZN3odbooERKNS_10query_baseES2_]
query_base::append ( query_base const& p1 )
[symbol: _ZN3odb10query_base6appendERKS0_]
query_base::append ( std::string const& p1 )
[symbol: _ZN3odb10query_base6appendERKSs]
query_base::append_ref ( void const* ref, native_column_info const* p2 )
[symbol: _ZN3odb10query_base10append_refEPKvPKNS_18native_column_infoE]
query_base::clear ( )
[symbol: _ZN3odb10query_base5clearEv]
query_base::operator+= ( query_base const& p1 )
[symbol: _ZN3odb10query_basepLERKS0_]
query_base::operator+= ( std::string const& native )
[symbol: _ZN3odb10query_basepLERKSs]
query_param::~query_param [in-charge-deleting] ( )
[symbol: _ZN3odb11query_paramD0Ev]
query_param::~query_param [in-charge] ( )
[symbol: _ZN3odb11query_paramD1Ev]
query_param::~query_param [not-in-charge] ( )
[symbol: _ZN3odb11query_paramD2Ev]
result.hxx,
libodb-2.2.so
namespace odb
result_impl::list_remove ( )
[symbol: _ZN3odb11result_impl11list_removeEv]
result_impl::result_impl [in-charge] ( connection& p1 )
[symbol: _ZN3odb11result_implC1ERNS_10connectionE]
result_impl::result_impl [not-in-charge] ( connection& p1 )
[symbol: _ZN3odb11result_implC2ERNS_10connectionE]
result_impl::~result_impl [in-charge-deleting] ( )
[symbol: _ZN3odb11result_implD0Ev]
result_impl::~result_impl [in-charge] ( )
[symbol: _ZN3odb11result_implD1Ev]
result_impl::~result_impl [not-in-charge] ( )
[symbol: _ZN3odb11result_implD2Ev]
schema-catalog-impl.hxx,
libodb-2.2.so
namespace odb
schema_catalog_entry::schema_catalog_entry [in-charge] ( enum database_id id, char const* name, bool(*create_function)(database&, unsigned short, bool) )
[symbol: _ZN3odb20schema_catalog_entryC1ENS_11database_idEPKcPFbRNS_8databaseEtbE]
schema_catalog_entry::schema_catalog_entry [not-in-charge] ( enum database_id id, char const* name, bool(*create_function)(database&, unsigned short, bool) )
[symbol: _ZN3odb20schema_catalog_entryC2ENS_11database_idEPKcPFbRNS_8databaseEtbE]
schema-catalog.hxx,
libodb-2.2.so
namespace odb
schema_catalog::exists ( enum database_id p1, std::string const& name ) [static]
[symbol: _ZN3odb14schema_catalog6existsENS_11database_idERKSs]
session.hxx,
libodb-2.2.so
namespace odb
session::current_pointer ( ) [static]
[symbol: _ZN3odb7session15current_pointerEv]
session::current_pointer ( session* p1 ) [static]
[symbol: _ZN3odb7session15current_pointerEPS0_]
transaction.hxx,
libodb-2.2.so
namespace odb
transaction::callback_call ( unsigned short event )
[symbol: _ZN3odb11transaction13callback_callEt]
transaction::callback_find ( void* key )
[symbol: _ZN3odb11transaction13callback_findEPv]
transaction::callback_register ( transaction::callback_type p1, void* key, unsigned short event, unsigned long long data, transaction** state )
[symbol: _ZN3odb11transaction17callback_registerEPFvtPvyES1_tyPPS0_]
transaction::callback_unregister ( void* key )
[symbol: _ZN3odb11transaction19callback_unregisterEPv]
transaction::callback_update ( void* key, unsigned short event, unsigned long long data, transaction** state )
[symbol: _ZN3odb11transaction15callback_updateEPvtyPPS0_]
vector-impl.hxx,
libodb-2.2.so
namespace odb
vector_base::rollback ( unsigned short p1, void* key, unsigned long long p3 ) [static]
[symbol: _ZN3odb11vector_base8rollbackEtPvy]
vector_impl::clear ( )
[symbol: _ZN3odb11vector_impl5clearEv]
vector_impl::erase ( std::size_t p1, std::size_t n )
[symbol: _ZN3odb11vector_impl5eraseEjj]
vector_impl::insert ( std::size_t p1, std::size_t n )
[symbol: _ZN3odb11vector_impl6insertEjj]
vector_impl::pop_back ( std::size_t n )
[symbol: _ZN3odb11vector_impl8pop_backEj]
vector_impl::push_back ( std::size_t n )
[symbol: _ZN3odb11vector_impl9push_backEj]
vector_impl::shrink_to_fit ( )
[symbol: _ZN3odb11vector_impl13shrink_to_fitEv]
vector_impl::start ( std::size_t p1 )
[symbol: _ZN3odb11vector_impl5startEj]
vector_impl::vector_impl [in-charge] ( vector_impl const& p1 )
[symbol: _ZN3odb11vector_implC1ERKS0_]
vector_impl::vector_impl [not-in-charge] ( vector_impl const& p1 )
[symbol: _ZN3odb11vector_implC2ERKS0_]
to the top
Removed Symbols (3)
schema-catalog-impl.hxx,
libodb-2.1.so
namespace odb
schema_catalog_entry::schema_catalog_entry [in-charge] ( char const* name, bool(*entry)(database&, unsigned short, bool) )
[symbol: _ZN3odb20schema_catalog_entryC1EPKcPFbRNS_8databaseEtbE]
schema_catalog_entry::schema_catalog_entry [not-in-charge] ( char const* name, bool(*entry)(database&, unsigned short, bool) )
[symbol: _ZN3odb20schema_catalog_entryC2EPKcPFbRNS_8databaseEtbE]
session.hxx,
libodb-2.1.so
namespace odb
session::current ( session& p1 ) [static]
[symbol: _ZN3odb7session7currentERS0_]
to the top
Problems with Data Types, High Severity (3)
statement.hxx
namespace odb
[+] class statement (3)
| Change |
Effect |
1 | Pure virtual method statement::connection ( ) has been added to this class. | 1) Applications will not provide the implementation for this pure virtual method and therefore cause a crash in the library trying to call this method. 2) The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications. |
2 | The relative position of pure virtual method statement::text ( ) const has been changed from 2 to 0. | The layout of v-table has been changed. Call of this pure virtual method implementation may result in crash or incorrect behavior of applications. |
3 | The relative position of pure virtual method statement::~statement ( ) has been changed from 1 to 2. | The layout of v-table has been changed. Call of this pure virtual method implementation may result in crash or incorrect behavior of applications. |
[+] show v-table (old and new)
Offset | Virtual Table (Old) - 5 entries | Virtual Table (New) - 6 entries |
---|
0 |
(int (*)(...))0 |
(int (*)(...))0 |
4 |
(int (*)(...))(& typeinfo) |
(int (*)(...))(& typeinfo) |
8 |
__cxa_pure_virtual |
__cxa_pure_virtual |
12 |
__cxa_pure_virtual |
__cxa_pure_virtual |
16 |
__cxa_pure_virtual |
__cxa_pure_virtual |
20 |
|
__cxa_pure_virtual |
[+] affected symbols (2)
statement::text ( ) constThis method is from 'statement' class.
statement::~statement [in-charge] ( )This method is from 'statement' class.
to the top
Problems with Symbols, High Severity (2)
schema-catalog-impl.hxx,
libodb-2.1.so
namespace odb
[+] schema_catalog_entry::schema_catalog_entry [in-charge] ( char const* name, bool(*entry)(database&, unsigned short, bool) ) (1)
changed to:schema_catalog_entry::schema_catalog_entry [in-charge] ( enum database_id id, char const* name, bool(*create_function)(database&, unsigned short, bool) )
[symbol: _ZN3odb20schema_catalog_entryC1EPKcPFbRNS_8databaseEtbE]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb20schema_catalog_entryC1EPKcPFbRNS_8databaseEtbE to _ZN3odb20schema_catalog_entryC1ENS_11database_idEPKcPFbRNS_8databaseEtbE. This may cause "undefined reference" linker error in old client applications. |
[+] schema_catalog_entry::schema_catalog_entry [not-in-charge] ( char const* name, bool(*entry)(database&, unsigned short, bool) ) (1)
changed to:schema_catalog_entry::schema_catalog_entry [not-in-charge] ( enum database_id id, char const* name, bool(*create_function)(database&, unsigned short, bool) )
[symbol: _ZN3odb20schema_catalog_entryC2EPKcPFbRNS_8databaseEtbE]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb20schema_catalog_entryC2EPKcPFbRNS_8databaseEtbE to _ZN3odb20schema_catalog_entryC2ENS_11database_idEPKcPFbRNS_8databaseEtbE. This may cause "undefined reference" linker error in old client applications. |
to the top
Problems with Data Types, Medium Severity (6)
connection.hxx
namespace odb
[+] class connection (4)
| Change |
Effect |
1 | Field prepared_map_ has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications. |
2 | Field prepared_queries_ has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications. |
3 | Field results_ has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications. |
4 | Size of field database_ has been changed from 8 bytes to 36 bytes. | 1) Size of the inclusive type has been changed. 2) Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken. |
[+] affected symbols (6)
connection::~connection [in-charge] ( )This method is from 'connection' class.
tracer::deallocate ( connection& p1, statement const& p2 )1st parameter 'p1' (reference) has base type 'connection'.
tracer::execute ( connection& p1, statement const& p2 )1st parameter 'p1' (reference) has base type 'connection'.
tracer::prepare ( connection& p1, statement const& p2 )1st parameter 'p1' (reference) has base type 'connection'.
transaction::reset ( transaction_impl* p1, bool make_current )Field 'p1->connection_' in 1st parameter 'p1' (pointer) has base type 'connection'.
transaction_impl::~transaction_impl [in-charge] ( )Field 'this->connection_' in the object of this method has base type 'connection'.
database.hxx
namespace odb
[+] class database (1)
| Change |
Effect |
1 | Field id_ has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications. |
[+] affected symbols (9)
connection::~connection [in-charge] ( )Field 'this->database_' in the object of this method has base type 'database'.
database::execute ( char const* statement, std::size_t length )This method is from 'database' class.
database::~database [in-charge] ( )This method is from 'database' class.
schema_catalog::create_schema ( database& p1, std::string const& name ) [static]1st parameter 'p1' (reference) has base type 'database'.
tracer::deallocate ( connection& p1, statement const& p2 )Field 'p1->database_' in 1st parameter 'p1' (reference) has base type 'database'.
tracer::execute ( connection& p1, statement const& p2 )Field 'p1->database_' in 1st parameter 'p1' (reference) has base type 'database'.
tracer::prepare ( connection& p1, statement const& p2 )Field 'p1->database_' in 1st parameter 'p1' (reference) has base type 'database'.
transaction::reset ( transaction_impl* p1, bool make_current )Field 'p1->connection_->database_' in 1st parameter 'p1' (pointer) has base type 'database'.
transaction_impl::~transaction_impl [in-charge] ( )Field 'this->database_' in the object of this method has base type 'database'.
transaction.hxx
namespace odb
[+] class transaction_impl (1)
| Change |
Effect |
1 | Size of field database_ has been changed from 8 bytes to 36 bytes. | Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken. |
[+] affected symbols (2)
transaction::reset ( transaction_impl* p1, bool make_current )1st parameter 'p1' (pointer) has base type 'transaction_impl'.
transaction_impl::~transaction_impl [in-charge] ( )This method is from 'transaction_impl' class.
to the top
Problems with Data Types, Low Severity (8)
connection.hxx
namespace odb
[+] class connection (1)
| Change |
Effect |
1 | Size of this type has been changed from 24 bytes to 56 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (6)
connection::~connection [in-charge] ( )This method is from 'connection' class.
tracer::deallocate ( connection& p1, statement const& p2 )1st parameter 'p1' (reference) has base type 'connection'.
tracer::execute ( connection& p1, statement const& p2 )1st parameter 'p1' (reference) has base type 'connection'.
tracer::prepare ( connection& p1, statement const& p2 )1st parameter 'p1' (reference) has base type 'connection'.
transaction::reset ( transaction_impl* p1, bool make_current )Field 'p1->connection_' in 1st parameter 'p1' (pointer) has base type 'connection'.
transaction_impl::~transaction_impl [in-charge] ( )Field 'this->connection_' in the object of this method has base type 'connection'.
database.hxx
namespace odb
[+] class database (2)
| Change |
Effect |
1 | Field query_factory_map_ has been added to this type. | 1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
2 | Size of this type has been changed from 8 bytes to 36 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (9)
connection::~connection [in-charge] ( )Field 'this->database_' in the object of this method has base type 'database'.
database::execute ( char const* statement, std::size_t length )This method is from 'database' class.
database::~database [in-charge] ( )This method is from 'database' class.
schema_catalog::create_schema ( database& p1, std::string const& name ) [static]1st parameter 'p1' (reference) has base type 'database'.
tracer::deallocate ( connection& p1, statement const& p2 )Field 'p1->database_' in 1st parameter 'p1' (reference) has base type 'database'.
tracer::execute ( connection& p1, statement const& p2 )Field 'p1->database_' in 1st parameter 'p1' (reference) has base type 'database'.
tracer::prepare ( connection& p1, statement const& p2 )Field 'p1->database_' in 1st parameter 'p1' (reference) has base type 'database'.
transaction::reset ( transaction_impl* p1, bool make_current )Field 'p1->connection_->database_' in 1st parameter 'p1' (pointer) has base type 'database'.
transaction_impl::~transaction_impl [in-charge] ( )Field 'this->database_' in the object of this method has base type 'database'.
transaction.hxx
namespace odb
[+] class transaction (5)
| Change |
Effect |
1 | Field callback_count_ has been added to this type. | 1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
2 | Field dyn_callbacks_ has been added to this type. | 1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
3 | Field free_callback_ has been added to this type. | 1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
4 | Field stack_callbacks_ has been added to this type. | 1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
5 | Size of this type has been changed from 8 bytes to 508 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (6)
transaction::commit ( )This method is from 'transaction' class.
transaction::current ( ) [static]Return value (reference) has base type 'transaction'.
transaction::current ( transaction& p1 ) [static]1st parameter 'p1' (reference) has base type 'transaction'.
transaction::reset ( transaction_impl* p1, bool make_current )This method is from 'transaction' class.
transaction::rollback ( )This method is from 'transaction' class.
transaction::~transaction [in-charge] ( )This method is from 'transaction' class.
to the top
Other Changes in Data Types (1)
connection.hxx
namespace odb
[+] class connection (1)
| Change |
Effect |
1 | Virtual method connection::cache_query_ ( prepared_query_impl*, std::type_info const&, void*, std::type_info const*, void(*params_deleter)(void*) ) has been added to this class. | No effect. You can add virtual functions at end of leaf classes with exported constructors. |
[+] show v-table (old and new)
Offset | Virtual Table (Old) - 6 entries | Virtual Table (New) - 7 entries |
---|
0 |
(int (*)(...))0 |
(int (*)(...))0 |
4 |
(int (*)(...))(& typeinfo) |
(int (*)(...))(& typeinfo) |
8 |
__cxa_pure_virtual |
__cxa_pure_virtual |
12 |
__cxa_pure_virtual |
__cxa_pure_virtual |
16 |
~connection |
~connection |
20 |
~connection |
~connection |
24 |
|
connection::cache_query_ |
[+] affected symbols (3)
connection::begin ( )This method is from 'connection' class.
connection::execute ( char const* statement, std::size_t length )This method is from 'connection' class.
connection::~connection [in-charge] ( )This method is from 'connection' class.
to the top
Header Files (76)
answer.hxx
base.hxx
buffer.hxx
cache-traits.hxx
callback.hxx
class-p.hxx
post.hxx (compilers/vc/post.hxx)
pre.hxx (compilers/vc/pre.hxx)
condition.hxx
config.h
config.hxx
connection.hxx
container-traits.hxx
core.hxx
counter-type.hxx
database.hxx
exception.hxx (details/exception.hxx)
exceptions.hxx (details/posix/exceptions.hxx)
exception.hxx
exceptions.hxx
export.hxx
forward.hxx
lazy-pointer-traits.hxx
lazy-ptr-impl.hxx
lazy-ptr.hxx
lock.hxx
mutex.hxx
no-id-object-result.hxx
no-op-cache-traits.hxx
nullable.hxx
object-result.hxx
pointer-traits.hxx
polymorphic-info.hxx
polymorphic-map.hxx
polymorphic-object-result.hxx
polymorphic-p.hxx
condition.hxx (posix/condition.hxx)
mutex.hxx (posix/mutex.hxx)
thread.hxx (posix/thread.hxx)
tls.hxx (posix/tls.hxx)
post.hxx
pre.hxx
query.hxx
remove-const-volatile.hxx
remove-const.hxx
remove-pointer.hxx
remove-volatile.hxx
result.hxx
schema-catalog-impl.hxx
schema-catalog.hxx
session.hxx
shared-ptr-fwd.hxx
shared-ptr.hxx
simple-object-result.hxx
statement.hxx
std-array-traits.hxx
std-forward-list-traits.hxx
std-list-traits.hxx
std-map-traits.hxx
std-set-traits.hxx
std-unordered-map-traits.hxx
std-unordered-set-traits.hxx
std-vector-traits.hxx
thread.hxx
tls.hxx
tracer.hxx
traits.hxx
transaction.hxx
transfer-ptr.hxx
type-info.hxx
unique-ptr.hxx
unused.hxx
version.hxx
view-result.hxx
wrapper-p.hxx
wrapper-traits.hxx
to the top
Shared Libraries (1)
libodb-2.1.so
to the top