Binary compatibility report for the PostgreSQL ODB library between 2.1.1 and 2.2.0 versions on x86
Test Info
Library Name | PostgreSQL ODB |
Version #1 | 2.1.1 |
Version #2 | 2.2.0 |
CPU Type | x86 |
GCC Version | 4.6.1 |
Test Results
Total Header Files | 35 |
Total Shared Libraries | 1 |
Total Symbols / Types | 265 / 217 |
Verdict | Incompatible (37.2%) |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 24 |
Removed Symbols | High | 15 |
Problems with Data Types | High | 8 |
Medium | 8 |
Low | 5 |
Problems with Symbols | High | 31 |
Medium | 0 |
Low | 0 |
Problems with Constants | Low | 0 |
Added Symbols (24)
prepared-query.hxx,
libodb-pgsql-2.2.so
namespace odb::pgsql
prepared_query_impl::~prepared_query_impl [in-charge-deleting] ( )
[symbol: _ZN3odb5pgsql19prepared_query_implD0Ev]
prepared_query_impl::~prepared_query_impl [in-charge] ( )
[symbol: _ZN3odb5pgsql19prepared_query_implD1Ev]
prepared_query_impl::~prepared_query_impl [not-in-charge] ( )
[symbol: _ZN3odb5pgsql19prepared_query_implD2Ev]
query.hxx,
libodb-pgsql-2.2.so
namespace odb::pgsql
operator! ( query_base const& p1 )
[symbol: _ZN3odb5pgsqlntERKNS0_10query_baseE]
operator&& ( query_base const& p1, query_base const& p2 )
[symbol: _ZN3odb5pgsqlaaERKNS0_10query_baseES3_]
operator|| ( query_base const& p1, query_base const& p2 )
[symbol: _ZN3odb5pgsqlooERKNS0_10query_baseES3_]
query_base::append ( char const* table, char const* column )
[symbol: _ZN3odb5pgsql10query_base6appendEPKcS3_]
query_base::append ( odb::details::shared_ptr<query_param> p1, char const* conv )
[symbol: _ZN3odb5pgsql10query_base6appendENS_7details10shared_ptrINS0_11query_paramEEEPKc]
query_base::append ( std::string const& native )
[symbol: _ZN3odb5pgsql10query_base6appendERKSs]
query_base::clause ( ) const
[symbol: _ZNK3odb5pgsql10query_base6clauseEv]
query_base::clause_prefix ( ) const
[symbol: _ZNK3odb5pgsql10query_base13clause_prefixEv]
query_base::init_parameters ( ) const
[symbol: _ZNK3odb5pgsql10query_base15init_parametersEv]
query_base::operator+= ( query_base const& p1 )
[symbol: _ZN3odb5pgsql10query_basepLERKS1_]
query_base::operator = ( query_base const& p1 )
[symbol: _ZN3odb5pgsql10query_baseaSERKS1_]
query_base::optimize ( )
[symbol: _ZN3odb5pgsql10query_base8optimizeEv]
query_base::query_base [in-charge] ( query_base const& p1 )
[symbol: _ZN3odb5pgsql10query_baseC1ERKS1_]
query_base::query_base [in-charge] ( odb::query_base const& p1 )
[symbol: _ZN3odb5pgsql10query_baseC1ERKNS_10query_baseE]
query_base::query_base [not-in-charge] ( query_base const& p1 )
[symbol: _ZN3odb5pgsql10query_baseC2ERKS1_]
query_base::query_base [not-in-charge] ( odb::query_base const& p1 )
[symbol: _ZN3odb5pgsql10query_baseC2ERKNS_10query_baseE]
query_base::true_expr [data]
[symbol: _ZN3odb5pgsql10query_base9true_exprE]
statement.hxx,
libodb-pgsql-2.2.so
namespace odb::pgsql
statement::connection ( )
[symbol: _ZN3odb5pgsql9statement10connectionEv]
traits.hxx,
libodb-pgsql-2.2.so
namespace odb::pgsql
c_array_value_traits_base::set_image ( odb::details::buffer& b, std::size_t& n, bool& is_null, char const* v, std::size_t N ) [static]
[symbol: _ZN3odb5pgsql25c_array_value_traits_base9set_imageERNS_7details12basic_bufferIcEERjRbPKcj]
c_array_value_traits_base::set_value ( char*const& v, odb::details::buffer const& b, std::size_t n, bool is_null, std::size_t N ) [static]
[symbol: _ZN3odb5pgsql25c_array_value_traits_base9set_valueERKPcRKNS_7details12basic_bufferIcEEjbj]
default_value_traits<std::string,(enum database_type_id)10>::set_image ( odb::details::buffer& p1, std::size_t& n, bool& is_null, std::string const& p4 ) [static]
[symbol: _ZN3odb5pgsql20default_value_traitsISsLNS0_16database_type_idE10EE9set_imageERNS_7details12basic_bufferIcEERjRbRKSs]
to the top
Removed Symbols (15)
query.hxx,
libodb-pgsql-2.1.so
namespace odb::pgsql
operator! ( query const& p1 )
[symbol: _ZN3odb5pgsqlntERKNS0_5queryE]
operator&& ( query const& p1, query const& p2 )
[symbol: _ZN3odb5pgsqlaaERKNS0_5queryES3_]
operator|| ( query const& p1, query const& p2 )
[symbol: _ZN3odb5pgsqlooERKNS0_5queryES3_]
query::append ( char const* table, char const* column )
[symbol: _ZN3odb5pgsql5query6appendEPKcS3_]
query::append ( std::string const& native )
[symbol: _ZN3odb5pgsql5query6appendERKSs]
query::clause ( ) const
[symbol: _ZNK3odb5pgsql5query6clauseEv]
query::clause_prefix ( ) const
[symbol: _ZNK3odb5pgsql5query13clause_prefixEv]
query::operator+= ( query const& p1 )
[symbol: _ZN3odb5pgsql5querypLERKS1_]
query::operator = ( query const& p1 )
[symbol: _ZN3odb5pgsql5queryaSERKS1_]
query::optimize ( )
[symbol: _ZN3odb5pgsql5query8optimizeEv]
query::parameters_binding ( ) const
[symbol: _ZNK3odb5pgsql5query18parameters_bindingEv]
query::query [in-charge] ( query const& p1 )
[symbol: _ZN3odb5pgsql5queryC1ERKS1_]
query::query [not-in-charge] ( query const& p1 )
[symbol: _ZN3odb5pgsql5queryC2ERKS1_]
query::true_expr [data]
[symbol: _ZN3odb5pgsql5query9true_exprE]
traits.hxx,
libodb-pgsql-2.1.so
namespace odb::pgsql
string_value_traits::set_image ( odb::details::buffer& p1, std::size_t& n, bool& is_null, std::string const& p4 ) [static]
[symbol: _ZN3odb5pgsql19string_value_traits9set_imageERNS_7details12basic_bufferIcEERjRbRKSs]
to the top
Problems with Data Types, High Severity (8)
connection-factory.hxx
namespace pgsql
[+] class connection_pool_factory::pooled_connection (1)
| Change |
Effect |
1 | Size of this class has been increased from 52 bytes to 84 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 (4)
connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection::database_type& p1 )This constructor is from 'connection_pool_factory::pooled_connection' class.
connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection::database_type& p1, PGconn* 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_pool_factory::release ( connection_pool_factory::pooled_connection* p1 )1st parameter 'p1' (pointer) has base type 'connection_pool_factory::pooled_connection'.
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. | 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 |
__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 (2)
connection::begin ( )This method is from 'connection' class.
connection::execute ( char const* statement, std::size_t length )This method is from 'connection' class.
connection.hxx
namespace pgsql
[+] class connection (1)
| Change |
Effect |
1 | Size of this class has been increased from 40 bytes to 72 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 (13)
connection::begin ( )This method is from 'connection' class.
connection::connection [in-charge] ( connection::database_type& p1 )This constructor is from 'connection' class.
connection::connection [in-charge] ( connection::database_type& p1, PGconn* handle )This constructor 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.
connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection::database_type& p1 )This constructor is from derived class 'connection_pool_factory::pooled_connection'.
connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection::database_type& p1, PGconn* p2 )This constructor is from derived class 'connection_pool_factory::pooled_connection'.
connection_pool_factory::pooled_connection::~pooled_connection [in-charge] ( )This method is from derived class 'connection_pool_factory::pooled_connection'.
statements_base::~statements_base [in-charge] ( )Field 'this->conn_' in the object of this method 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'.
translate_error ( connection& c, PGresult* r )1st parameter 'c' (reference) has base type 'connection'.
database.hxx
namespace pgsql
[+] class database (1)
| Change |
Effect |
1 | Size of this class has been increased from 44 bytes to 72 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 (18)
connection::connection [in-charge] ( connection::database_type& p1 )1st parameter 'p1' (reference) has base type 'database'.
connection::connection [in-charge] ( connection::database_type& p1, PGconn* handle )1st parameter 'p1' (reference) has base type 'database'.
connection_pool_factory::connect ( )Field 'this->db_' in the object of this method has base type 'database'.
connection_pool_factory::create ( )Field 'this->db_' in the object of this method has base type 'database'.
connection_pool_factory::database ( connection_factory::database_type& p1 )1st parameter 'p1' (reference) has base type 'database'.
connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection::database_type& p1 )1st parameter 'p1' (reference) has base type 'database'.
connection_pool_factory::pooled_connection::pooled_connection [in-charge] ( connection::database_type& p1, PGconn* p2 )1st parameter 'p1' (reference) has base type 'database'.
connection_pool_factory::release ( connection_pool_factory::pooled_connection* p1 )Field 'this->db_' in the object of this method has base type 'database'.
connection_pool_factory::~connection_pool_factory [in-charge] ( )Field 'this->db_' in the object of this method has base type 'database'.
database::begin ( )This method is from 'database' class.
database::connection_ ( )This method is from 'database' class.
database::database [in-charge] ( int& argc, char** argv, bool erase, std::string const& extra_conninfo, details::transfer_ptr<connection_factory> p5 )This constructor is from 'database' class.
database::database [in-charge] ( std::string const& conninfo, details::transfer_ptr<connection_factory> p2 )This constructor is from 'database' class.
database::database [in-charge] ( std::string const& user, std::string const& password, std::string const& db, std::string const& host, std::string const& socket_ext, std::string const& extra_conninfo, details::transfer_ptr<connection_factory> p7 )This constructor is from 'database' class.
database::database [in-charge] ( std::string const& user, std::string const& password, std::string const& db, std::string const& host, unsigned int port, std::string const& extra_conninfo, details::transfer_ptr<connection_factory> p7 )This constructor is from 'database' class.
database::~database [in-charge] ( )This method is from 'database' class.
new_connection_factory::database ( connection_factory::database_type& p1 )1st parameter 'p1' (reference) has base type 'database'.
transaction_impl::transaction_impl [in-charge] ( transaction_impl::database_type& p1 )1st parameter 'p1' (reference) has base type 'database'.
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 (4)
pgsql::statement::text ( ) constThis method is from derived class 'pgsql::statement'.
pgsql::statement::~statement [in-charge] ( )This method is from derived class 'pgsql::statement'.
statement::text ( ) constThis method is from 'statement' class.
statement::~statement [in-charge] ( )This method is from 'statement' class.
transaction.hxx
namespace odb::pgsql
[+] class transaction (1)
| Change |
Effect |
1 | Size of this class has been changed from 8 bytes to 508 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 (1)
transaction::current ( ) [static]Return value (reference) has base type 'transaction'.
to the top
Problems with Symbols, High Severity (31)
query.hxx,
libodb-pgsql-2.1.so
namespace odb::pgsql
[+] operator! ( query const& p1 ) (1)
changed to:operator! ( query_base const& p1 )
[symbol: _ZN3odb5pgsqlntERKNS0_5queryE]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb5pgsqlntERKNS0_5queryE to _ZN3odb5pgsqlntERKNS0_10query_baseE. This may cause "undefined reference" linker error in old client applications. |
[+] operator&& ( query const& p1, query const& p2 ) (1)
changed to:operator&& ( query_base const& p1, query_base const& p2 )
[symbol: _ZN3odb5pgsqlaaERKNS0_5queryES3_]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb5pgsqlaaERKNS0_5queryES3_ to _ZN3odb5pgsqlaaERKNS0_10query_baseES3_. This may cause "undefined reference" linker error in old client applications. |
[+] operator|| ( query const& p1, query const& p2 ) (1)
changed to:operator|| ( query_base const& p1, query_base const& p2 )
[symbol: _ZN3odb5pgsqlooERKNS0_5queryES3_]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN3odb5pgsqlooERKNS0_5queryES3_ to _ZN3odb5pgsqlooERKNS0_10query_baseES3_. This may cause "undefined reference" linker error in old client applications. |
statement.hxx,
libodb-pgsql-2.1.so
namespace odb::pgsql
[+] delete_statement::delete_statement [not-in-charge] ( connection& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool copy_name_text ) (1)
changed to:delete_statement::delete_statement [not-in-charge] ( statement::connection_type& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool copy_name_text )
[symbol: _ZN3odb5pgsql16delete_statementC2ERNS0_10connectionEPKcS5_PKjjRNS0_7bindingERNS0_14native_bindingEb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] delete_statement::delete_statement [in-charge] ( connection& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool copy_name_text ) (1)
changed to:delete_statement::delete_statement [in-charge] ( statement::connection_type& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool copy_name_text )
[symbol: _ZN3odb5pgsql16delete_statementC1ERNS0_10connectionEPKcS5_PKjjRNS0_7bindingERNS0_14native_bindingEb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] delete_statement::delete_statement [not-in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param ) (1)
changed to:delete_statement::delete_statement [not-in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param )
[symbol: _ZN3odb5pgsql16delete_statementC2ERNS0_10connectionERKSsS5_PKjjRNS0_7bindingERNS0_14native_bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] delete_statement::delete_statement [in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param ) (1)
changed to:delete_statement::delete_statement [in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param )
[symbol: _ZN3odb5pgsql16delete_statementC1ERNS0_10connectionERKSsS5_PKjjRNS0_7bindingERNS0_14native_bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] delete_statement::delete_statement [not-in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, native_binding& native_param ) (1)
changed to:delete_statement::delete_statement [not-in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, native_binding& native_param )
[symbol: _ZN3odb5pgsql16delete_statementC2ERNS0_10connectionERKSsS5_PKjjRNS0_14native_bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] delete_statement::delete_statement [in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, native_binding& native_param ) (1)
changed to:delete_statement::delete_statement [in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, native_binding& native_param )
[symbol: _ZN3odb5pgsql16delete_statementC1ERNS0_10connectionERKSsS5_PKjjRNS0_14native_bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] insert_statement::insert_statement [not-in-charge] ( connection& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool returning, bool copy_name_text ) (1)
changed to:insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool returning, bool copy_name_text )
[symbol: _ZN3odb5pgsql16insert_statementC2ERNS0_10connectionEPKcS5_PKjjRNS0_7bindingERNS0_14native_bindingEbb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] insert_statement::insert_statement [in-charge] ( connection& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool returning, bool copy_name_text ) (1)
changed to:insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool returning, bool copy_name_text )
[symbol: _ZN3odb5pgsql16insert_statementC1ERNS0_10connectionEPKcS5_PKjjRNS0_7bindingERNS0_14native_bindingEbb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] insert_statement::insert_statement [not-in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool returning ) (1)
changed to:insert_statement::insert_statement [not-in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool returning )
[symbol: _ZN3odb5pgsql16insert_statementC2ERNS0_10connectionERKSsS5_PKjjRNS0_7bindingERNS0_14native_bindingEb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] insert_statement::insert_statement [in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool returning ) (1)
changed to:insert_statement::insert_statement [in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool returning )
[symbol: _ZN3odb5pgsql16insert_statementC1ERNS0_10connectionERKSsS5_PKjjRNS0_7bindingERNS0_14native_bindingEb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [not-in-charge] ( connection& conn, char const* name, char const* text, binding& result, bool copy_name_text ) (1)
changed to:select_statement::select_statement [not-in-charge] ( statement::connection_type& conn, char const* name, char const* text, binding& result, bool copy_name_text )
[symbol: _ZN3odb5pgsql16select_statementC2ERNS0_10connectionEPKcS5_RNS0_7bindingEb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [in-charge] ( connection& conn, char const* name, char const* text, binding& result, bool copy_name_text ) (1)
changed to:select_statement::select_statement [in-charge] ( statement::connection_type& conn, char const* name, char const* text, binding& result, bool copy_name_text )
[symbol: _ZN3odb5pgsql16select_statementC1ERNS0_10connectionEPKcS5_RNS0_7bindingEb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [in-charge] ( connection& conn, char const* name, char const* stmt, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, binding& result, bool copy_name_text ) (1)
changed to:select_statement::select_statement [in-charge] ( statement::connection_type& conn, char const* name, char const* stmt, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, binding& result, bool copy_name_text )
[symbol: _ZN3odb5pgsql16select_statementC1ERNS0_10connectionEPKcS5_PKjjRNS0_7bindingERNS0_14native_bindingES9_b]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [not-in-charge] ( connection& conn, char const* name, char const* stmt, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, binding& result, bool copy_name_text ) (1)
changed to:select_statement::select_statement [not-in-charge] ( statement::connection_type& conn, char const* name, char const* stmt, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, binding& result, bool copy_name_text )
[symbol: _ZN3odb5pgsql16select_statementC2ERNS0_10connectionEPKcS5_PKjjRNS0_7bindingERNS0_14native_bindingES9_b]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [in-charge] ( connection& conn, std::string const& name, std::string const& text, binding& result ) (1)
changed to:select_statement::select_statement [in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, binding& result )
[symbol: _ZN3odb5pgsql16select_statementC1ERNS0_10connectionERKSsS5_RNS0_7bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [not-in-charge] ( connection& conn, std::string const& name, std::string const& text, binding& result ) (1)
changed to:select_statement::select_statement [not-in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, binding& result )
[symbol: _ZN3odb5pgsql16select_statementC2ERNS0_10connectionERKSsS5_RNS0_7bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [not-in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, binding& result ) (1)
changed to:select_statement::select_statement [not-in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, binding& result )
[symbol: _ZN3odb5pgsql16select_statementC2ERNS0_10connectionERKSsS5_PKjjRNS0_7bindingERNS0_14native_bindingES9_]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, binding& result ) (1)
changed to:select_statement::select_statement [in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, binding& result )
[symbol: _ZN3odb5pgsql16select_statementC1ERNS0_10connectionERKSsS5_PKjjRNS0_7bindingERNS0_14native_bindingES9_]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [not-in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, native_binding& native_param, binding& result ) (1)
changed to:select_statement::select_statement [not-in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, native_binding& native_param, binding& result )
[symbol: _ZN3odb5pgsql16select_statementC2ERNS0_10connectionERKSsS5_PKjjRNS0_14native_bindingERNS0_7bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] select_statement::select_statement [in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, native_binding& native_param, binding& result ) (1)
changed to:select_statement::select_statement [in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, native_binding& native_param, binding& result )
[symbol: _ZN3odb5pgsql16select_statementC1ERNS0_10connectionERKSsS5_PKjjRNS0_14native_bindingERNS0_7bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] statement::statement [not-in-charge] ( connection& p1, char const* name, char const* text, bool copy_name_text, Oid const* types, std::size_t types_count ) (1)
changed to:statement::statement [not-in-charge] ( statement::connection_type& p1, char const* name, char const* text, bool copy_name_text, Oid const* types, std::size_t types_count )
[symbol: _ZN3odb5pgsql9statementC2ERNS0_10connectionEPKcS5_bPKjj]
| Change | Effect |
---|
1 | Type of 1st parameter p1 has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] statement::statement [in-charge] ( connection& p1, char const* name, char const* text, bool copy_name_text, Oid const* types, std::size_t types_count ) (1)
changed to:statement::statement [in-charge] ( statement::connection_type& p1, char const* name, char const* text, bool copy_name_text, Oid const* types, std::size_t types_count )
[symbol: _ZN3odb5pgsql9statementC1ERNS0_10connectionEPKcS5_bPKjj]
| Change | Effect |
---|
1 | Type of 1st parameter p1 has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] statement::statement [in-charge] ( connection& p1, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count ) (1)
changed to:statement::statement [in-charge] ( statement::connection_type& p1, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count )
[symbol: _ZN3odb5pgsql9statementC1ERNS0_10connectionERKSsS5_PKjj]
| Change | Effect |
---|
1 | Type of 1st parameter p1 has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] statement::statement [not-in-charge] ( connection& p1, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count ) (1)
changed to:statement::statement [not-in-charge] ( statement::connection_type& p1, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count )
[symbol: _ZN3odb5pgsql9statementC2ERNS0_10connectionERKSsS5_PKjj]
| Change | Effect |
---|
1 | Type of 1st parameter p1 has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] update_statement::update_statement [not-in-charge] ( connection& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool copy_name_text ) (1)
changed to:update_statement::update_statement [not-in-charge] ( statement::connection_type& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool copy_name_text )
[symbol: _ZN3odb5pgsql16update_statementC2ERNS0_10connectionEPKcS5_PKjjRNS0_7bindingERNS0_14native_bindingEb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] update_statement::update_statement [in-charge] ( connection& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool copy_name_text ) (1)
changed to:update_statement::update_statement [in-charge] ( statement::connection_type& conn, char const* name, char const* text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param, bool copy_name_text )
[symbol: _ZN3odb5pgsql16update_statementC1ERNS0_10connectionEPKcS5_PKjjRNS0_7bindingERNS0_14native_bindingEb]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] update_statement::update_statement [not-in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param ) (1)
changed to:update_statement::update_statement [not-in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param )
[symbol: _ZN3odb5pgsql16update_statementC2ERNS0_10connectionERKSsS5_PKjjRNS0_7bindingERNS0_14native_bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
[+] update_statement::update_statement [in-charge] ( connection& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param ) (1)
changed to:update_statement::update_statement [in-charge] ( statement::connection_type& conn, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count, binding& param, native_binding& native_param )
[symbol: _ZN3odb5pgsql16update_statementC1ERNS0_10connectionERKSsS5_PKjjRNS0_7bindingERNS0_14native_bindingE]
| Change | Effect |
---|
1 | Type of 1st parameter conn has been changed from connection& (40 bytes) to statement::connection_type& (72 bytes). | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications. |
to the top
Problems with Data Types, Medium Severity (8)
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 (1)
pgsql::database::connection_ ( )Return value (pointer) 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 (1)
pgsql::database::connection_ ( )Field 'retval->database_' in return value (pointer) has base type 'database'.
statement.hxx
namespace pgsql
[+] class statement (1)
| Change |
Effect |
1 | Type of field conn_ has been changed from connection& (40 bytes) to statement::connection_type& (72 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 (7)
statement::deallocate ( )This method is from 'statement' class.
statement::statement [in-charge] ( connection& p1, char const* name, char const* text, bool copy_name_text, Oid const* types, std::size_t types_count )This constructor is from 'statement' class.
statement::statement [in-charge] ( connection& p1, std::string const& name, std::string const& text, Oid const* types, std::size_t types_count )This constructor is from 'statement' class.
statement::text ( ) constThis method is from 'statement' class.
tracer::deallocate ( connection& p1, statement const& p2 )2nd parameter 'p2' (reference) has base type 'statement'.
tracer::execute ( connection& p1, statement const& p2 )2nd parameter 'p2' (reference) has base type 'statement'.
tracer::prepare ( connection& p1, statement const& p2 )2nd parameter 'p2' (reference) has base type 'statement'.
statements-base.hxx
namespace pgsql
[+] class statements_base (1)
| Change |
Effect |
1 | Size of field conn_ has been changed from 40 bytes to 72 bytes. | Previous accesses of applications and library functions to this field may be broken. |
[+] affected symbols (1)
statements_base::~statements_base [in-charge] ( )This method is from 'statements_base' class.
traits.hxx
namespace odb
[+] enum class_kind (1)
| Change |
Effect |
1 | Value of member class_other has been changed from 3 to 2. | Applications may execute a wrong branch of code in the library and therefore change the behavior. |
[+] affected symbols (1)
kind [data]Return value has base type 'enum class_kind'.
to the top
Problems with Data Types, Low Severity (5)
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 (1)
pgsql::database::connection_ ( )Return value (pointer) has base type 'connection'.
connection.hxx
namespace pgsql
[+] class connection (1)
| Change |
Effect |
1 | Size of field db_ has been changed from 44 bytes to 72 bytes. | Size of the inclusive type has been changed. |
[+] affected symbols (10)
connection::begin ( )This method is from 'connection' class.
connection::connection [in-charge] ( connection::database_type& p1 )This constructor is from 'connection' class.
connection::connection [in-charge] ( connection::database_type& p1, PGconn* handle )This constructor 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.
statements_base::~statements_base [in-charge] ( )Field 'this->conn_' in the object of this method 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'.
translate_error ( connection& c, PGresult* r )1st parameter 'c' (reference) 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 (1)
pgsql::database::connection_ ( )Field 'retval->database_' in return value (pointer) has base type 'database'.
traits.hxx
namespace odb
[+] enum class_kind (1)
| Change |
Effect |
1 | The member class_composite has been removed. | This may result in crash or incorrect behavior of applications because the library may not handle removed member anymore. |
[+] affected symbols (1)
kind [data]Return value has base type 'enum class_kind'.
to the top
Header Files (35)
auto-handle.hxx
binding.hxx
config.h
config.hxx
connection-factory.hxx
connection.hxx
container-statements.hxx
conversion.hxx
database.hxx
endian-traits.hxx
error.hxx
exceptions.hxx
export.hxx
forward.hxx
no-id-object-result.hxx
no-id-object-statements.hxx
options.hxx
pgsql-fwd.hxx
pgsql-oid.hxx
pgsql-types.hxx
polymorphic-object-result.hxx
polymorphic-object-statements.hxx
query.hxx
simple-object-result.hxx
simple-object-statements.hxx
statement-cache.hxx
statement.hxx
statements-base.hxx
tracer.hxx
traits.hxx
transaction-impl.hxx
transaction.hxx
version.hxx
view-result.hxx
view-statements.hxx
to the top
Shared Libraries (1)
libodb-pgsql-2.1.so
to the top