Binary compatibility report for the MySQL ODB library between 1.0.0 and 1.1.0 versions on x86
Test Info
Library Name | MySQL ODB |
Version #1 | 1.0.0 |
Version #2 | 1.1.0 |
CPU Type | x86 |
GCC Version | 4.6.1 |
Test Results
Total Header Files | 18 |
Total Shared Libraries | 1 |
Total Symbols / Types | 209 / 216 |
Verdict | Incompatible (26.3%) |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 24 |
Removed Symbols | High | 37 |
Problems with Data Types | High | 5 |
Medium | 2 |
Low | 10 |
Problems with Symbols | High | 0 |
Medium | 1 |
Low | 2 |
Problems with Constants | Low | 0 |
Added Symbols (24)
database.hxx,
libodb-mysql-1.1.so
namespace odb::mysql
database::execute ( char const* statement, std::size_t length )
[symbol: _ZN3odb5mysql8database7executeEPKcj]
statement.hxx,
libodb-mysql-1.1.so
namespace odb::mysql
delete_statement::delete_statement [in-charge] ( connection& conn, std::string const& statement, binding& cond )
[symbol: _ZN3odb5mysql16delete_statementC1ERNS0_10connectionERKSsRNS0_7bindingE]
delete_statement::delete_statement [not-in-charge] ( connection& conn, std::string const& statement, binding& cond )
[symbol: _ZN3odb5mysql16delete_statementC2ERNS0_10connectionERKSsRNS0_7bindingE]
delete_statement::execute ( )
[symbol: _ZN3odb5mysql16delete_statement7executeEv]
delete_statement::~delete_statement [in-charge-deleting] ( )
[symbol: _ZN3odb5mysql16delete_statementD0Ev]
delete_statement::~delete_statement [in-charge] ( )
[symbol: _ZN3odb5mysql16delete_statementD1Ev]
delete_statement::~delete_statement [not-in-charge] ( )
[symbol: _ZN3odb5mysql16delete_statementD2Ev]
insert_statement::execute ( )
[symbol: _ZN3odb5mysql16insert_statement7executeEv]
insert_statement::insert_statement [in-charge] ( connection& conn, std::string const& statement, binding& data )
[symbol: _ZN3odb5mysql16insert_statementC1ERNS0_10connectionERKSsRNS0_7bindingE]
insert_statement::insert_statement [not-in-charge] ( connection& conn, std::string const& statement, binding& data )
[symbol: _ZN3odb5mysql16insert_statementC2ERNS0_10connectionERKSsRNS0_7bindingE]
insert_statement::~insert_statement [in-charge-deleting] ( )
[symbol: _ZN3odb5mysql16insert_statementD0Ev]
insert_statement::~insert_statement [in-charge] ( )
[symbol: _ZN3odb5mysql16insert_statementD1Ev]
insert_statement::~insert_statement [not-in-charge] ( )
[symbol: _ZN3odb5mysql16insert_statementD2Ev]
select_statement::cache ( )
[symbol: _ZN3odb5mysql16select_statement5cacheEv]
select_statement::cancel ( )
[symbol: _ZN3odb5mysql16select_statement6cancelEv]
select_statement::execute ( )
[symbol: _ZN3odb5mysql16select_statement7executeEv]
select_statement::fetch ( )
[symbol: _ZN3odb5mysql16select_statement5fetchEv]
select_statement::free_result ( )
[symbol: _ZN3odb5mysql16select_statement11free_resultEv]
select_statement::refetch ( )
[symbol: _ZN3odb5mysql16select_statement7refetchEv]
select_statement::select_statement [in-charge] ( connection& conn, std::string const& statement, binding& cond, binding& data )
[symbol: _ZN3odb5mysql16select_statementC1ERNS0_10connectionERKSsRNS0_7bindingES7_]
select_statement::select_statement [not-in-charge] ( connection& conn, std::string const& statement, binding& cond, binding& data )
[symbol: _ZN3odb5mysql16select_statementC2ERNS0_10connectionERKSsRNS0_7bindingES7_]
select_statement::~select_statement [in-charge-deleting] ( )
[symbol: _ZN3odb5mysql16select_statementD0Ev]
select_statement::~select_statement [in-charge] ( )
[symbol: _ZN3odb5mysql16select_statementD1Ev]
select_statement::~select_statement [not-in-charge] ( )
[symbol: _ZN3odb5mysql16select_statementD2Ev]
to the top
Removed Symbols (37)
statement.hxx,
libodb-mysql-1.0.so
namespace odb::mysql
erase_statement::erase_statement [in-charge] ( connection& conn, std::string const& statement, binding& id )
[symbol: _ZN3odb5mysql15erase_statementC1ERNS0_10connectionERKSsRNS0_7bindingE]
erase_statement::erase_statement [not-in-charge] ( connection& conn, std::string const& statement, binding& id )
[symbol: _ZN3odb5mysql15erase_statementC2ERNS0_10connectionERKSsRNS0_7bindingE]
erase_statement::execute ( )
[symbol: _ZN3odb5mysql15erase_statement7executeEv]
erase_statement::~erase_statement [in-charge-deleting] ( )
[symbol: _ZN3odb5mysql15erase_statementD0Ev]
erase_statement::~erase_statement [in-charge] ( )
[symbol: _ZN3odb5mysql15erase_statementD1Ev]
erase_statement::~erase_statement [not-in-charge] ( )
[symbol: _ZN3odb5mysql15erase_statementD2Ev]
find_statement::cancel ( )
[symbol: _ZN3odb5mysql14find_statement6cancelEv]
find_statement::execute ( )
[symbol: _ZN3odb5mysql14find_statement7executeEv]
find_statement::find_statement [in-charge] ( connection& conn, std::string const& statement, binding& id, binding& image )
[symbol: _ZN3odb5mysql14find_statementC1ERNS0_10connectionERKSsRNS0_7bindingES7_]
find_statement::find_statement [not-in-charge] ( connection& conn, std::string const& statement, binding& id, binding& image )
[symbol: _ZN3odb5mysql14find_statementC2ERNS0_10connectionERKSsRNS0_7bindingES7_]
find_statement::free_result ( )
[symbol: _ZN3odb5mysql14find_statement11free_resultEv]
find_statement::refetch ( )
[symbol: _ZN3odb5mysql14find_statement7refetchEv]
find_statement::~find_statement [in-charge-deleting] ( )
[symbol: _ZN3odb5mysql14find_statementD0Ev]
find_statement::~find_statement [in-charge] ( )
[symbol: _ZN3odb5mysql14find_statementD1Ev]
find_statement::~find_statement [not-in-charge] ( )
[symbol: _ZN3odb5mysql14find_statementD2Ev]
persist_statement::execute ( )
[symbol: _ZN3odb5mysql17persist_statement7executeEv]
persist_statement::persist_statement [in-charge] ( connection& conn, std::string const& statement, binding& image )
[symbol: _ZN3odb5mysql17persist_statementC1ERNS0_10connectionERKSsRNS0_7bindingE]
persist_statement::persist_statement [not-in-charge] ( connection& conn, std::string const& statement, binding& image )
[symbol: _ZN3odb5mysql17persist_statementC2ERNS0_10connectionERKSsRNS0_7bindingE]
persist_statement::~persist_statement [in-charge-deleting] ( )
[symbol: _ZN3odb5mysql17persist_statementD0Ev]
persist_statement::~persist_statement [in-charge] ( )
[symbol: _ZN3odb5mysql17persist_statementD1Ev]
persist_statement::~persist_statement [not-in-charge] ( )
[symbol: _ZN3odb5mysql17persist_statementD2Ev]
query_statement::cache ( )
[symbol: _ZN3odb5mysql15query_statement5cacheEv]
query_statement::cancel ( )
[symbol: _ZN3odb5mysql15query_statement6cancelEv]
query_statement::execute ( )
[symbol: _ZN3odb5mysql15query_statement7executeEv]
query_statement::fetch ( )
[symbol: _ZN3odb5mysql15query_statement5fetchEv]
query_statement::free_result ( )
[symbol: _ZN3odb5mysql15query_statement11free_resultEv]
query_statement::query_statement [in-charge] ( connection& conn, std::string const& statement, binding& image, MYSQL_BIND* parameters )
[symbol: _ZN3odb5mysql15query_statementC1ERNS0_10connectionERKSsRNS0_7bindingEP13st_mysql_bind]
query_statement::query_statement [not-in-charge] ( connection& conn, std::string const& statement, binding& image, MYSQL_BIND* parameters )
[symbol: _ZN3odb5mysql15query_statementC2ERNS0_10connectionERKSsRNS0_7bindingEP13st_mysql_bind]
query_statement::refetch ( )
[symbol: _ZN3odb5mysql15query_statement7refetchEv]
query_statement::result_size ( )
[symbol: _ZN3odb5mysql15query_statement11result_sizeEv]
query_statement::~query_statement [in-charge-deleting] ( )
[symbol: _ZN3odb5mysql15query_statementD0Ev]
query_statement::~query_statement [in-charge] ( )
[symbol: _ZN3odb5mysql15query_statementD1Ev]
query_statement::~query_statement [not-in-charge] ( )
[symbol: _ZN3odb5mysql15query_statementD2Ev]
vtable for erase_statement [data]
[symbol: _ZTVN3odb5mysql15erase_statementE]
vtable for find_statement [data]
[symbol: _ZTVN3odb5mysql14find_statementE]
vtable for persist_statement [data]
[symbol: _ZTVN3odb5mysql17persist_statementE]
vtable for query_statement [data]
[symbol: _ZTVN3odb5mysql15query_statementE]
to the top
Problems with Data Types, High Severity (5)
database.hxx
namespace odb
[+] class database (1)
| Change |
Effect |
1 | Pure virtual method database::execute ( char const*, std::size_t ) 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) - 5 entries | Virtual Table (New) - 6 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 |
[+] affected symbols (1)
database::begin ( )This method is from 'database' class.
options.hxx
namespace details::cli
[+] class argv_file_scanner (1)
| Change |
Effect |
1 | Size of this class has been changed from 72 bytes to 92 bytes. | 1) The class has only inline or auto-generated constructors which will be copied to applications at compile time and will allocate an older memory layout. Call of any exported method of this class may access a memory outside the allocated objects or inside the older memory structure and result in crash or incorrect behavior of applications. 2) The memory layout and size of subclasses will be changed. |
[+] affected symbols (5)
argv_file_scanner::more ( )This method is from 'argv_file_scanner' class.
argv_file_scanner::next ( )This method is from 'argv_file_scanner' class.
argv_file_scanner::peek ( )This method is from 'argv_file_scanner' class.
argv_file_scanner::skip ( )This method is from 'argv_file_scanner' class.
argv_file_scanner::~argv_file_scanner [in-charge] ( )This method is from 'argv_file_scanner' class.
query.hxx
namespace odb::mysql
[+] class query (1)
| Change |
Effect |
1 | Size of this class has been increased from 16 bytes to 28 bytes. | 1) An object of this class can be allocated by the applications and old size will be hardcoded at the compile time. Call of any exported constructor will break the memory of neighboring objects on the stack or heap. 2) The memory layout and size of subclasses will be changed. |
[+] affected symbols (5)
query::clause ( ) constThis method is from 'query' class.
query::operator+= ( query const& p1 )1st parameter 'p1' (reference) has base type 'query'.
query::operator = ( query const& p1 )1st parameter 'p1' (reference) has base type 'query'.
query::parameters ( ) constThis method is from 'query' class.
query::query [in-charge] ( query const& p1 )1st parameter 'p1' (reference) has base type 'query'.
statement.hxx
namespace odb::mysql
[+] class object_statements_base (2)
| Change |
Effect |
1 | Size of this class has been changed from 16 bytes to 12 bytes. | 1) The class has only inline or auto-generated constructors which will be copied to applications at compile time and will allocate an older memory layout. Call of any exported method of this class may access a memory outside the allocated objects or inside the older memory structure and result in crash or incorrect behavior of applications. 2) The memory layout and size of subclasses will be changed. |
2 | Base class odb::details::shared_base has been removed. | The memory layout in this class has been shifted by 8 bytes. |
[+] show v-table (old and new)
Offset | Virtual Table (Old) - 4 entries | Virtual Table (New) - 4 entries |
---|
0 |
(int (*)(...))0 |
(int (*)(...))0 |
4 |
(int (*)(...))(& typeinfo) |
(int (*)(...))(& typeinfo) |
8 |
~object_statements_base |
~object_statements_base |
12 |
~object_statements_base |
~object_statements_base |
[+] affected symbols (1)
object_statements_base::~object_statements_base [in-charge] ( )This method is from 'object_statements_base' class.
to the top
Problems with Data Types, Medium Severity (2)
statement.hxx
namespace odb::mysql
[+] class object_statements_base (1)
| Change |
Effect |
1 | Type of field conn_ has been changed from connection& (1024 bytes) to object_statements_base::connection_type& (1004 bytes). | 1) This field may be incorrectly initialized or accessed by applications. 2) Size of the inclusive type has been changed. |
[+] affected symbols (1)
object_statements_base::~object_statements_base [in-charge] ( )This method is from 'object_statements_base' class.
[+] class statement (1)
| Change |
Effect |
1 | Size of field conn_ has been changed from 1024 bytes to 1004 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)
statement::cancel ( )This method is from 'statement' class.
statement::statement [in-charge] ( connection& p1 )This constructor is from 'statement' class.
to the top
Problems with Symbols, Medium Severity (1)
query.hxx,
libodb-mysql-1.0.so
namespace odb::mysql
[+] query::parameters ( ) const (1)
[symbol: _ZNK3odb5mysql5query10parametersEv]
| Change | Effect |
---|
1 | Base type of return value has been changed from struct st_mysql_bind (64 bytes) to binding (12 bytes). | Applications will obtain a different return value and execution may change. |
to the top
Problems with Data Types, Low Severity (10)
connection-factory.hxx
namespace odb::mysql
[+] class connection_pool_factory::pooled_connection (1)
| Change |
Effect |
1 | Size of this type has been changed from 1036 bytes to 1016 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (2)
connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection_factory::database_type& p1, connection_pool_factory* p2 )This constructor is from 'connection_pool_factory::pooled_connection' class.
connection_pool_factory::pooled_connection::~pooled_connection [in-charge] ( )This method is from 'connection_pool_factory::pooled_connection' class.
connection.hxx
namespace odb::mysql
[+] class connection (3)
| Change |
Effect |
1 | Field db_ has been added to this type. | 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 1024 bytes to 1004 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
3 | Type of field statement_cache_ has been changed from connection::statement_cache_type (28 bytes) to std::auto_ptr<statement_cache> (4 bytes). | Size of the inclusive type has been changed. |
[+] affected symbols (6)
connection::alloc_stmt_handle ( )This method is from 'connection' class.
connection::free_stmt_handle ( MYSQL_STMT* p1 )This method is from 'connection' class.
connection::~connection [in-charge] ( )This method is from 'connection' class.
statement::cancel ( )Field 'this->conn_' in the object of this method has base type 'connection'.
statement::statement [in-charge] ( connection& p1 )1st parameter 'p1' (reference) has base type 'connection'.
update_statement::update_statement [in-charge] ( connection& conn, std::string const& statement, binding& id, binding& image )1st parameter 'conn' (reference) has base type 'connection'.
options.hxx
namespace details::cli
[+] class argv_file_scanner (3)
| Change |
Effect |
1 | Field option_info_ has been added to this type. | 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 options_ has been added to this type. | 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 options_count_ has been added to this type. | 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. |
[+] affected symbols (5)
argv_file_scanner::more ( )This method is from 'argv_file_scanner' class.
argv_file_scanner::next ( )This method is from 'argv_file_scanner' class.
argv_file_scanner::peek ( )This method is from 'argv_file_scanner' class.
argv_file_scanner::skip ( )This method is from 'argv_file_scanner' class.
argv_file_scanner::~argv_file_scanner [in-charge] ( )This method is from 'argv_file_scanner' class.
query.hxx
namespace odb::mysql
[+] class query (2)
| Change |
Effect |
1 | Field bind_ has been added to this type. | 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 binding_ became mutable. | The value of this field can begin to change in ways outside the control of old client applications. |
[+] affected symbols (5)
query::clause ( ) constThis method is from 'query' class.
query::operator+= ( query const& p1 )1st parameter 'p1' (reference) has base type 'query'.
query::operator = ( query const& p1 )1st parameter 'p1' (reference) has base type 'query'.
query::parameters ( ) constThis method is from 'query' class.
query::query [in-charge] ( query const& p1 )1st parameter 'p1' (reference) has base type 'query'.
statement.hxx
namespace odb::mysql
[+] class object_statements_base (1)
| Change |
Effect |
1 | Field locked_ 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. |
[+] affected symbols (1)
object_statements_base::~object_statements_base [in-charge] ( )This method is from 'object_statements_base' class.
to the top
Problems with Symbols, Low Severity (2)
connection-factory.hxx,
libodb-mysql-1.0.so
namespace odb::mysql
[+] connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection_factory::database_type& p1, connection_pool_factory* p2 ) (1)
changed to:connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection::database_type& p1, connection_pool_factory* p2 )
[symbol: _ZN3odb5mysql23connection_pool_factory17pooled_connectionC1ERNS0_8databaseEPS1_]
| Change | Effect |
---|
1 | Type of 1st parameter p1 has been changed from connection_factory::database_type& to connection::database_type&. | Replacement of parameter data type may indicate a change in its semantic meaning. |
[+] connection_pool_factory::pooled_connection::pooled_connection [not-in-charge] ( connection_factory::database_type& p1, connection_pool_factory* p2 ) (1)
changed to:connection_pool_factory::pooled_connection::pooled_connection [not-in-charge] ( connection::database_type& p1, connection_pool_factory* p2 )
[symbol: _ZN3odb5mysql23connection_pool_factory17pooled_connectionC2ERNS0_8databaseEPS1_]
| Change | Effect |
---|
1 | Type of 1st parameter p1 has been changed from connection_factory::database_type& to connection::database_type&. | Replacement of parameter data type may indicate a change in its semantic meaning. |
to the top
Header Files (18)
config.h
config.hxx
connection-factory.hxx
connection.hxx
database.hxx
exceptions.hxx
export.hxx
forward.hxx
mysql-types.hxx
mysql.hxx
options.hxx
query.hxx
result.hxx
statement.hxx
traits.hxx
transaction-impl.hxx
transaction.hxx
version.hxx
to the top
Shared Libraries (1)
libodb-mysql-1.0.so
to the top