Binary compatibility report for the MySQL ODB library between 2.3.0 and 2.4.0 versions on x86
Test Info
Library Name | MySQL ODB |
Version #1 | 2.3.0 |
Version #2 | 2.4.0 |
CPU Type | x86 |
GCC Version | 4.6.1 |
Test Results
Total Header Files | 38 |
Total Shared Libraries | 1 |
Total Symbols / Types | 278 / 329 |
Verdict | Incompatible (15.1%) |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 6 |
Removed Symbols | High | 5 |
Problems with Data Types | High | 8 |
Medium | 0 |
Low | 8 |
Problems with Symbols | High | 4 |
Medium | 0 |
Low | 0 |
Problems with Constants | Low | 0 |
Added Symbols (6)
exceptions.hxx,
libodb-mysql-2.4.so
namespace odb::mysql
cli_exception::clone ( ) const
[symbol: _ZNK3odb5mysql13cli_exception5cloneEv]
database_exception::clone ( ) const
[symbol: _ZNK3odb5mysql18database_exception5cloneEv]
statement.hxx,
libodb-mysql-2.4.so
namespace odb::mysql
insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, binding* returning, bool copy_text )
[symbol: _ZN3odb5mysql16insert_statementC1ERNS0_10connectionEPKcbRNS0_7bindingEPS6_b]
insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, binding& param, binding* returning )
[symbol: _ZN3odb5mysql16insert_statementC1ERNS0_10connectionERKSsbRNS0_7bindingEPS6_]
insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, binding* returning, bool copy_text )
[symbol: _ZN3odb5mysql16insert_statementC2ERNS0_10connectionEPKcbRNS0_7bindingEPS6_b]
insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, binding& param, binding* returning )
[symbol: _ZN3odb5mysql16insert_statementC2ERNS0_10connectionERKSsbRNS0_7bindingEPS6_]
to the top
Removed Symbols (5)
statement.hxx,
libodb-mysql-2.3.so
namespace odb::mysql
insert_statement::id ( )
[symbol: _ZN3odb5mysql16insert_statement2idEv]
insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, bool copy_text )
[symbol: _ZN3odb5mysql16insert_statementC1ERNS0_10connectionEPKcbRNS0_7bindingEb]
insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, binding& param )
[symbol: _ZN3odb5mysql16insert_statementC1ERNS0_10connectionERKSsbRNS0_7bindingE]
insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, bool copy_text )
[symbol: _ZN3odb5mysql16insert_statementC2ERNS0_10connectionEPKcbRNS0_7bindingEb]
insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, binding& param )
[symbol: _ZN3odb5mysql16insert_statementC2ERNS0_10connectionERKSsbRNS0_7bindingE]
to the top
Problems with Data Types, High Severity (8)
exception.hxx
namespace odb
[+] class exception (3)
| Change |
Effect |
1 | Base class details::shared_base has been added. | 1) Size of the class has been changed from 4 bytes to 12 bytes. 2) The memory layout in this class has been shifted by 8 bytes. |
2 | Size of this class has been changed from 4 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. |
3 | Pure virtual method exception::clone ( ) 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) - 5 entries | Virtual Table (New) - 6 entries |
---|
0 |
(int (*)(...))0 |
(int (*)(...))0 |
4 |
(int (*)(...))(& typeinfo) |
(int (*)(...))(& typeinfo) |
8 |
~exception |
~exception |
12 |
~exception |
~exception |
16 |
__cxa_pure_virtual |
__cxa_pure_virtual |
20 |
|
__cxa_pure_virtual |
[+] affected symbols (8)
database_exception::~database_exception [in-charge] ( )This method is from derived class 'database_exception'.
exception::~exception [in-charge] ( )This method is from 'exception' class.
mysql::cli_exception::cli_exception [in-charge] ( std::string const& what )This constructor is from derived class 'mysql::cli_exception'.
mysql::cli_exception::what ( ) constThis method is from derived class 'mysql::cli_exception'.
mysql::cli_exception::~cli_exception [in-charge] ( )This method is from derived class 'mysql::cli_exception'.
mysql::database_exception::database_exception [in-charge] ( unsigned int p1, std::string const& sqlstate, std::string const& message )This constructor is from derived class 'mysql::database_exception'.
mysql::database_exception::what ( ) constThis method is from derived class 'mysql::database_exception'.
mysql::database_exception::~database_exception [in-charge] ( )This method is from derived class 'mysql::database_exception'.
exceptions.hxx
namespace odb
[+] class database_exception (1)
| Change |
Effect |
1 | Size of this class has been changed from 4 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. |
[+] affected symbols (4)
database_exception::~database_exception [in-charge] ( )This method is from 'database_exception' class.
mysql::database_exception::database_exception [in-charge] ( unsigned int p1, std::string const& sqlstate, std::string const& message )This constructor is from derived class 'mysql::database_exception'.
mysql::database_exception::what ( ) constThis method is from derived class 'mysql::database_exception'.
mysql::database_exception::~database_exception [in-charge] ( )This method is from derived class 'mysql::database_exception'.
exceptions.hxx
namespace odb::mysql
[+] class cli_exception (1)
| Change |
Effect |
1 | Size of this class has been increased from 8 bytes to 16 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 (3)
cli_exception::cli_exception [in-charge] ( std::string const& what )This constructor is from 'cli_exception' class.
cli_exception::what ( ) constThis method is from 'cli_exception' class.
cli_exception::~cli_exception [in-charge] ( )This method is from 'cli_exception' class.
[+] class database_exception (1)
| Change |
Effect |
1 | Size of this class has been increased from 20 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 (3)
database_exception::database_exception [in-charge] ( unsigned int p1, std::string const& sqlstate, std::string const& message )This constructor is from 'database_exception' class.
database_exception::what ( ) constThis method is from 'database_exception' class.
database_exception::~database_exception [in-charge] ( )This method is from 'database_exception' class.
statement.hxx
namespace odb::mysql
[+] class insert_statement (1)
| Change |
Effect |
1 | Size of this class has been increased from 36 bytes to 40 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 (2)
insert_statement::execute ( )This method is from 'insert_statement' class.
insert_statement::~insert_statement [in-charge] ( )This method is from 'insert_statement' class.
[+] class select_statement (1)
| Change |
Effect |
1 | Size of this class has been increased from 56 bytes to 60 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 (11)
select_statement::cache ( )This method is from 'select_statement' class.
select_statement::cancel ( )This method is from 'select_statement' class.
select_statement::execute ( )This method is from 'select_statement' class.
select_statement::fetch ( bool next )This method is from 'select_statement' class.
select_statement::free_result ( )This method is from 'select_statement' class.
select_statement::refetch ( )This method is from 'select_statement' class.
select_statement::select_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, bool optimize_text, binding& result, bool copy_text )This constructor is from 'select_statement' class.
select_statement::select_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, bool optimize_text, binding& param, binding& result, bool copy_text )This constructor is from 'select_statement' class.
select_statement::select_statement [in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, bool optimize_text, binding& result )This constructor is from 'select_statement' class.
select_statement::select_statement [in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, bool optimize_text, binding& param, binding& result )This constructor is from 'select_statement' class.
select_statement::~select_statement [in-charge] ( )This method is from 'select_statement' class.
to the top
Problems with Symbols, High Severity (4)
statement.hxx,
libodb-mysql-2.3.so
namespace odb::mysql
[+] insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, bool copy_text ) (1)
changed to:insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, binding* returning, bool copy_text )
[symbol: _ZN3odb5mysql16insert_statementC1ERNS0_10connectionEPKcbRNS0_7bindingEb]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb5mysql16insert_statementC1ERNS0_10connectionEPKcbRNS0_7bindingEb to _ZN3odb5mysql16insert_statementC1ERNS0_10connectionEPKcbRNS0_7bindingEPS6_b. This may cause "undefined reference" linker error in old client applications. |
[+] insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, bool copy_text ) (1)
changed to:insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, binding* returning, bool copy_text )
[symbol: _ZN3odb5mysql16insert_statementC2ERNS0_10connectionEPKcbRNS0_7bindingEb]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb5mysql16insert_statementC2ERNS0_10connectionEPKcbRNS0_7bindingEb to _ZN3odb5mysql16insert_statementC2ERNS0_10connectionEPKcbRNS0_7bindingEPS6_b. This may cause "undefined reference" linker error in old client applications. |
[+] insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, binding& param ) (1)
changed to:insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, binding* returning, bool copy_text )
[symbol: _ZN3odb5mysql16insert_statementC1ERNS0_10connectionERKSsbRNS0_7bindingE]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb5mysql16insert_statementC1ERNS0_10connectionERKSsbRNS0_7bindingE to _ZN3odb5mysql16insert_statementC1ERNS0_10connectionEPKcbRNS0_7bindingEPS6_b. This may cause "undefined reference" linker error in old client applications. |
[+] insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, binding& param ) (1)
changed to:insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, char const* text, bool process_text, binding& param, binding* returning, bool copy_text )
[symbol: _ZN3odb5mysql16insert_statementC2ERNS0_10connectionERKSsbRNS0_7bindingE]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb5mysql16insert_statementC2ERNS0_10connectionERKSsbRNS0_7bindingE to _ZN3odb5mysql16insert_statementC2ERNS0_10connectionEPKcbRNS0_7bindingEPS6_b. This may cause "undefined reference" linker error in old client applications. |
to the top
Problems with Data Types, Low Severity (8)
database.hxx
namespace odb
[+] typedef database::query_factory_map (1)
| Change |
Effect |
1 | Base type has been changed from std::map<char const*,void(*)(char const*,connection&),details::c_string_comparator> to std::map<char const*,details::function_wrapper<...>,details::c_string_comparator>. | Replacement of the base data type may indicate a change in its semantic meaning. |
[+] affected symbols (1)
mysql::database::connection_ ( )Field 'retval->database_->query_factory_map_' in return value (pointer) has type 'database::query_factory_map'.
exception.hxx
namespace details
[+] class exception (1)
| Change |
Effect |
1 | Size of this type has been changed from 4 bytes to 12 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (1)
exception::~exception [in-charge] ( )This method is from 'exception' class.
exceptions.hxx
namespace odb
[+] class connection_lost (1)
| Change |
Effect |
1 | Size of this type has been changed from 4 bytes to 12 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (1)
connection_lost::~connection_lost [in-charge] ( )This method is from 'connection_lost' class.
[+] class deadlock (1)
| Change |
Effect |
1 | Size of this type has been changed from 4 bytes to 12 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (1)
deadlock::~deadlock [in-charge] ( )This method is from 'deadlock' class.
[+] class recoverable (1)
| Change |
Effect |
1 | Size of this type has been changed from 4 bytes to 12 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (1)
recoverable::~recoverable [in-charge] ( )This method is from 'recoverable' class.
exceptions.hxx
namespace odb::details
[+] class posix_exception (1)
| Change |
Effect |
1 | Size of this type has been changed from 8 bytes to 16 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols (1)
posix_exception::~posix_exception [in-charge] ( )This method is from 'posix_exception' class.
statement.hxx
namespace odb::mysql
[+] class insert_statement (1)
| Change |
Effect |
1 | Field returning_ 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 (2)
insert_statement::execute ( )This method is from 'insert_statement' class.
insert_statement::~insert_statement [in-charge] ( )This method is from 'insert_statement' class.
[+] class select_statement (1)
| Change |
Effect |
1 | Field out_params_ 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 (11)
select_statement::cache ( )This method is from 'select_statement' class.
select_statement::cancel ( )This method is from 'select_statement' class.
select_statement::execute ( )This method is from 'select_statement' class.
select_statement::fetch ( bool next )This method is from 'select_statement' class.
select_statement::free_result ( )This method is from 'select_statement' class.
select_statement::refetch ( )This method is from 'select_statement' class.
select_statement::select_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, bool optimize_text, binding& result, bool copy_text )This constructor is from 'select_statement' class.
select_statement::select_statement [in-charge] ( statement::connection_type& conn, char const* text, bool process_text, bool optimize_text, binding& param, binding& result, bool copy_text )This constructor is from 'select_statement' class.
select_statement::select_statement [in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, bool optimize_text, binding& result )This constructor is from 'select_statement' class.
select_statement::select_statement [in-charge] ( statement::connection_type& conn, std::string const& text, bool process_text, bool optimize_text, binding& param, binding& result )This constructor is from 'select_statement' class.
select_statement::~select_statement [in-charge] ( )This method is from 'select_statement' class.
to the top
Header Files (38)
auto-handle.hxx
binding.hxx
config.h
config.hxx
connection-factory.hxx
connection.hxx
container-statements.hxx
conversion.hxx
database.hxx
enum.hxx
error.hxx
exceptions.hxx
export.hxx
forward.hxx
mysql-types.hxx
mysql.hxx
no-id-object-result.hxx
no-id-object-statements.hxx
options.hxx
polymorphic-object-result.hxx
polymorphic-object-statements.hxx
prepared-query.hxx
query-dynamic.hxx
query.hxx
section-statements.hxx
simple-object-result.hxx
simple-object-statements.hxx
statement-cache.hxx
statement.hxx
statements-base.hxx
tracer.hxx
traits-calls.hxx
traits.hxx
transaction-impl.hxx
transaction.hxx
version.hxx
view-result.hxx
view-statements.hxx
to the top
Shared Libraries (1)
libodb-mysql-2.3.so
to the top