Subject: CVS commit: pkgsrc/databases/soci
From: Adam Ciarcinski
Date: 2023-03-16 08:50:16
Message id: 20230316075016.6A9EEFA90@cvs.NetBSD.org

Log Message:
soci: updated to 4.0.3

Version 4.0.3 (99e2d567) differs from 4.0.2 in the following ways:

Changes affecting all or multiple backends:
 - Fix opening sessions from pool
 - Fix default backend search path
 - Fix build with latest glibc versions where SIGSTKSZ is not constant
 - Document using SOCI as a CMake subdirectory
 - Document using SOCI with Conan

Backend-specific changes:

- MySQL
 - Implement get_table_names() for MySQL
 - Fix MySQL backend build with MySQL >= 8
 - Fix mysql_library_end() in multithreaded environment
 - Make mysql_soci_error::get_error_category() more useful

- ODBC
 - Fix several bugs in vector into code
 - Fix memory leaks in case of SQLNumResultCols() failure.
 - Export odbc_session_backend::get_database_product() from DLL.

- Oracle
 - Add support for detecting Oracle 20 and 21 to CMake

- PostgreSQL
 - Fix compilation when "free" is redefined somewhere else.

- SQLite3
 - Fix bulk operations with vectors of size 1 in SQLite3 backend

- Firebird
 - Suppress FB memory leaks

---
Version 4.0.2 differs from 4.0.1 in the following ways:

Changes affecting all or multiple backends:

 - Fix using SOCI from CMake projects using find_package()
 - Always set indicator to i_null when no data is read from the database
 - Add support for building SOCI with LTO
 - Enable ELF visibility support
 - Fix building tests under macOS on ARM 64
 - Fix using custom types with an explicitly null indicator
 - Fix using vectors of custom types for DB/2, ODBC and Oracle
 - Fix vectors of XML and CLOB values for DB/2, Firebird, ODBC and Oracle
 - Don't return i_truncated for empty strings in a vector for DB/2, ODBC.
 - Make unloading dynamic backends safer by delaying it if necessary
 - Migrate most Linux CI builds to GitHub Actions from Travis CI
 - Fix rare deadlock in session::reconnect()
 - Fix all warnings in MSVS build

Backend-specific changes:

- MySQL
 - Add "reconnect" option

- ODBC
 - Don't show interactive ODBC dialogs when reconnecting.
 - Fix session::get_last_insert_id() for empty tables with SQL Server.

- Oracle
 - Implement session::get_next_sequence_value().
 - Fix using default NUMBER type with rowset API
 - Handle reading from CLOBs that can't be read all at once.
 - Fix another memory leak in CLOB handling code.

- PostgreSQL
 - Fix use of quoted identifiers with colons
 - Fix tests compilation under macOS
 - Fix tests with PostgreSQL 12 or later.

- SQLite3
 - Fix getting doubles from non-numeric columns.
 - Fix using uninitialized sqlite3_column member

---
Version 4.0.1 differs from 4.0.0 in the following ways:

- Add session::is_connected()
- Fix DST adjustment when reading dates from the database
- Make dynamic_backends::search_paths() actually available
- Fix using std::vector<boost::optional<>> in query arguments
- Allow using dt_blob and dt_xml with rowset API too
- Fix or work around many compilation warnings with newer compilers.

- DB2
 - Fix memory leak.

- ODBC
 - Fix bug with handling of strings of exactly ODBC_MAX_COL_SIZE length
 - Fix opening connections when using connection pooling.

- Oracle
 - Improve detection for newer Oracle versions
 - Use bigger buffer for Oracle connection string length
 - Fix memory leak in Oracle backend when using CLOBs (XML or long strings).

- PostgreSQL
 - Fix reconnect() to use the correct connection parameters
 - Improve error message returned on connection loss
 - Fix use of uninitialized connection variable on connection failure
 - Fix inadvertently broken use of single row mode
 - Fix handling of identifiers with colons

- SQLite
 - Add support for "vfs" and "readonly" connection options
 - Fix std::tm handling
 - Fix "big int" detection

---
Version 4.0.0 differs from 3.2.3 in the following ways:

NOTICE: This is probably the last release compatible with C++98.

- Added support for C++11 and C++17 compilation modes.
- Added RELEASING.md how-to and scripts/release.sh helper for release managers.
- Added context of the failure in soci_error::what() which now returns a
  longer and more useful message. Use the new get_error_message() method to get
  just the brief error message which used to be returned by what().
- Added logger class to allow customizing SOCI logging operations
- Added helper for generating portable DDL and DML statements
- Added portable column info and other metadata queries
- Added helper exchange_type_cast<>() template function as better static_cast
- Added values::get_number_of_columns() as convenient accessor.
- Added public macro SOCI_NORETURN and use it in declaration.
- Added handling of dt_unsigned_long_long to the simple interface.
- Added new data type dt_blob with accompanying simple-interface support
- Added basic support for error categories.
- Added failover_callback interface
- Added bulk iterators interface
- Added basic package exporting to CMake configuration
- Added bigstring (XML and CLOB) support
- Added CMake option SOCI_POSTGRESQL_NOSINLGEROWMODE with default value OFF
- Adopted new layout of the source tree
- Although the build configuration is based on CMake 2.8,
  numerous improvements have been applied to the CMake scripts.
