Hello community, here is the log from the commit of package mysql-connector-cpp for openSUSE:Factory checked in at 2017-09-25 13:52:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mysql-connector-cpp (Old) and /work/SRC/openSUSE:Factory/.mysql-connector-cpp.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mysql-connector-cpp" Mon Sep 25 13:52:04 2017 rev:23 rq:527462 version:1.1.9 Changes: -------- --- /work/SRC/openSUSE:Factory/mysql-connector-cpp/mysql-connector-cpp.changes 2017-06-07 09:52:44.221460975 +0200 +++ /work/SRC/openSUSE:Factory/.mysql-connector-cpp.new/mysql-connector-cpp.changes 2017-09-25 13:52:05.480671803 +0200 @@ -1,0 +2,12 @@ +Tue Sep 5 13:58:31 UTC 2017 - kstreit...@suse.com + +- Update to version 1.1.9: + * release notes: + https://dev.mysql.com/doc/relnotes/connector-cpp/en/news-1-1-9.html +- Remove installing of ANNOUNCEMENT and CHANGES files that are no + longer present +- Add "Requires: libboost_headers-devel" for libmysqlcppconn-devel + subpackage ("Requires: boost-devel" for the older distros that + don't have libboost_headers-devel available yet) [bsc#838038] + +------------------------------------------------------------------- Old: ---- mysql-connector-c++-1.1.8.tar.gz New: ---- mysql-connector-c++-1.1.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mysql-connector-cpp.spec ++++++ --- /var/tmp/diff_new_pack.oZSvae/_old 2017-09-25 13:52:06.048591898 +0200 +++ /var/tmp/diff_new_pack.oZSvae/_new 2017-09-25 13:52:06.052591335 +0200 @@ -18,7 +18,7 @@ %define libname libmysqlcppconn7 Name: mysql-connector-cpp -Version: 1.1.8 +Version: 1.1.9 Release: 0 Summary: MySQL Connector/C++: Standardized database driver for C++ development License: SUSE-GPL-2.0-with-FLOSS-exception @@ -56,6 +56,11 @@ Requires: %{libname} = %{version} Obsoletes: mysql-connector-c++-devel < %{version} Provides: mysql-connector-c++-devel = %{version} +%if 0%{?suse_version} > 1325 +Requires: libboost_headers-devel +%else +Requires: boost-devel >= 1.34.0 +%endif %description -n libmysqlcppconn-devel MySQL Connector/C++ is a MySQL database connector for C++ development. The @@ -106,7 +111,7 @@ %files -n libmysqlcppconn-devel %defattr(-,root,root) -%doc README ANNOUNCEMENT COPYING CHANGES examples +%doc README COPYING examples %{_includedir}/* %{_libdir}/*.so ++++++ mysql-connector-c++-1.1.8.tar.gz -> mysql-connector-c++-1.1.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/ANNOUNCEMENT new/mysql-connector-c++-1.1.9/ANNOUNCEMENT --- old/mysql-connector-c++-1.1.8/ANNOUNCEMENT 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/ANNOUNCEMENT 1970-01-01 01:00:00.000000000 +0100 @@ -1,116 +0,0 @@ -MySQL Connector/C++ - -This is a release of MySQL Connector/C++, Oracle's -dual-license C++ API for connecting client applications -to MySQL. - -Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. - --------------------------------------------------------------------------------- - -Dear MySQL Users, - -A new GA (general availability) version of MySQL Connector/C++ has -been made available: MySQL Connector/C++ 1.1.8 GA. The MySQL -Connector/C++ provides a C++ API for connecting client applications to -the MySQL Server 5.5 or newer. - -You can download the production release at: - -http://dev.mysql.com/downloads/connector/cpp/1.1.html - -MySQL Connector C++ (Commercial) will be available for download on the -My Oracle Support (MOS) website. This release will be available on eDelivery -(OSDC) in next month's upload cycle. - -The MySQL driver for C++ offers an easy to use API derived from JDBC -4.0. MySQL Workbench has used it successfully for years. - -We have improved the driver since the last GA release. Please see the -documentation and the CHANGES file in the source distribution for a -detailed description of bugs that have been fixed. Bug descriptions are -also listed below. - -Enjoy! - -====================================================================== - -Changes in MySQL Connector/C++ 1.1.8 - - Security Notes - - * OpenSSL is ending support for version 1.0.1 in December - 2016; see - https://www.openssl.org/policies/releasestrat.html. - Consequently, Connector/C++ Commercial builds now use - version 1.0.2 rather than version 1.0.1, and the linked - OpenSSL library for the Connector/C++ Commercial has been - updated from version 1.0.1 to version 1.0.2j. For a - description of issues fixed in this version, see - https://www.openssl.org/news/vulnerabilities.html. - This change does not affect Oracle-produced MySQL - Community builds of Connector/C++, which use the yaSSL - library instead. - - Functionality Added or Changed - - * Connector/C++ now supports a OPT_TLS_VERSION connection - option for specifying the protocols permitted for - encrypted connections. The option value is string - containing a comma-separated list of one or more protocol - names. Example: -connection_properties["OPT_TLS_VERSION"] = sql::SQLString("TLSv1.1,TLS -v1.2"); - - The permitted values depend on the SSL library used to - compile MySQL: TLSv1, TLSv1.1, TLSv1.2 if OpenSSL was - used; TLSv1 and TLSv1.1 if yaSSL was used. The default is - to permit all available protocols. - For more information about connection protocols in MySQL, - see Secure Connection Protocols and Ciphers - (http://dev.mysql.com/doc/refman/5.7/en/secure-connection - -protocols-ciphers.html). (Bug #23496967) - - * Connector/C++ now supports a OPT_SSL_MODE connection - option for specifying the security state of the - connection to the server. Permitted option values are - SSL_MODE_PREFERRED (the default), SSL_MODE_DISABLED, - SSL_MODE_REQUIRED, SSL_MODE_VERIFY_CA, and - SSL_MODE_VERIFY_IDENTITY. These values correspond to the - values of the --ssl-mode option supported by MySQL client - programs; see Command Options for Secure Connections - (http://dev.mysql.com/doc/refman/5.7/en/secure-connection - -options.html). For example, this setting specifies that - the connection should be unencrypted: -connection_properties["OPT_SSL_MODE"] = sql::SSL_MODE_DISABLED; - - The OPT_SSL_MODE option comprises the capabilities of the - sslEnforce and sslVerify connection options. - Consequently, both of those options are now deprecated. - (Bug #23496952) - - * Connector/C++ now supports OPT_MAX_ALLOWED_PACKET and - OPT_NET_BUFFER_LENGTH connection options. Each option - takes a numeric value. They correspond to the - MYSQL_OPT_MAX_ALLOWED_PACKET and - MYSQL_OPT_NET_BUFFER_LENGTH options for the - mysql_options() C API function. - - * Issues compiling Connector/C++ under Visual Studio 2015 - were corrected. - - Bugs Fixed - - * A segmentation fault could occur for attempts to insert a - large string using a prepared statement. (Bug #23212333, - Bug #81213) - - * The certification verification checks that are enabled by - the verifySSL connection option were not performed - properly. (Bug #22931974) - - * Connector/C++ failed to compile against a version of the - MySQL C API older than 5.7. (Bug #22838573, Bug #80539, - Bug #25201287) - -Enjoy! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/CHANGES new/mysql-connector-c++-1.1.9/CHANGES --- old/mysql-connector-c++-1.1.8/CHANGES 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/CHANGES 1970-01-01 01:00:00.000000000 +0100 @@ -1,603 +0,0 @@ -/* - Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. - - The MySQL Connector/C++ is licensed under the terms of the GPLv2 - <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most - MySQL Connectors. There are special exceptions to the terms and - conditions of the GPLv2 as it is applied to this software, see the - FLOSS License Exception - <http://www.mysql.com/about/legal/licensing/foss-exception.html>. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published - by the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -GA 1.1.8 - -- Add connect options MYSQL_OPT_MAX_ALLOWED_PACKET, MYSQL_OPT_NET_BUFFER_LENGTH, - MYSQL_OPT_TLS_VERSION and MYSQL_OPT_SSL_MODE -- Fix Visual Studio 2015 build. -- Fix segmentation fault when inserting a large string (Bug#81213) -- Fix Compilation Failure with PRE-5.7 C API (Bug#80539) - -GA 1.1.7 - -- Add JSON support -- Allow building without server flags (Bug#21391025) -- Correct relative() not seeking after changing position.(Bug#21152054) - -GA 1.1.6 - -- C/C++ won't build against Boost-devel-1.41.0-25.EL6.I686 (Bug#20125824) -- Make install fail for out of source build (Bug#19447498) -- Segmentation fault in retrieval of value using getter methods when - defaultstatementresulttype=forward_only and row position is after last row. - (Bug#20085944) -- C/C++ should provide libmysqlclient and boost version macros with which - it is build. (Bug#75250) -- C++11 support and replace deprecated auto_ptr. (Bug#75251) -- wasNull() method call before fetching the data results in assert failure - (Bug#19938873) -- Memory leak if result set of prepared statement used (Bug#18135088/wl#7925) -- ResultSet::getString does not return fractional seconds from DATETIME(N) - columns (Bug#68523) -- make install/fast fails if static library is not built (Bug#52281) -- MySQL_ResultSet::getString() returns bad value for BIT data (Bug#66235) - -GA 1.1.5 - -- DatabaseMetaData::getProcedures() returns syntax error for connection option - metadatauseinfoschema=false (Bug#19505421) -- DatabaseMetaData::getColumns() returns empty resultset when - metadataUseInfoSchema is true and for no schema. (Bug#19147897) -- ResultSetMetaData::getColumnName() returns display name instead of actual - column name. (Bug#19244736) -- ResultSetMetaData::getTables() not returning result for VIEW when - metadatauseinfoschema=false. (Bug#19505348) -- Version macros missing from installed headers file. (Bug#19553971) -- Getting multiple resultset from procedure using prepared statement gives - error (Bug#19147677). -- Connection losses are not detected while fetching resultset using next() - (Bug#18886278/69031). -- Remove boost variant from API (wl#7030) -- Make close() method or destructor of Connection object to always close - the connection with server (wl#7028) -- Added max_statement_timeout and other connect options (MYSQL_DEFAULT_AUTH, - MYSQL_PLUGIN_DIR, MYSQL_SET_CHARSET_DIR, MYSQL_READ_DEFAULT_FILE, - MYSQL_READ_DEFAULT_GROUP, MYSQL_OPT_CONNECT_ATTR_DELETE, - MYSQL_OPT_CONNECT_ATTR_RESET, MYSQL_OPT_LOCAL_INFILE) (Bug#19479950) -- Added missing sort order for DatabaseMetaData::getImportedKeys() and - DatabaseMetaData::getIndexInfo() for no_i_s case. (Bug#19505248) -- There is no reconnection function in Connector/C++ (Bug#14207722) -- WB sends unnecessary COM_PING operations. (Bug#17186530) -- Double free or corruption error due to global extern string variable localhost - referenced at more then one places (Bug#19910311) -- Assertion failure in getClientOption when the provided option is not set - (Bug#19938922) -- Memory leak while adding parameter OPT_CONNECT_ATTR_ADD to options list - (Bug#19938970) -- CMake picking up libmysqlclient from system path (Bug#19940663) - -GA 1.1.4 - -- Both static and dynamic driver libraries are now linked statically against - libmysql library -- Cannot Connect error when using legacy authentication. (Bug#16970753/69492) -- Connector/C++ doesn't implement MYSQL_OPT_SSL_VERIFY_SERVER_CERT, - MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH. Introduced connection options - "sslVerify"(boolean), "sslCRL" and "sslCRLPath"(string). (Bug#18461451) -- Methods returning driver version information are now parametrized, and those - parameters take their values from cmake config (Bug#14680878/66975) -- Added MYSQL_OPT_CONNECT_ATTR_ADD connection option accepting std::map - argument and calls mysql_options4(). (Bug#18803313) -- MySQL_ResultSetMetaData::getColumnTypeName() returns UNKNOWN for LONG_BLOB - fields. (Bug#18803414/72700) -- Missing collation info in the column metadata methods for a result. - (Bug#18803345/72698) -- Added connection option "rsaKey" to specify RSA public key path name - (wl#7972). - -- Built against libmysql 5.6. - -GA 1.1.3 - 2013-03-22 -- Added boolean connection option OPT_ENABLE_CLEARTEXT_PLUGIN allowing to - enable cleartext libmysql plugin. That plugin is required for some - authentication methods, e.g. PAM. (Bug#16520952) -- getBestRowIdentifier() now considers unique not nullable indexes in case - when primary key does not exist. (Bug#16277170) -- False value of the metadataUseInfoSchema connection option had no effect - in database metadata object. - -GA 1.1.2 - 2013-01-16 -- Expired password support. Connection options - OPT_CAN_HANDLE_EXPIRED_PASSWORDS(bool, application can deal with expired - passwords), and preInit(string, commands to run prior to driver - initialization commands) have been introduced. (Bug#15936764/67325) - -- postInit connection string has been introduced. Similar to preInit, but - commands are run after driver's initialization. - -- Statement::executeUpdate can now execute multiple statements. - CLIENT_MULTI_STATEMENTS connection option still has to be selected. - getUpdateCount will return data for the last executed statement. - -- ABI change - MySQL_Connection class object size changed. If you don't use - that class directly you shouldn't be affected by that. - -- Built against libmysql 5.6.10 - -GA 1.1.1 - 2012-08-06 - -- DatabaseMetaData::getSQLKeywords() updated to match MySQL 5.5. Note - that C/C++, just like C/JDBC, returns the same list for every - MySQL database version. (Ulf) - -- Added MySQL_Connection::getLastStatementInfo() which returns back the - value of the mysql_info() function of libmysql / Connector/C. (Andrey) - -- Added new method ResultSetMetaData::isNumeric() and implemented it in - all classes that subclass from it. (Andrey) - -- Fixed the bug causing compilation errors in Microsoft Visual Studio 2010 if - stdint.h was included. See http://bugs.mysql.com/bug.php?id=60307 - -- Fixed bug making statement that did not raise any warning to return - warnings from previously executed statement. - -- Fixed stores(Lower|Mixed)Case(Quoted)Identifiers methods. - -- Built against libmysql 5.5.27 enabling support of authentification plugins - and IPv6. - -GA 1.1.0 - 2010-09-13 - -- Added Driver::threadInit() and Driver::threadEnd() methods. Every thread - of a threaded client must call Driver::threadInit() at the very start - of the thread before it does anything else with Connector/C++ and every - thread must call Driver::threadEnd() when it finishes. You can find an - example demonstrating the use in examples/pthreads.cpp. It is strongly - discouraged to share connections between threads. It is theoretically - possible, if you set certain undocumented mutexes, but it is not - supported at all. Use one connection per thread. Do not have two - threads using the same connection at the same time. Please - check the C API notes on threading on the MySQL manual. Connector/C++ - wraps the C API. (Lawrin, Andrey, Ulf) - -- Fixed ResultSetMetaData::getColumnType() to return sql::DataType::VARCHAR - even for multi-type character sets. (Fix from Andrey) - -- Fixed ResultSetMetaData::getColumnDisplaySize() to return number - of characters instead of number of bytes. However, there are cases - when the MySQL server returns wrong or insufficient meta data, see also - http://bugs.mysql.com/bug.php?id=6399 . Application developers can rely - on getColumnDisplaySize() returning at least the number of required - characters. Application developers shall not expect the exact number - for a given result set. The driver cannot get any closer but - returning the maximum number for a given result set (Fix from Andrey) - -- Changed FindMySQL.cm so it looks for mysqlclient in the ENV{MySQL_DIR}\lib, - as that is where it's located in (some) Connector/C distros. (Lawrin) - -- Fixed bug in CmakeLists.txt - it didn't really use ENV{BOOST_ROOT}, boost wasn't - searched in the directory set in that environment variable. (Lawrin) - -- Fixed http://bugs.mysql.com/bug.php?id=51562 : error messages did not get - reported properly if error occured after query execution and before fetching - data within the underlying C API call mysql_use|store_result. (Andrey) - -- BIT fields are now correctly decoded (Workbench bug #36239). (Andrey) - -- Connection::getClientOption(const sql::SQLString & optionName, void * optionValue) - now accepts the optionName values "metadataUseInfoSchema", - "defaultStatementResultType", "defaultPreparedStatementResultType", - "characterSetResults". In the previous version only "metadataUseInfoSchema" - was allowed. The same is true for Connection::setClientOption(). - -- Fixed Bug #45048 "prepared statements corrupt the heap". ResultBind is back in - the prepared statement, but shared with the result set. (Andrey) - -- get_driver_instance() is only available in dynamic library builds, static builds - won't have this symbol. This is done, because someone might decided to load the - dll with LoadLibrary/dlopen and needs an entry point to start using the library - (some kind of a Driver Manager). For those, who don't use cmake for building - you need to define mysqlcppconn_EXPORTS if you are loading dynamically and want - to use that entry point. (Andrey) - -- ABI change - added support for optional run-time dynamic loading of the MySQL Client Library. - This is useful if you want to re-distribute a certain client library with - the connector and make sure that it gets used. It also allows you to - use a different client library for every connection. As it is an advanced - feature it is not enabled by default. By default the MySQL Client Library - will be linked at compile time just as in every version before. - -- Fixed bug in ResultSetMetaData for normal statements and prepared ones, getScale - and getPrecision did return wrong results. (Andrey) - -- Fixed http://bugs.mysql.com/bug.php?id=45846 . Excluding dynamically generated - and platform specific header files source packages generated using cpack (Ulf). - -- Connection map property OPT_RECONNECT is now of type boolean (was long long). - -- We now check LDFLAGS, CXXFLAGS and CPPFLAGS from the environment for every binary - we generate. (Ulf, Kent) - -- Fixed http://bugs.mysql.com/bug.php?id=45843: cmake error if configuring an out - of source build [when not calling cmake in the root directory]. (Ulf) - -- Fixed http://bugs.mysql.com/bug.php?id=44931: missing includes when using GCC 4.4. - Note that GCC 4.4 is not yet in use for any official MySQL builds. (Ulf, Lawrin) - -- Fixed a performance issue of Prepared Statements. Reading large result sets has - been slow - think O(n^2). Patch by Frank Schoenheit from the OpenOffice.org - Base team. (Ulf) - -- Exchanged most use cases of std::auto_ptr with boost::scoped_ptr. Migrated from - own solution to boost::scoped_array. In addition, migrated from another own - solution to boost::shared_ptr/weak_ptr for guarding access around result sets. - (Andrey) - -- API incompatible change: ConnectPropertyVal is no more a struct by a typedef - that uses boost::variant. This will break your build but is pretty easy to fix. - If you had code like - --- - { - sql::ConnectPropertyVal tmp; - tmp.str.val=passwd.c_str(); - tmp.str.len=passwd.length(); - connection_properties["password"] = tmp; - } - --- - Your new code you will like this: - --- - connection_properties["password"] = sql::ConnectPropertyVal(passwd); - --- - Which is simpler. (Andrey) - -- Fixed a bug in PS, which in combination of preparing a stored procedures without - any parameters was leading to exception, which was a problem, and was leading - to another problem which manifested itself with double free. All similar code - snippets in the Connector were fixed. (Andrey) - -- The driver makes use of some Boost components (http://www.boost.org). - You need to have Boost 1.34.0 or newer installed on your system in - order to compile the driver from source. Binary distributions have no - additional dependencies over 1.0.5. - -- API change: parameter to setNextQuery in SQLWarning got const qualifier. - SQLWarning itself is now an interface with protected destructor. - - -GA 1.0.5 - 2009-04-20 - -- Changed the interface of sql::ConnectionMetaData, sql::ResultSetMetaData - and sql::ParameterMetaData to have a protected destructor. In this way the - client code doesn't need, and won't be able, to destruct the metadata - objects returned by the connector. The connector will handle their - destruction. This enables statements like : - connection->getMetaData->getSchema(); - without the result of leaking memory because we lost the pointer returned - by getMetaData(). (Lawrin, Andrey) - -- Large overhaul of the code to improve the memory management to not leak in - exceptional situations. Big improvement compared to Beta1. (Andrey) - -- Fixed the interface of sql::Driver and sql::Connection so they accept the - options map by alias instead of by value. (Andrey) - -- Changed the return type of sql::SQLException::getSQLState() from - std::string to const char * to be consistent with std::exception::what(). - (Andrey) - -- Implemented getResultSetType() and setResultSetType() for Statement. Used - are TYPE_FORWARD_ONLY, which means unbuffered result set and - TYPE_SCROLL_INSENSITIVE, which means buffered result set. (Andrey) - -- Implemented getResultSetType() for PreparedStatement. The setter is not - implemented because currently PreparedStatement can't do refetching and - storing the result means the bind buffers will be correct. (Andrey) - -- Added "defaultStatementResultType" to MySQL_Connection::setClientOption() as - an option. Also the method now returns `sql::Connection *`. (Andrey) - -- Added Result::getType() and implemented it in the three result set classes. - (Andrey) - -- Enabled tracing functionality when building with VC8 and up (VS2005 and up). - (Andrey) - -- Added better support for named pipes, on Windows. Use pipe:// and add the - path to the pipe. Shared memory connections are currently not supported. - (Andrey) - -- Fixed a bug in MySQL_Connection::setSessionVariable() which led to exception - being thrown. (Andrey) - - -Beta 1.0.4 - 2009-03-31 - -- Prepared support for upcoming Connector/C. (Georg) - -- Added Windows installer. (Georg) - -- Bumping up CMake minimum version requirement from 2.4.2 to 2.6.2. - We need the latest version for Windows. (Lawrin) - -- Added "metadataUseInfoSchema" to connection propery map which allows you - to control the use of the INFORMATION_SCHEMA for meta data. (Andrey) - -- Fixed a bug in all implementations of ResultSet::relative() which was giving - wrong return value although positioning was working correctly. (Andrey) - -- Fixed a leak in MySQL_PreparedResultSet when the result was containing a BLOB - column. (Andrey) - -- Implemented MySQL_ConnectionMetaData::supportsConvert(from, to). (Andrey) - -- Introduced sql::DataType::YEAR to complement MySQL's YEAR type. (Andrey) - -- Introduced PreparedStatement::getMetaData(). (Andrey) - -- Introduced ResultSetMetaData::isZerofill(), which is not in the JDBC - specification. (Andrey) - -- Fixed all implementations of ResultSet::isNull() to check whether the current - position is on a real row, not isBeforeFirst() nor isAfterLast(), like all - getXXX methods do. (Andrey) - -- Implementation for MySQL_DatabaseMetaData::getProcedures() when - INFORMATION_SCHEMA is asked not to be used. (Andrey) - -- Removed MySQL_DatabaseMetaData::getProcedureColumns() from the interface. - Until now it was returning always an empty result set. Full implementation - will be added at a later stage. (Andrey) - -- Changed a bunch of methods of DatabaseMetaData()::getXXX, which returned `int` - to return `unsigned int` because it makes more sense. (Andrey) - - -Alpha 1.0.3 - 2009-03-03 - -- Added new tests at test/unit/classes. Those tests are mostly about - code coverage. Most of the actual functionality of the driver is tested - by the tests found at test/CJUnitPort. (Ulf) - -- New data types added to the list returned by DatabaseMetaData::getTypeInfo(); - FLOAT UNSIGED, DECIMAL UNSIGNED, DOUBLE UNSIGNED. Those tests may not - be in the JDBC specification. However, due to the change you should be able - to look up every type and type name returned by, for example, - ResultSetMetaData::getColumnTypeName(). (Andrey) - -- MySQL_Driver::getPatchVersion introducted. (Andrey) - -- Major performance improvements due to new buffered resultset implementation - by Andrey. (Ulf) - -- Addition of test/unit/README with instructions for writing bug/regression - tests. (Ulf) - -- Experimental support for STLPort. This feature may be removed again at any - time later without prior warning! Check cmake -L for configuration - instructions. (Andrey) - -- Fixed a bug in MySQL_PreparedResultSet::getString(). Returned string had real - data but the length was random. Now, the string is initialized with correct - length and thus is binary safe. (Andrey) - -- Added properties-enabled (map of key->value) methods for connecting, which - add many connect options. (Andrey) - -- Driver::connect( map ) - -- Connection::Connection( map ) - -- New BLOB implementation. Got rid of sql::Blob in favor of std::istream. C++'s - IOStream library is very powerful, similar to PHP's streams. It makes no sense - to reinvent the wheel. For example one can pass a std::istringstream object - to setBlob() if the data is in memory, or just open a file std::fstream and - let it stream to the DB, or write own stream. Similar will be true for getBlob() - where we can just copy data, if buffered result set, or stream, if we implement - it. (Andrey) - -- Implemented ResultSet::getBlob() which returns std::stream. (Andrey) - -- Fixed MySQL_DatabaseMetaData::getTablePrivileges() to work correctly. Test cases - added in the first unit testing framework. (Andrey) - -- Implemented MySQL_Connection::setSessionVariable() for setting variables like - sql_mode. (Andrey) - -- Implemented MySQL_DatabaseMetaData::getColumnPrivileges(). (Andrey) - -- cppconn/datatype.h changed and used again. Reimplemented the type subsystem to - be more usable - more types for binary and non-binary strings. (Andrey) - -- Implementation for MySQL_DatabaseMetaData::getImportedKeys() for - MySQL versions before 5.1.16 using SHOW, and above using INFORMATION_SCHEMA. - (Andrey) - -- Implemented MySQL_ConnectionMetaData::getProcedureColumns(). (Andrey) - -- make package_source packs now with bzip2. (Andrey) - -- Re-added getTypeInfo() with information about all types supported by MySQL and - the sql::DataType. (Andrey) - -- Exchanged the implementation of MySQL_ConstructedResultSet to use more efficient - non O(n) but O(1) access method. This should improve the speed with which - the metadata result sets are used. Also, there is less copy during the - construction of the result set, which means that all result sets returned from - the metadata functions will be faster. (Andrey) - -- Introduced, internally, sql::mysql::MyVal which has implicit constructors used - in mysql_metadata.cpp to create result sets with more native data instead of - always string (varchar). (Andrey) - -- Renamed ResultSet::getLong() to ResultSet::getInt64(). resultset.h includes - typdefs for Windows to be able to use int64_t. (Andrey) - -- Introduced ResultSet::getUInt() and ResultSet::getUInt64(). (Andrey) - -- Corrected handling of unsigned server types. Now returning correct values. - (Andrey) - -- Fixed handling of numeric columns in ResultSetMetaData::isCaseSensitive to - return false. (Andrey) - -- Better implementation for ResultSetMetaData::isReadOnly. Values generated - from views are read-only. Seems that these generated values don't have `db` - in MYSQL_FIELD set, while all normal columns do have. (Andrey) - -- Implemented MySQL_DatabaseMetaData::getExportedKeys(). (Andrey) - -- Implemented MySQL_DatabaseMetaData::getCrossReference(). (Andrey) - - -Alpha 1.0.2 - 2008-12-19 - -- Adding test/unit as a basis for general unit tests based on the new - test framework, see test/unit/example for basic usage examples (Ulf) - -- Fixed MySQL_PreparedStatement::setBlob() to really work. In the tests - there is a simple example of a class implementing sql::Blob. (Andrey) - -- Addition of a new unit test framework for JDBC compliance and - regression testing. (Lawrin) - -- Implemented MySQL_ResultSetMetaData::getPrecision() and - MySQL_Prepared_ResultSetMetaData::getPrecision(), - updating example. (Andrey) - -- Fixing bug in FLOAT handling. (Andrey) - -- Fixing bug in getString(): - getString() is binary safe now (Andrey), - new example. (Ulf) - -- Fixing bugs in MySQL_PreparedStatements: - setBigInt() and setDatetime() have decremented the internal column - index before forwarding the request. This resulted in double-decrement - and wrong internal column index. Typical error message: - setString() ... invalid "parameterIndex" (Ulf) - -- Adding PHP script examples/cpp_trace_analyzer.php to filter the - output of the debug trace. Please see the inline comments for documentation. - This script is unsupported! We do no promise to maintain it. (Ulf) - -- Fixed bugs in MySQL_DatabaseMetaData : - All supportsCatalogXXXXX methods were returning `true` and - all supportSchemaXXXX methods false, which is not as it should be. - Now it is reversed, to be consistent with the rest. (Andrey) - -- Implemented MySQL_PreparedStatement::clearParameters(). (Andrey) - -- Fixed a bug in MySQL_ConnectionMetaData::getColumns() which was - performing a cartesian product of the columns in the table times - the columns matching columnNamePattern. example/connection_meta_schemaobj.cpp - extended to cover the function. (Andrey) - -- Fixed lame bug in MySQL_ConnectionMetaData::getIndexInfo() which - did not work because the schema name wasn't included in the query sent - to the server. (Andrey) - -- Implemented MySQL_PreparedStatement::setNull(). (Andrey) - -- Reverted implementation of MySQL_DatabaseMetaData::getTypeInfo(). - Now unimplemented. In addition, removed cppconn/datatype.h for now - till we havea proper implementation of the types. - -- DATE, DATETIME and TIME are now being handled when calling - MySQL_PreparedResultSet:: - -- getString() - -- getDouble() - -- getInt() - -- getLong() - -- getBoolean() - -- Fixed MySQL_PreparedStatementResultSet::getDouble() to return proper - value when the underlying type is MYSQL_TYPE_FLOAT. (Andrey) - -- Changed ResultSetMetaData:: - -- getColumnDisplaySize() - -- getPrecision() - -- getScale() - to return unsigned int instead of signed int. (Andrey) - -- Implemented getScale(), getPrecision() and getColumnDisplaySize() for - MySQL_ResultSetMetaData and MySQL_Prepared_ResultSetMetaData. (Andrey) - - -Alpha 1.0.1 - 2008-12-01 - -- New directory layout - -- MySQL Workbench 5.1 using Connector/C++ for its database connectivity. - -- Addition of Connector/J tests converted - -- Changing sql::DbcException to implement the interface of JDBC's SQLException. - And renamed it to sql::SQLException. - -- Renamed sql::DbcInvalidArgument to sql::InvalidArgumentException - -- Renamed sql::DbcMethodNotImplemented to sql::MethodNotImplementedException - -- All tests changed to create TAP compliant output - -- Introduction of experimental CPack support, see make help - -- Metadata: switching to column names "TABLE_CAT" (was: TABLE_CATALOG) and - "TABLE_SCHEM" (was: TABLE_SCHEMA) for JDBC compliance - -- ConnectionMetaData::getImportedKeys(): - PKTABLE_CATALOG -> PKTABLE_CAT, PKTABLE_SCHEMA -> PKTABLE_SCHEM, - FKTABLE_CATALOG -> FKTABLE_CAT, FKTABLE_SCHEMA -> FKTABLE_SCHEM - -- ConnectionMetaData::getPrimaryKeys(): - COLUMN -> COLUMN_NAME, SEQUENCE -> KEY_SEQ, INDEX_NAME -> PK_NAME - -- ConnectionMetaData::getProcedures: - PROCEDURE_SCHEMA -> PROCEDURE_SCHEM - -- ConnectionMetaData::getTables: - TABLE_COMMENT -> REMARKS - -- All examples can be given optional connection parameters on the command - line, for example - `examples/connect tcp://host:port user pass database` - or - `examples/connect unix:///path/to/mysql.sock user pass database` - -- Adding experimental GCov support, cmake -DMYSQLCPPCONN_GCOV_ENABLE:BOOL=1 - -- ConnectionMetaData::getCatalogTerm() returns n/a, there is no counterpart - to catalog in Connector/C++ - -- Addition of ConnectionMetaData::getSchemas() and Connection::setSchema(). - None of them is in the JDBC standard - -- Driver Manager removed - -- `(n)make install` works. You can change the default installation path. - Read carefully the messages after executing cmake. Installed are the static - and the dynamic version of the library, libmysqlcppconn as well as the - generic interface cppconn + 3 MySQL specific headers - -- mysql_driver.h (if you want to get your connections from the driver - instead of instantiating a MySQL_Connection object. This makes your code - pretty portable against the common interface) - -- mysql_connection.h - If you intend to link directly to the MySQL_Connection - class and use its specifics not found in sql::Connection - However, you can make your application fully abstract by not using the two - headers above but the generic headers. - -- sql::mysql::MySQL_SQLException is gone. There is no distinction between - server and client (= Connector) caused errors based on the type of the - exception. However, you can still check the error code to figure out the - reason. - - -Preview 1.0.0 - 2008-08-05 - -- First public release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/CMakeLists.txt new/mysql-connector-c++-1.1.9/CMakeLists.txt --- old/mysql-connector-c++-1.1.8/CMakeLists.txt 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/CMakeLists.txt 2017-05-10 18:14:59.000000000 +0200 @@ -1,5 +1,5 @@ # -# Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. # # The MySQL Connector/C++ is licensed under the terms of the GPLv2 # <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most @@ -89,12 +89,37 @@ ENDIF(COMPILER_SUPPORTS_CXX11) ENDIF(CMAKE_ENABLE_C++11) -#----------------- -# Changing CRT from dynamic to static (Windows Only) -IF(WIN32) - INCLUDE(${CMAKE_SOURCE_DIR}/changeCrt.cmake) - CHANGE_CRT("/MT") -ENDIF(WIN32) + +# +# Configure static runtime library on Windows if requested +# + +option(STATIC_MSVCRT "Use static MSVC runtime library" OFF) + +if(WIN32) + IF(STATIC_MSVCRT) + + message("Using static runtime library") + + foreach(LANG C CXX) + set(CMAKE_${LANG}_FLAGS "${CMAKE_${LANG}_FLAGS} /MT") + foreach(TYPE RELEASE RELWITHDEBINFO MINSIZEREL) + set(CMAKE_${LANG}_FLAGS_${TYPE} "${CMAKE_${LANG}_FLAGS_${TYPE}} /MT") + endforeach() + set(CMAKE_${LANG}_FLAGS_DEBUG "${CMAKE_${LANG}_FLAGS_DEBUG} /MTd") + endforeach(LANG) + ELSE(STATIC_MSVCRT) + foreach(LANG C CXX) + set(CMAKE_${LANG}_FLAGS "${CMAKE_${LANG}_FLAGS} /MD") + foreach(TYPE RELEASE RELWITHDEBINFO MINSIZEREL) + set(CMAKE_${LANG}_FLAGS_${TYPE} "${CMAKE_${LANG}_FLAGS_${TYPE}} /MD") + endforeach() + set(CMAKE_${LANG}_FLAGS_DEBUG "${CMAKE_${LANG}_FLAGS_DEBUG} /MDd") + endforeach(LANG) + ENDIF(STATIC_MSVCRT) + +endif() + #----------------- # ICU @@ -314,7 +339,6 @@ SET(CPACK_RESOURCE_FILE_LICENSE "${LICENSE_FILENAME}") SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README") -SET(CPACK_RESOURCE_FILE_INSTALL "${CMAKE_SOURCE_DIR}/INSTALL") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${MYSQLCPPCONN_VERSION}") SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}-${MYSQLCPPCONN_VERSION}-${CONNECTOR_PLATFORM}") IF(WIN32) @@ -332,10 +356,8 @@ INSTALL(FILES ${CPACK_RESOURCE_FILE_README} - ${CPACK_RESOURCE_FILE_INSTALL} ${CPACK_RESOURCE_FILE_LICENSE} "${CMAKE_SOURCE_DIR}/Licenses_for_Third-Party_Components.txt" - "${CMAKE_SOURCE_DIR}/ANNOUNCEMENT" DESTINATION ${DOC_DESTINATION} OPTIONAL) SET(COMMON_IGNORE_FILES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/FindMySQL.cmake new/mysql-connector-c++-1.1.9/FindMySQL.cmake --- old/mysql-connector-c++-1.1.8/FindMySQL.cmake 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/FindMySQL.cmake 2017-05-10 18:14:59.000000000 +0200 @@ -344,6 +344,9 @@ string(REGEX MATCHALL "${_regex}([^ ]+)" _mysql_config_output "${_mysql_config_output}") string(REGEX REPLACE "^[ \t]+" "" _mysql_config_output "${_mysql_config_output}") string(REGEX REPLACE "${_regex}" "" _mysql_config_output "${_mysql_config_output}") + IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + string(REGEX REPLACE " -latomic" "" _mysql_config_output "${_mysql_config_output}") + ENDIF() separate_arguments(_mysql_config_output) set(${_var} ${_mysql_config_output}) endmacro() @@ -370,6 +373,9 @@ string(REGEX REPLACE "^[ \t]+" "" _mysql_config_output "${_mysql_config_output}") string(REGEX REPLACE "${_regex2}" "" _mysql_config_output "${_mysql_config_output}") string(REGEX REPLACE "${_regex1}" "${_replace}" _mysql_config_output "${_mysql_config_output}") + IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + string(REGEX REPLACE " -latomic" "" _mysql_config_output "${_mysql_config_output}") + ENDIF() separate_arguments(_mysql_config_output) set(${_var} ${_mysql_config_output}) endmacro() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/INSTALL new/mysql-connector-c++-1.1.9/INSTALL --- old/mysql-connector-c++-1.1.8/INSTALL 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/INSTALL 1970-01-01 01:00:00.000000000 +0100 @@ -1,268 +0,0 @@ -MySQL Connector/C++ - -This is a release of MySQL Connector/C++, Oracle's -dual-license C++ API for connecting client applications -to MySQL. - -Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. - --------------------------------------------------------------------------------- - -CONTENTS - - * Contact - * Installation - * Prerequisites for building Connector/C++ - * Building on Unix - * Run CMake to build a Makefile - * Use make to build the libraries - * CMake options: MySQL installation path, debug version and more - * Building on Solaris - * Building on Windows - * Source layout - * (if binary package) Further Platform Notes on Building - - -CONTACT - - For general discussion of the MySQL Connector/C++ please use the C/C++ - community forum at http://forums.mysql.com/list.php?167 or join the MySQL - Connector/C++ mailing list at http://lists.mysql.com . - - Bugs can be reported at http://bugs.mysql.com . - - See also https://wikis.oracle.com/pages/viewpage.action?pageId=27394600 - - -INSTALLATION - - The MySQL Driver for C++ is distributed in source and binary form. - - The binary distributions are available as TAR.GZ archives for all - supported platforms but Windows. On Windows you either use a MSI Installer - or unpack a ZIP archive to an appropriate place. - - Please check the Reference Manual for further information at: - - http://dev.mysql.com/doc/refman/5.5/en/connector-cpp.html - - Notes on building the driver from source can be found in the Reference - Manual and below. At the end of this file you may find settings - we have used to build a binary package for your platform. - - -PREREQUISITES FOR BUILDING CONNECTOR/C++ - - The MySQL Connector/C++ is based on the MySQL client libary (MySQL C API). - Connector C/C++ is linked against the MySQL client library. You need to have - the MySQL client library installed in order to compile the Connector/C++. - - Typically the MySQL client library gets installed by installing - the MySQL Server. However, check your operating system documentation for - other installation options. - - Alternatively you can install the new MySQL Connector/C. The MySQL Connector/C - is a standalone version of the MySQL client library. - - You need to have CMake 2.6.2 (http://www.cmake.org). - NOTE: cmake binaries are available for most systems. You do not need to build - cmake yourself. - - As of version 1.1.0 Connector/C++ makes use of Boost (http://www.boost.org). - You need to have Boost 1.34.0 or newer installed on your build system. - The MySQL driver for C++ makes use of Boost variant, any and some pointers. - All of those are "headers only". When installing Boost on your system, - you can disable all components that require building any kind - of binaries. Connector/C++ source version 1.1.5 must use Boost 1.54.0. Also - applications using Connector/C++ 1.1.5 should use Boost 1.54.0. - -BUILDING ON UNIX - - The MySQL Connector/C++ is using the cross platform make CMake. CMake - creates classical Makefiles. Please visit http://www.cmake.org for - further information and documentation. - - 1. Run CMake to build a Makefile - - me@host:/path/to/mysql-connector-cpp> cmake . - -- Check for working C compiler: /usr/local/bin/gcc - -- Check for working C compiler: /usr/local/bin/gcc -- works - -- Check size of void* - -- Check size of void* - done - -- Check for working CXX compiler: /usr/bin/c++ - -- Check for working CXX compiler: /usr/bin/c++ -- works - -- mysql_config was found /usr/bin/mysql_config - -- MySQL Include dir: /usr/include/mysql - -- MySQL Library : - -- MySQL Library dir: /usr/lib64/mysql;/usr/lib64 - [...] - -- Configuring done - -- Generating done - -- Build files have been written to: /path/to/mysql-connector-cpp - - - Read on at point 3) in case of configure problems. - - 2. Use make to build the libraries - - me@host:/path/to/mysql-connector-cpp> make clean - me@host:/path/to/mysql-connector-cpp> make - Scanning dependencies of target mysqlcppconn - [ 0%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/mysql_art_resultset.cpp.o - [ 1%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/mysql_art_rset_metadata.cpp.o - [ 2%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/mysql_connection.cpp.o - [...] - [100%] Building CXX object test/unit/template_bug_group/CMakeFiles/bug456.dir/bug456.o - Linking CXX executable bug456 - - If all goes well, you will find the Connector/C++ library in - /path/to/driver/libcppmysqlcppconn.so . In case of problems read on below - before you ask for assistance. - - If you want to install the libraries on your system proceed with make install. - - me@host:/path/to/mysql-connector-cpp> make install - - 3. CMake options: MySQL installation path, debug version and more - - In case of configure and/or compile problems check the list of CMake options: - - me@host:/path/to/mysql-connector-cpp> cmake -L - [...] - CMAKE_BUILD_TYPE:STRING= - CMAKE_INSTALL_PREFIX:PATH=/usr/local - MYSQLCLIENT_STATIC_BINDING:BOOL=1 - MYSQLCPPCONN_BUILD_EXAMPLES:BOOL=1 - MYSQLCPPCONN_DT_RPATH:STRING= - MYSQLCPPCONN_DYNLOAD_MYSQL_LIB:FILEPATH=/usr/lib64/libmysqlclient_r.so - MYSQLCPPCONN_GCOV_ENABLE:BOOL=0 - MYSQLCPPCONN_ICU_ENABLE:BOOL=0 - MYSQLCPPCONN_STLPORT_ENABLE:BOOL=0 - MYSQLCPPCONN_TEST_NOT_IMPLEMENTED:BOOL=0 - MYSQLCPPCONN_TRACE_ENABLE:BOOL=0 - MYSQL_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/mysql_config - - You may also try cmake -LA to get a list of all options including - the advanced options. - - For example, if your MySQL Server installation path is not /usr/local/mysql - and you want to build a debug version of the MySQL Connector/C++ use: - - me@host:/path/to/mysql-connector-cpp> - cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DMYSQL_CONFIG_EXECUTABLE:FILEPATH=/path/to/my/mysql/server/bin/mysql_config . - - Verify your settings with cmake -L: - - me@host:/path/to/mysql-connector-cpp> cmake -L - [...] - CMAKE_BUILD_TYPE:STRING= - CMAKE_INSTALL_PREFIX:PATH=/usr/local - MYSQLCLIENT_STATIC_BINDING:BOOL=1 - MYSQLCPPCONN_BUILD_EXAMPLES:BOOL=1 - MYSQLCPPCONN_DT_RPATH:STRING= - MYSQLCPPCONN_DYNLOAD_MYSQL_LIB:FILEPATH=/usr/lib64/libmysqlclient_r.so - MYSQLCPPCONN_GCOV_ENABLE:BOOL=0 - MYSQLCPPCONN_ICU_ENABLE:BOOL=0 - MYSQLCPPCONN_STLPORT_ENABLE:BOOL=0 - MYSQLCPPCONN_TEST_NOT_IMPLEMENTED:BOOL=0 - MYSQLCPPCONN_TRACE_ENABLE:BOOL=0 - MYSQL_CONFIG_EXECUTABLE:FILEPATH=/path/to/my/mysql/server/bin/mysql_config - - Proceed with make clean; make as described at point 2.) - - NOTE: cmake does cache settings in the file CMakeCache.txt. - Make sure that cmake does not use old and unwanted settings from - CMakeCache.txt. This may cause compile problems. If so, delete CMakeCache.txt, - configure custom settings with cmake -D, if any and try compiling again. - - -BUILDING ON SOLARIS - - Use the Sun compiler to build the MySQL Connector/C++. - - Ensure that your environment points cmake to the appropriate compiler - binaries. The binary distributions of the MySQL Server are build using Sun - compilers. The MySQL tool mysql_config returns compiler flags suitable for - Sun compilers but possibly not suitable for GCC. - - If you plan to use GCC on Solaris to compile MySQL Connector/C++, - you might need to insert - - SET(MYSQL_CXXFLAGS "") - - at the end of the file /path/to/mysql-connector-cpp/FindMySQL.cm. - However, its recommended to use Sun Studio on Solaris. - No changes are required when using the Sun compilers! - - Make sure that you do not mix Sun compilers with GNU compilers when building - the MySQL Connector/C++. For example, do not use GCC as a C compiler and - Sun CC as a C++ compiler. The linker might fail to link the results - from both compilers to one binary. - - -BUILDING ON WINDOWS - - The MySQL Connector/C++ is using the cross platform make CMake. CMake - creates classical Makefiles. Please visit http://www.cmake.org for - further information and documentation. - - You need to have the environment variables set for the Visual Studio - toolchain. Visual Studio includes a batch file to set these for you, - and installs a shortcut into the Start menu to open a command prompt - with these variables set. - - You need to set MYSQL_DIR to point to where the MySQL server is - installed, using the short-style filenames: - - set MYSQL_DIR=C:\PROGRA~1\MySQL\MYSQLS~1.0 - - Build Connector/C++ using the "cmake" command-line tool by doing the - following from the source root directory (in a command prompt window); - - cmake -G "Visual Studio 8 2005" - - This produces a project file that you can open with Visual Studio or - build from the command line with either of: - - devenv.com MySQLCPPCONN.sln /build Release - devenv.com MySQLCPPCONN.sln /build RelWithDebInfo - - To compile the "Debug" build, you must run set the cmake build type so - the correct version of the MySQL client libraries are used: - - cmake -G "Visual Studio 8 2005" -DCMAKE_BUILD_TYPE=Debug - devenv.com MySQLCPPCONN.sln /build Debug - - Upon completion; you will find the executables in the subdirectories of the - "bin" and "lib" directories. - - Different versions of CMake come with different "generators". A generator - is the component of CMake that is responsible for writing the build files. - If, for example, cmake --help does not list a generator for - Visual Studio 9 2008, try a more recent version of CMake. - - Connector C/C++ supports only Microsoft Visual Studio 2003 and above - on Windows. - - -SOURCE LAYOUT - - The MySQL Connector/C++ distribution contains the following directories: - - |-- cppconn <-- Header files of the public interface - |-- driver <-- Connector/C++ source code - |-- examples <-- Basic examples - |-- test <-- Tests, so to say: more examples - |-- thread <-- Thread abstraction, unused - --- win <-- Windows MSI Installer - - -FURTHER PLATFORM NOTES ON BUILDING - -If this INSTALL file is contained in a binary package, you will see below -what settings we have used to create the binary. - -If this INSTALL file is contained in a source package and, you have build -issues, please download a binary package for your platform and check -the platform specific settings found in its INSTALL file. It may help -to check the settings used by us for building. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/README new/mysql-connector-c++-1.1.9/README --- old/mysql-connector-c++-1.1.8/README 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/README 2017-05-10 18:14:59.000000000 +0200 @@ -7,7 +7,7 @@ the GNU General Public License. MySQL Connector/C++ is brought to you by Oracle. -Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. License information can be found in the COPYING file. @@ -38,3 +38,13 @@ license versions is made available with the language indicating that GPLv2 or any later version may be used, or where a choice of which version of the GPL is applied is otherwise unspecified. + +For further information about Connector/C++ see the on-line +documentation at +<https://dev.mysql.com/doc/connector-cpp/en/>. + +For the new features/bugfix history, see release notes at +<https://dev.mysql.com/doc/relnotes/connector-cpp/en/news-1-1.html>. + +For installation instructions see the relevant sections in the on-line +documentation. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/VersionInfo.cmake new/mysql-connector-c++-1.1.9/VersionInfo.cmake --- old/mysql-connector-c++-1.1.8/VersionInfo.cmake 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/VersionInfo.cmake 2017-05-10 18:14:59.000000000 +0200 @@ -1,5 +1,5 @@ # -# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # # The MySQL Connector/C++ is licensed under the terms of the GPLv2 # <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most @@ -24,7 +24,7 @@ SET(CONNECTOR_MAJOR "1") SET(CONNECTOR_MINOR "1") -SET(CONNECTOR_PATCH "8") +SET(CONNECTOR_PATCH "9") SET(CONNECTOR_LEVEL "") # "-alpha", "-beta", empty if GA SET(CONNECTOR_QUALITY "GA") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/changeCrt.cmake new/mysql-connector-c++-1.1.9/changeCrt.cmake --- old/mysql-connector-c++-1.1.8/changeCrt.cmake 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/changeCrt.cmake 2017-05-10 18:14:59.000000000 +0200 @@ -41,6 +41,8 @@ STRING(REGEX REPLACE "/M${switch2change}" "/M${switch2use}" ${flags} "${${flags}}") ENDIF(${flags} MATCHES "/M${switch2change}") + MESSAGE(STATUS, "CHANGE_CRT ${flags} ${${flags}}") + ENDFOREACH(flags) ENDIF(WIN32) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/cppconn/exception.h new/mysql-connector-c++-1.1.9/cppconn/exception.h --- old/mysql-connector-c++-1.1.8/cppconn/exception.h 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/cppconn/exception.h 2017-05-10 18:14:59.000000000 +0200 @@ -145,6 +145,7 @@ const std::string option; }; + } /* namespace sql */ #endif /* _SQL_EXCEPTION_H_ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/driver/CMakeLists.txt new/mysql-connector-c++-1.1.9/driver/CMakeLists.txt --- old/mysql-connector-c++-1.1.8/driver/CMakeLists.txt 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/driver/CMakeLists.txt 2017-05-10 18:14:59.000000000 +0200 @@ -299,17 +299,17 @@ # LINK_FLAGS_DEBUG "/NODEFAULTLIB:LIBCMTD /NODEFAULTLIB:LIBCMT" # LINK_FLAGS_RELWITHDEBINFO "/NODEFAULTLIB:LIBCMT" # LINK_FLAGS_RELEASE "/NODEFAULTLIB:LIBCMT") -# + # SET_TARGET_PROPERTIES(mysqlcppconn-static PROPERTIES # STATIC_LIBRARY_FLAGS_DEBUG "/NODEFAULTLIB:LIBCMTD" # STATIC_LIBRARY_FLAGS_RELWITHDEBINFO "/NODEFAULTLIB:LIBCMT" # STATIC_LIBRARY_FLAGS_RELEASE "/NODEFAULTLIB:LIBCMT") - # Changing CRT from dynamic to static - IF(MYSQLCLIENT_STATIC_BINDING) - INCLUDE(${CMAKE_SOURCE_DIR}/changeCrt.cmake) - CHANGE_CRT("/MT") - ENDIF() +# # Changing CRT from static to dynamic +# IF(MYSQLCLIENT_STATIC_BINDING) +# INCLUDE(${CMAKE_SOURCE_DIR}/changeCrt.cmake) +# CHANGE_CRT("/MD") +# ENDIF() INSTALL(TARGETS mysqlcppconn mysqlcppconn-static RUNTIME DESTINATION lib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/driver/mysql_art_resultset.cpp new/mysql-connector-c++-1.1.9/driver/mysql_art_resultset.cpp --- old/mysql-connector-c++-1.1.8/driver/mysql_art_resultset.cpp 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/driver/mysql_art_resultset.cpp 2017-05-10 18:14:59.000000000 +0200 @@ -106,7 +106,7 @@ { switch (val_type) { case typeString: - return sql::mysql::util::strtold(val.str->c_str(), NULL); + return sql::mysql::util::strtonum(val.str->c_str()); case typePtr: return .0; case typeDouble: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/driver/mysql_art_resultset.h new/mysql-connector-c++-1.1.9/driver/mysql_art_resultset.h --- old/mysql-connector-c++-1.1.8/driver/mysql_art_resultset.h 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/driver/mysql_art_resultset.h 2017-05-10 18:14:59.000000000 +0200 @@ -46,7 +46,7 @@ class MySQL_DebugLogger; -class MyVal +class CPPCONN_PUBLIC_FUNC MyVal { union { sql::SQLString * str; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/driver/mysql_ps_resultset.cpp new/mysql-connector-c++-1.1.9/driver/mysql_ps_resultset.cpp --- old/mysql-connector-c++-1.1.8/driver/mysql_ps_resultset.cpp 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/driver/mysql_ps_resultset.cpp 2017-05-10 18:14:59.000000000 +0200 @@ -449,7 +449,7 @@ case sql::DataType::JSON: { CPP_INFO("It's a string"); - long double ret = sql::mysql::util::strtold(getString(columnIndex).c_str(), NULL); + long double ret = sql::mysql::util::strtonum(getString(columnIndex).c_str()); CPP_INFO_FMT("value=%10.10f", ret); return ret; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/driver/mysql_resultset.cpp new/mysql-connector-c++-1.1.9/driver/mysql_resultset.cpp --- old/mysql-connector-c++-1.1.8/driver/mysql_resultset.cpp 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/driver/mysql_resultset.cpp 2017-05-10 18:14:59.000000000 +0200 @@ -368,7 +368,7 @@ if (getFieldMeta(columnIndex)->type == MYSQL_TYPE_BIT) { return static_cast<long double>(getInt64(columnIndex)); } - return sql::mysql::util::strtold(row[columnIndex - 1], NULL); + return sql::mysql::util::strtonum(row[columnIndex - 1]); } /* }}} */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/driver/mysql_util.cpp new/mysql-connector-c++-1.1.9/driver/mysql_util.cpp --- old/mysql-connector-c++-1.1.8/driver/mysql_util.cpp 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/driver/mysql_util.cpp 2017-05-10 18:14:59.000000000 +0200 @@ -2422,6 +2422,42 @@ } +long double strtonum(const std::string &str, int radix) +{ + typedef std::istreambuf_iterator<char> iter_t; + static std::locale c_locale("C"); + static const std::num_get<char> &cvt + = std::use_facet<std::num_get<char> >(c_locale); + + std::istringstream inp(str); + long double val = 0.0L; + + inp.imbue(c_locale); + + switch (radix) { + case 10: inp.setf(std::ios_base::dec, std::ios_base::basefield); break; + case 16: inp.setf(std::ios_base::hex, std::ios_base::basefield); break; + case 8: inp.setf(std::ios_base::oct, std::ios_base::basefield); break; + default: + inp.setf(std::ios_base::fmtflags(0), std::ios_base::basefield); + break; + } + + /* + Note: We could use istream::operator>>() to do conversion, but then + there are problems with detecting conversion errors on some platforms + (OSX). For that reason we instead use a number conversion facet directly. + This gives direct access to the error information. + */ + + iter_t beg(inp), end; + std::ios::iostate err = std::ios_base::goodbit; + + cvt.get(beg, end, inp, err, val); + + return val; +} + } /* namespace util */ } /* namespace mysql */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/driver/mysql_util.h new/mysql-connector-c++-1.1.9/driver/mysql_util.h --- old/mysql-connector-c++-1.1.8/driver/mysql_util.h 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/driver/mysql_util.h 2017-05-10 18:14:59.000000000 +0200 @@ -30,6 +30,7 @@ #include "nativeapi/mysql_private_iface.h" #include <cppconn/config.h> #include <cppconn/sqlstring.h> +#include <cppconn/exception.h> #include <boost/shared_ptr.hpp> @@ -141,6 +142,20 @@ long double strtold(const char *nptr, char **endptr); +/* + Generic string to number conversion function template. + + Retrurns numeric value after converting given string in a given base, + which should be either 10, 16 or 8. Throws error if the whole string + could not be converted to a number. + + Unlike strtod() and friends, this function does not depend on the current + locale setting but always uses the "C" locale (so that, e.g., decimal point + character is always '.'). +*/ + +long double strtonum(const std::string &str, int radix = 10); + typedef struct st_our_charset { unsigned int nr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/driver/nativeapi/mysql_private_iface.h new/mysql-connector-c++-1.1.9/driver/nativeapi/mysql_private_iface.h --- old/mysql-connector-c++-1.1.8/driver/nativeapi/mysql_private_iface.h 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/driver/nativeapi/mysql_private_iface.h 2017-05-10 18:14:59.000000000 +0200 @@ -1,5 +1,5 @@ /* -Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. The MySQL Connector/C++ is licensed under the terms of the GPLv2 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most @@ -48,6 +48,9 @@ #define snprintf _snprintf #endif +#if ( defined(_WIN32) || defined(_WIN64) ) && (_MSC_VER >= 1900) +#define HAVE_STRUCT_TIMESPEC +#endif #if !defined(_WIN32) && !defined(_WIN64) extern "C" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/test/unit/bugs/bugs.cpp new/mysql-connector-c++-1.1.9/test/unit/bugs/bugs.cpp --- old/mysql-connector-c++-1.1.8/test/unit/bugs/bugs.cpp 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/test/unit/bugs/bugs.cpp 2017-05-10 18:14:59.000000000 +0200 @@ -24,6 +24,7 @@ #include "bugs.h" +#include <locale> #include <sstream> #include <limits> #include "driver/mysql_error.h" @@ -1054,5 +1055,35 @@ pstmt->execute(); } +void bugs::bug17227390() +{ + try + { + std::locale::global(std::locale("fr_CA.UTF-8")); + + for (int i=0; i < 2; ++i) + { + if (i == 0) + { + pstmt.reset( con->prepareStatement("select 1.001 as number;") ); + res.reset( pstmt->executeQuery() ); + } + else + { + res.reset(stmt->executeQuery("select 1.001 as number;")); + } + + res->next(); + + ASSERT_EQUALS(1.001L, res->getDouble(1)); + ASSERT_EQUALS(1.001L, res->getDouble("number")); + + } + } + catch (...) { + // Some systems don't have this encoding, so could throw error here + } +} + } /* namespace regression */ } /* namespace testsuite */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/test/unit/bugs/bugs.h new/mysql-connector-c++-1.1.9/test/unit/bugs/bugs.h --- old/mysql-connector-c++-1.1.8/test/unit/bugs/bugs.h 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/test/unit/bugs/bugs.h 2017-05-10 18:14:59.000000000 +0200 @@ -69,6 +69,7 @@ TEST_CASE(bug21152054); TEST_CASE(bug22292073); TEST_CASE(bug23212333); + TEST_CASE(bug17227390); } /** @@ -128,6 +129,8 @@ void bug23212333(); + void bug17227390(); + }; REGISTER_FIXTURE(bugs); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/test/unit/classes/CMakeLists.txt new/mysql-connector-c++-1.1.9/test/unit/classes/CMakeLists.txt --- old/mysql-connector-c++-1.1.8/test/unit/classes/CMakeLists.txt 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/test/unit/classes/CMakeLists.txt 2017-05-10 18:14:59.000000000 +0200 @@ -198,16 +198,8 @@ OUTPUT_NAME "art_resultset" LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}" COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}") +TARGET_LINK_LIBRARIES(test_art_resultset ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}) -IF(WIN32) - TARGET_LINK_LIBRARIES(test_art_resultset ${MY_TARGET_LINK_LIBRARIES_STATIC_CPPLIB} ${MY_GCOV_LINK_LIBRARIES}) -# SET_TARGET_PROPERTIES(test_art_resultset PROPERTIES -# LINK_FLAGS_DEBUG "/NODEFAULTLIB:LIBCMTD /NODEFAULTLIB:LIBCMT" -# LINK_FLAGS_RELWITHDEBINFO "/NODEFAULTLIB:LIBCMT" -# LINK_FLAGS_RELEASE "/NODEFAULTLIB:LIBCMT") -ELSE(WIN32) - TARGET_LINK_LIBRARIES(test_art_resultset ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}) -ENDIF(WIN32) MESSAGE(STATUS "Configuring unit tests - art_resultset") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/test/unit/classes/resultset.cpp new/mysql-connector-c++-1.1.9/test/unit/classes/resultset.cpp --- old/mysql-connector-c++-1.1.8/test/unit/classes/resultset.cpp 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/test/unit/classes/resultset.cpp 2017-05-10 18:14:59.000000000 +0200 @@ -281,6 +281,7 @@ res->first(); ASSERT_EQUALS(res->getDouble("id"), res->getDouble(1)); + try { res->getDouble(0); @@ -554,6 +555,7 @@ logMsg(msg.str()); got_warning=true; } + //ASSERT_EQUALS(pres->getDouble("id"), res->getDouble("id")); if (pres->getInt("id") != res->getInt("id")) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-connector-c++-1.1.8/win/mysql-conncpp-msi-template.xml.in new/mysql-connector-c++-1.1.9/win/mysql-conncpp-msi-template.xml.in --- old/mysql-connector-c++-1.1.8/win/mysql-conncpp-msi-template.xml.in 2016-12-14 10:58:54.000000000 +0100 +++ new/mysql-connector-c++-1.1.9/win/mysql-conncpp-msi-template.xml.in 2017-05-10 18:14:59.000000000 +0200 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,8 +54,6 @@ <File Id="file0031" Name="README.TXT" LongName="README.txt" Source="..\README" /> <File Id="file0032" Name="@LIC_SHORT_NAME@" LongName="@LIC_NAME@" Source="@LICENSE_FILE@" /> <File Id="file0033" Name="LIC_3RDP.TXT" LongName="Licenses_for_Third-Party_Components.txt" Source="..\Licenses_for_Third-Party_Components.txt" /> - <File Id="file0034" Name="INSTALL.TXT" LongName="INSTALL.txt" Source="..\INSTALL" /> - <File Id="file0035" Name="ANNOUNCE.TXT" LongName="ANNOUNCEMENT.txt" Source="..\ANNOUNCEMENT" /> </Component> <!-- *****************************************************************************************