Binary compatibility report for the ODB library between 2.2.3 and 2.3.0 versions on x86
Test Info
Library Name | ODB |
Version #1 | 2.2.3 |
Version #2 | 2.3.0 |
CPU Type | x86 |
GCC Version | 4.6.1 |
Test Results
Total Header Files | 83 |
Total Shared Libraries | 1 |
Total Symbols / Types | 193 / 194 |
Verdict | Incompatible (11.7%) |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 28 |
Removed Symbols | High | 3 |
Problems with Data Types | High | 1 |
Medium | 3 |
Low | 5 |
Problems with Symbols | High | 1 |
Medium | 0 |
Low | 0 |
Problems with Constants | Low | 0 |
Other Changes in Symbols | - | 1 |
Added Symbols (28)
database.hxx,
libodb-2.3.so
namespace odb
database::schema_version_migration ( database::schema_version_migration_type const& p1, std::string const& schema_name )
[symbol: _ZN3odb8database24schema_version_migrationERKNS_24schema_version_migrationERKSs]
database::schema_version_migration ( std::string const& schema_name ) const
[symbol: _ZNK3odb8database24schema_version_migrationERKSs]
exceptions.hxx,
libodb-2.3.so
namespace odb
section_not_in_object::what ( ) const
[symbol: _ZNK3odb21section_not_in_object4whatEv]
section_not_in_object::~section_not_in_object [in-charge-deleting] ( )
[symbol: _ZN3odb21section_not_in_objectD0Ev]
section_not_in_object::~section_not_in_object [in-charge] ( )
[symbol: _ZN3odb21section_not_in_objectD1Ev]
section_not_loaded::what ( ) const
[symbol: _ZNK3odb18section_not_loaded4whatEv]
section_not_loaded::~section_not_loaded [in-charge-deleting] ( )
[symbol: _ZN3odb18section_not_loadedD0Ev]
section_not_loaded::~section_not_loaded [in-charge] ( )
[symbol: _ZN3odb18section_not_loadedD1Ev]
unknown_schema_version::unknown_schema_version [in-charge] ( schema_version p1 )
[symbol: _ZN3odb22unknown_schema_versionC1Ey]
unknown_schema_version::unknown_schema_version [not-in-charge] ( schema_version p1 )
[symbol: _ZN3odb22unknown_schema_versionC2Ey]
unknown_schema_version::what ( ) const
[symbol: _ZNK3odb22unknown_schema_version4whatEv]
unknown_schema_version::~unknown_schema_version [in-charge-deleting] ( )
[symbol: _ZN3odb22unknown_schema_versionD0Ev]
unknown_schema_version::~unknown_schema_version [in-charge] ( )
[symbol: _ZN3odb22unknown_schema_versionD1Ev]
unknown_schema_version::~unknown_schema_version [not-in-charge] ( )
[symbol: _ZN3odb22unknown_schema_versionD2Ev]
schema-catalog-impl.hxx,
libodb-2.3.so
namespace odb
schema_catalog_create_entry::schema_catalog_create_entry [in-charge] ( enum database_id p1, char const* name, bool(*create_function)(database&, unsigned short, bool) )
[symbol: _ZN3odb27schema_catalog_create_entryC1ENS_11database_idEPKcPFbRNS_8databaseEtbE]
schema_catalog_create_entry::schema_catalog_create_entry [not-in-charge] ( enum database_id p1, char const* name, bool(*create_function)(database&, unsigned short, bool) )
[symbol: _ZN3odb27schema_catalog_create_entryC2ENS_11database_idEPKcPFbRNS_8databaseEtbE]
schema_catalog_migrate_entry::schema_catalog_migrate_entry [in-charge] ( enum database_id p1, char const* name, schema_version p3, bool(*migrate_function)(database&, unsigned short, bool) )
[symbol: _ZN3odb28schema_catalog_migrate_entryC1ENS_11database_idEPKcyPFbRNS_8databaseEtbE]
schema_catalog_migrate_entry::schema_catalog_migrate_entry [not-in-charge] ( enum database_id p1, char const* name, schema_version p3, bool(*migrate_function)(database&, unsigned short, bool) )
[symbol: _ZN3odb28schema_catalog_migrate_entryC2ENS_11database_idEPKcyPFbRNS_8databaseEtbE]
schema-catalog.hxx,
libodb-2.3.so
namespace odb
schema_catalog::base_version ( enum database_id p1, std::string const& name ) [static]
[symbol: _ZN3odb14schema_catalog12base_versionENS_11database_idERKSs]
schema_catalog::create_schema ( database& p1, std::string const& name, bool drop ) [static]
[symbol: _ZN3odb14schema_catalog13create_schemaERNS_8databaseERKSsb]
schema_catalog::current_version ( enum database_id p1, std::string const& name ) [static]
[symbol: _ZN3odb14schema_catalog15current_versionENS_11database_idERKSs]
schema_catalog::drop_schema ( database& p1, std::string const& name ) [static]
[symbol: _ZN3odb14schema_catalog11drop_schemaERNS_8databaseERKSs]
schema_catalog::migrate ( database& p1, schema_version p2, std::string const& name ) [static]
[symbol: _ZN3odb14schema_catalog7migrateERNS_8databaseEyRKSs]
schema_catalog::migrate_data ( database& p1, schema_version p2, std::string const& name ) [static]
[symbol: _ZN3odb14schema_catalog12migrate_dataERNS_8databaseEyRKSs]
schema_catalog::next_version ( enum database_id p1, schema_version p2, std::string const& name ) [static]
[symbol: _ZN3odb14schema_catalog12next_versionENS_11database_idEyRKSs]
statement.hxx,
libodb-2.3.so
namespace odb
statement::process_insert ( char const* statement, void const*const* bind, std::size_t bind_size, std::size_t bind_skip, char param_symbol, std::string& result ) [static]
[symbol: _ZN3odb9statement14process_insertEPKcPKPKvjjcRSs]
statement::process_select ( char const* statement, void const*const* bind, std::size_t bind_size, std::size_t bind_skip, char quote_open, char quote_close, bool optimize, std::string& result, bool as ) [static]
[symbol: _ZN3odb9statement14process_selectEPKcPKPKvjjccbRSsb]
statement::process_update ( char const* statement, void const*const* bind, std::size_t bind_size, std::size_t bind_skip, char param_symbol, std::string& result ) [static]
[symbol: _ZN3odb9statement14process_updateEPKcPKPKvjjcRSs]
to the top
Removed Symbols (3)
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::create_schema ( database& p1, std::string const& name ) [static]
[symbol: _ZN3odb14schema_catalog13create_schemaERNS_8databaseERKSs]
to the top
Problems with Data Types, High Severity (1)
database.hxx
namespace odb
[+] class database (1)
| Change |
Effect |
1 | Pure virtual method database::load_schema_version ( std::string const& ) const 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. |
[+] 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 |
~database |
~database |
12 |
~database |
~database |
16 |
__cxa_pure_virtual |
__cxa_pure_virtual |
20 |
__cxa_pure_virtual |
__cxa_pure_virtual |
24 |
|
__cxa_pure_virtual |
[+] affected symbols (4)
database::begin ( )This method is from 'database' class.
database::connection_ ( )This method is from 'database' class.
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.
to the top
Problems with Symbols, High Severity (1)
schema-catalog.hxx,
libodb-2.2.so
namespace odb
[+] schema_catalog::create_schema ( database& p1, std::string const& name ) [static] (1)
changed to:schema_catalog::create_schema ( database& p1, std::string const& name, bool drop ) [static]
[symbol: _ZN3odb14schema_catalog13create_schemaERNS_8databaseERKSs]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb14schema_catalog13create_schemaERNS_8databaseERKSs to _ZN3odb14schema_catalog13create_schemaERNS_8databaseERKSsb. This may cause "undefined reference" linker error in old client applications. |
to the top
Problems with Data Types, Medium Severity (3)
connection.hxx
namespace odb
[+] class connection (1)
| Change |
Effect |
1 | Size of field database_ has been changed from 36 bytes to 92 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 (15)
connection::cache_query_ ( prepared_query_impl* pq, std::type_info const& ti, void* params, std::type_info const* params_info, void(*params_deleter)(void*) )Field 'pq->conn' in 1st parameter 'pq' (pointer) has base type 'connection'.
connection::clear_prepared_map ( )This method is from 'connection' class.
connection::invalidate_results ( )This method is from 'connection' class.
connection::lookup_query_ ( char const* name, std::type_info const& ti, void** params, std::type_info const* params_info ) constThis method is from 'connection' class.
connection::recycle ( )This method is from 'connection' class.
connection::~connection [in-charge] ( )This method is from 'connection' class.
prepared_query_impl::list_remove ( )Field 'this->conn' in the object of this method has base type 'connection'.
prepared_query_impl::prepared_query_impl [in-charge] ( connection& p1 )1st parameter 'p1' (reference) has base type 'connection'.
prepared_query_impl::~prepared_query_impl [in-charge] ( )Field 'this->conn' in the object of this method has base type 'connection'.
result_impl::result_impl [in-charge] ( connection& p1 )1st parameter 'p1' (reference) has base type 'connection'.
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_->prepared_queries_->conn' in the object of this method has base type 'connection'.
result.hxx
namespace odb
[+] class result_impl (1)
| Change |
Effect |
1 | Size of field db_ has been changed from 36 bytes to 92 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 (17)
connection::cache_query_ ( prepared_query_impl* pq, std::type_info const& ti, void* params, std::type_info const* params_info, void(*params_deleter)(void*) )Field 'pq->conn->results_' in 1st parameter 'pq' (pointer) has base type 'result_impl'.
connection::clear_prepared_map ( )Field 'this->results_' in the object of this method has base type 'result_impl'.
connection::invalidate_results ( )Field 'this->results_' in the object of this method has base type 'result_impl'.
connection::lookup_query_ ( char const* name, std::type_info const& ti, void** params, std::type_info const* params_info ) constField 'retval->conn->results_' in return value (pointer) has base type 'result_impl'.
connection::recycle ( )Field 'this->results_' in the object of this method has base type 'result_impl'.
connection::~connection [in-charge] ( )Field 'this->results_' in the object of this method has base type 'result_impl'.
prepared_query_impl::list_remove ( )Field 'this->conn->results_' in the object of this method has base type 'result_impl'.
prepared_query_impl::prepared_query_impl [in-charge] ( connection& p1 )Field 'p1->results_' in 1st parameter 'p1' (reference) has base type 'result_impl'.
prepared_query_impl::~prepared_query_impl [in-charge] ( )Field 'this->conn->results_' in the object of this method has base type 'result_impl'.
result_impl::list_remove ( )This method is from 'result_impl' class.
result_impl::result_impl [in-charge] ( connection& p1 )Field 'p1->results_' in 1st parameter 'p1' (reference) has base type 'result_impl'.
result_impl::~result_impl [in-charge] ( )This method is from 'result_impl' class.
tracer::deallocate ( connection& p1, statement const& p2 )Field 'p1->results_' in 1st parameter 'p1' (reference) has base type 'result_impl'.
tracer::execute ( connection& p1, statement const& p2 )Field 'p1->results_' in 1st parameter 'p1' (reference) has base type 'result_impl'.
tracer::prepare ( connection& p1, statement const& p2 )Field 'p1->results_' in 1st parameter 'p1' (reference) has base type 'result_impl'.
transaction::reset ( transaction_impl* p1, bool make_current )Field 'p1->connection_->results_' in 1st parameter 'p1' (pointer) has base type 'result_impl'.
transaction_impl::~transaction_impl [in-charge] ( )Field 'this->connection_->results_' in the object of this method has base type 'result_impl'.
transaction.hxx
namespace odb
[+] class transaction_impl (1)
| Change |
Effect |
1 | Size of field database_ has been changed from 36 bytes to 92 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 (5)
database.hxx
namespace odb
[+] class database (5)
| Change |
Effect |
1 | Field schema_version_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 | Field schema_version_seq_ 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 mutex_ 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 schema_version_table_ 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 36 bytes to 92 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (19)
connection::cache_query_ ( prepared_query_impl* pq, std::type_info const& ti, void* params, std::type_info const* params_info, void(*params_deleter)(void*) )Field 'pq->conn->database_' in 1st parameter 'pq' (pointer) has base type 'database'.
connection::clear_prepared_map ( )Field 'this->results_->db_' in the object of this method has base type 'database'.
connection::invalidate_results ( )Field 'this->results_->db_' in the object of this method has base type 'database'.
connection::lookup_query_ ( char const* name, std::type_info const& ti, void** params, std::type_info const* params_info ) constField 'this->results_->db_' in the object of this method has base type 'database'.
connection::recycle ( )Field 'this->results_->db_' in the object of this method has base type 'database'.
connection::~connection [in-charge] ( )Field 'this->results_->db_' 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.
prepared_query_impl::list_remove ( )Field 'this->conn->database_' in the object of this method has base type 'database'.
prepared_query_impl::prepared_query_impl [in-charge] ( connection& p1 )Field 'p1->results_->db_' in 1st parameter 'p1' (reference) has base type 'database'.
prepared_query_impl::~prepared_query_impl [in-charge] ( )Field 'this->conn->database_' in the object of this method has base type 'database'.
result_impl::list_remove ( )Field 'this->db_' in the object of this method has base type 'database'.
result_impl::result_impl [in-charge] ( connection& p1 )Field 'p1->results_->db_' in 1st parameter 'p1' (reference) has base type 'database'.
result_impl::~result_impl [in-charge] ( )Field 'this->db_' in the object of this method has base type 'database'.
tracer::deallocate ( connection& p1, statement const& p2 )Field 'p1->results_->db_' in 1st parameter 'p1' (reference) has base type 'database'.
tracer::execute ( connection& p1, statement const& p2 )Field 'p1->results_->db_' in 1st parameter 'p1' (reference) has base type 'database'.
tracer::prepare ( connection& p1, statement const& p2 )Field 'p1->results_->db_' in 1st parameter 'p1' (reference) has base type 'database'.
transaction::reset ( transaction_impl* p1, bool make_current )Field 'p1->connection_->prepared_queries_->conn->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'.
to the top
Other Changes in Symbols (1)
schema-catalog.hxx,
libodb-2.2.so
namespace odb
[+] schema_catalog::exists ( enum database_id p1, std::string const& name ) [static] (1)
[symbol: _ZN3odb14schema_catalog6existsENS_11database_idERKSs]
| Change | Effect |
---|
1 | The default argument "" of 2nd parameter name has been added. | No effect. |
to the top
Header Files (83)
answer.hxx
base.hxx
buffer.hxx
c-string.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
function-table.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
prepared-query.hxx
query-dynamic.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
vector-impl.hxx
vector-traits.hxx
vector.hxx
version.hxx
view-result.hxx
wrapper-p.hxx
wrapper-traits.hxx
to the top
Shared Libraries (1)
libodb-2.2.so
to the top