- Converted all tests to use the Catch framework.
- Fixed issues with throwing from soci_error copy constructor and assignment operator
- Fixed backends loading in case SOCI is built with CMAKE_DEBUG_POSTFIX set
- Fixed deadlock in soci::connection_pool::try_lease function.
- Fixed numerous compilation warnings using various compilers.
- Fixed non-copyability of connection_pool
- Fixed uniform offset for BLOB read/write operations
- Fixed memory leak when reusing into and use elements.
- Fixed deduction of reference in boost::fusion::for_each
- Added empty_blob() and nvl() to portable utilities.
- Improved handling and conversions of time and timezone information values
- Improved diagnostics with included query parameter names in error messages
- Improve CMake configuration for integrating SOCI as subproject
- Improved locale-independent conversions of floating-point numbers to string.
- Include all public headers using soci/ prefix inside SOCI itself
- Migrated documentation content from HTML to Markdown
- Provided error context in exceptions and richer diagnostics
- Replaced assertion with raising exception in case of connection_pool::lease() \ 
failure.
- Remove use of std::unary_function and std::ptr_fun deprecated in C++11/17
- Split statement::clean_up into two operations bind_clean_up and clean_up
- Updated the backend documentation.
- Use 64-bit integer for next sequence and last insert ID values

- DB2
-- Fixed ambiguous error handling during statement execution
-- Fixed handling of NULL for strings during bulk querying
-- Replaced SQLConnect with SQLDriverConnect to establish database session

- Firebird
-- Added SOCI_FIREBIRD_EMBEDDED option to allow building with embedded library.
-- Added possibility to build the backend using embedded library (libfbembed).
-- Added CLOB and XML support
-- Fixed too eager start of implicit transaction
-- Fixed bug with writing BLOB values
-- Replaced truncation of too long VARCHAR columns values with throwing exception.

- MySQL
-- Added MySQL 8 to tested versions.
-- Added get_last_insert_id function
-- Added timeout support
-- Fixed bug whe nusing get_affected_rows() and user defined types
-- Replace throwing generic soci_error with mysql_soci_error

- ODBC
-- Added support for ODBC driver for DB2 which is not compliant to ODBC spec
-- Fixed inserting strings of length greater than 8000 bytes into database
-- Fixed get_affected_rows() when using FreeTDS driver.
-- Fixed reading from unallocated memory (driver bug?) in ODBC with MySQL
-- Fixed handling of NULL for strings during bulk querying
-- Fixed memory leak of internal odbc_standard_use_type_backend buffer

- Oracle
-- Added oraocci12 name to Oracle client look-up by CMake.
-- Added NLS support for connection parameters.
-- Added Oracle wallet authentication.
-- Added (partial) handling of OCI_SUCCESS_WITH_INFO.
-- Added handling of more error codes for error categories.
-- Added failover_callback interface implementation
-- Added bulk iterators interface implementation
-- Added bigstring (XML and CLOB) support
-- Added lazy initialization of the temporary LOB objects for Oracle.
-- Fixed uniform offset for BLOB read/write operations
-- Fixed connection parameters parsing to allow spaces in values
-- Fixed handling of BINARY_DOUBLE in dynamic row.
-- Use SQLT_BDOUBLE for floating point values instead of SQLT_FLT.

- PostgreSQL
-- Added singlerows mode for PostgreSQL
-- Added failover_callback interface implementation
-- Added bulk iterators interface implementation
-- Added test for the uuid data type
-- Added bigstring (XML and CLOB) support
-- Dropped support for PostgreSQL 7.x
-- Fixed defining SOCI_POSTGRESQL_NOSINLGEROWMODE for PostgreSQL < 9
-- Fixed string to floating-point number conversions assuming "C" locale
-- Fixed support for bytea across PostgreSQL versions older than 9
-- Fixed timestamp handling in UTC
-- Fixed uniform offset for BLOB read/write operations
-- Explicitly set extra_float_digits to 3 when using PostgreSQL >=9 in ODBC \ 
for consistency.
-- Improve string to floating-point number conversion to be exact.

- SQLite3
-- Added get_last_insert_id function
-- Fixed clean up on error to enable getting detailed diagnostics
-- Fixed issue numerous calls to fetch by better control when backend calls \ 
sqlite3_step
-- Fixed memory leak in sqlite3_session_backend
-- Fixed closing connection after obtaining error diagnostics
-- Fixed affected rows count when reusing prepared statements

Files:
RevisionActionfile
1.53modifypkgsrc/databases/soci/Makefile
1.3modifypkgsrc/databases/soci/PLIST
1.11modifypkgsrc/databases/soci/distinfo
1.3modifypkgsrc/databases/soci/options.mk
1.2removepkgsrc/databases/soci/patches/patch-CMakeLists.txt
1.1removepkgsrc/databases/soci/patches/patch-backends_postgresql_statement.cpp
1.1removepkgsrc/databases/soci/patches/patch-cmake_SociConfig.cmake