forked from SOCI/soci
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
482 lines (386 loc) · 20.7 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
This file contains the history of changes in the SOCI library.
---
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 (#245).
- Added helper for generating portable DDL and DML statements (#484).
- Added portable column info and other metadata queries (#480).
- Added helper exchange_type_cast<>() template function as better static_cast (#301).
- 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 (#361).
- Added basic support for error categories.
- Added failover_callback interface (#486).
- Added bulk iterators interface (#487).
- Added basic package exporting to CMake configuration (#503).
- Added bigstring (XML and CLOB) support (#509).
- Added CMake option SOCI_POSTGRESQL_NOSINLGEROWMODE with default value OFF (#594).
- Adopted new layout of the source tree (#151).
- 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 (#302).
- Fixed backends loading in case SOCI is built with CMAKE_DEBUG_POSTFIX set (#368).
- Fixed deadlock in soci::connection_pool::try_lease function.
- Fixed numerous compilation warnings using various compilers.
- Fixed non-copyability of connection_pool (#478).
- Fixed uniform offset for BLOB read/write operations (#508).
- Fixed memory leak when reusing into and use elements.
- Fixed deduction of reference in boost::fusion::for_each (#728).
- Added empty_blob() and nvl() to portable utilities.
- Improved handling and conversions of time and timezone information values (#316).
- Improved diagnostics with included query parameter names in error messages (#318).
- Improve CMake configuration for integrating SOCI as subproject (#380).
- Improved locale-independent conversions of floating-point numbers to string.
- Include all public headers using soci/ prefix inside SOCI itself (#239).
- Migrated documentation content from HTML to Markdown (#344).
- Provided error context in exceptions and richer diagnostics (#302).
- 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 (#650, #751).
- Split statement::clean_up into two operations bind_clean_up and clean_up (#358).
- Updated the backend documentation.
- Use 64-bit integer for next sequence and last insert ID values (#720).
- DB2
-- Fixed ambiguous error handling during statement execution (#431).
-- Fixed handling of NULL for strings during bulk querying (#581).
-- Replaced SQLConnect with SQLDriverConnect to establish database session (#438).
- 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 (#578).
-- Fixed too eager start of implicit transaction (#292).
-- Fixed bug with writing BLOB values (#524).
-- Replaced truncation of too long VARCHAR columns values with throwing exception.
- MySQL
-- Added MySQL 8 to tested versions.
-- Added get_last_insert_id function (#216).
-- Added timeout support (#691).
-- Fixed bug whe nusing get_affected_rows() and user defined types (#221).
-- Replace throwing generic soci_error with mysql_soci_error (#613).
- ODBC
-- Added support for ODBC driver for DB2 which is not compliant to ODBC spec (#663).
-- Fixed inserting strings of length greater than 8000 bytes into database (#383, #681).
-- Fixed get_affected_rows() when using FreeTDS driver.
-- Fixed reading from unallocated memory (driver bug?) in ODBC with MySQL (#555).
-- Fixed handling of NULL for strings during bulk querying (#581).
-- Fixed memory leak of internal odbc_standard_use_type_backend buffer (#627).
- 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 (#486).
-- Added bulk iterators interface implementation (#487).
-- Added bigstring (XML and CLOB) support (#509).
-- Added lazy initialization of the temporary LOB objects for Oracle.
-- Fixed uniform offset for BLOB read/write operations (#508).
-- Fixed connection parameters parsing to allow spaces in values (#213).
-- 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 (#482).
-- Added failover_callback interface implementation (#486).
-- Added bulk iterators interface implementation (#487).
-- Added test for the uuid data type (#420).
-- Added bigstring (XML and CLOB) support (#509).
-- Dropped support for PostgreSQL 7.x (#623).
-- Fixed defining SOCI_POSTGRESQL_NOSINLGEROWMODE for PostgreSQL < 9 (#571).
-- Fixed string to floating-point number conversions assuming "C" locale (#238).
-- Fixed support for bytea across PostgreSQL versions older than 9 (#242).
-- Fixed timestamp handling in UTC (#190).
-- Fixed uniform offset for BLOB read/write operations (#508).
-- 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 (#216).
-- Fixed clean up on error to enable getting detailed diagnostics (#318).
-- Fixed issue numerous calls to fetch by better control when backend calls sqlite3_step (#375).
-- Fixed memory leak in sqlite3_session_backend (#378).
-- Fixed closing connection after obtaining error diagnostics (#381).
-- Fixed affected rows count when reusing prepared statements (#428).
---
Version 3.2.3 differs from 3.2.2 in the following ways:
- Improved Boost Tuple & Fusion integration by using boost::fusion::foreach
to reference each member of a sequence. Breaks compatibility with Boost 1.35 (2008).
- Fixed linker error when building 64-bit target with Visual Studio.
- Fixed several issues with building using Cygwin and MinGW.
- Clarified documentation and examples on bulk operations.
- MySQL
-- Fixed building against MySQL 3.23.
- ODBC
- Improve readability of ODBC error messages.
- Fixed CMake configuration of ODBC backend for Visual Studio 64-bit targets.
- Oracle
-- We've had to disable Oracle target in the Travis CI configuration until we
figure out how to setup Oracle on Travis CI directly.
Therefore, this release hasn't been extensively tested against Oracle.
- PostgreSQL
-- Added support for UUID column type (tests and docs updated).
- SQLite3
-- Added sqlite3_soci_error exception as subclass of soci_error to provide useful
exposure of specific SQLite3 error codes (tests and docs updated).
---
Version 3.2.2 differs from 3.2.1 in the following ways:
- Fixed once_temp_type destructor with noexcept(false) specifier for C++11
- Fix uninitialized indicators in conversion_into_type and conversion_use_type specialisations
- Fixed placeholder matching for PostgreSQL-style casts with ORM
- Fixed memory leaking in use binding in case of bind/unbind sequence
- Fixed sscanf formatter for MinGW/MSVC in backends
- Fixed partial placeholder name matching for ORM cases
- Added test for use of indicators with rowset<row>
- Added test for get_affected_rows after bulk operations
- DB2
-- Enable build and testing on Travis CI
-- Fixed use type size calculation during bind/pre_use
- Firebird
-- Enable memory cleanup to avoid leaks after binding
-- Added missing C++ library headers
-- Added get_affected_rows() support for bulk operations
-- Fixed compilation with VS2008
-- Fixed building tests with the backend built as DLL.
- MySQL
-- Added get_affected_rows() support for bulk operations
- ODBC
-- Always call ASCII version of ODBC function SQLGetDiagRec
-- Fixed invalid condition test in assertions
-- Added get_affected_rows() support for bulk operations
-- Added support for (unsigned) long long vectors
-- Changed mapping of SQL_BIGINT to dt_long_long in ODBC backend
-- Added some trivial optimizations in statement preparation code
- Oracle
-- Fixed missing noData_ reported in particular case when OCIStmtExecute returns success
-- Improved Oracle testing setup on Travis CI
- PostgreSQL
-- Added session::get_next_sequence_value() for PostgreSQL backend
-- Added get_affected_rows() support for bulk operations
-- Applied RAII and simplified error handling logic
-- Fixed issue with exceptions escaping postgresql_statement_backend destructor
- SQLite3
-- Replaced sqlite3_prepare with sqlite3_prepare_v2
-- Added missing <cstdarg> header
-- Fixed wrong size used in memcpy() during bulk processing
-- Added get_affected_rows() support for bulk operations
-- Added shared_cache=true propery to control SQLITE_OPEN_SHAREDCACHE flag
- Documentation
-- Corrected usage examples
- Building
-- Updated CMake for Oracle 12g
-- Restructured and improved Travis CI setup to do single build per backend
-- Fixed wrong GCC_VERSION used in CMake config for commandline-overriden GCC
-- Allows CMake to find 32-bit DB2 on Windows x64
-- Removed redundant Oracle libclntsh library lookup
-- Fixed SQLITE3_LIBRARIES handling by find_package_handle_standard_args
---
Version 3.2.1 differs from 3.2.0 in the following ways:
- Fixed binding of Oracle type NUMBER(9,0) to C++ int, by Tomasz Olszewski
- Fixed Oracle client library detection on Windows, by Tomasz Olszewski
- Fixed PostgreSQL issue with deallocate_prepared_statement called for non-existing statement
- Fixed prepared insert statements with custom data types support, by Tomasz Olszewski
- Fixed recent improvements in x:=y name binding, by Poul Bondo
- Fixed query transformation assignment in pooled sessions, by Stefan Chrobot
- Cleaned up SOCI_POSTGRESQL_NOPARAMS and related options in code and documentation
- Dropped patch (micro) version number from documentation URLs on the website
---
Version 3.2.0 differs from 3.1.0 in the following ways:
- SOCI is now organization at GitHub
-- Git repository moved to https://github.com/SOCI/soci
-- Opened new bug tracker (SF.net tracker is read-only)
-- Opened Wiki for FAQ and development articles
-- Website, mailing lists and downloads remain on SourceForge.net
-- Applied GitFlow branching model
-- Added package maintenance repository https://github.com/SOCI/soci-pkg
- Core
-- Added connection_parameters to enable support for session options used by core, backends or low-level API.
-- Added user-defined query transformation support based on function, functor and lambda
-- Fixed missing connection check and backend setup ensured for session
-- Fixed backend initialization when used with connection pool (Core)
-- Fixed memory leaks on exception thrown during statement preparation stage
- DB2
-- Added new backend for IBM DB2
- Firebird
-- Fixed bug in repeated statement execution
-- Fixed issues with input parameter binding
-- Fixed connection string parsing to handle possible white-spaces
-- Fixed issues with C++ type unsigned long
-- Fixed reading negative values into C++ type double
-- Added option to fetch numeric/decimal data into string of characters
-- Added CMake configuration
-- Updated tests
-- Continued regular testing on Windows and Unix platforms
- MySQL
-- Replaced use of type=InnoDB with engine=InnoDB
-- Improved CMake configuration
- ODBC
-- Added connection_parameters option ODBC_OPTION_DRIVER_COMPLETE
-- Fixed issues in handling C++ types int and long on 64-bit architectures
-- Added missing CMake configuration for tests
-- Continued regular testing on Windows and Unix platforms
- Oracle
-- Implemented statement::get_affected_rows() operation
-- Use OCI_THREADED and OCI_ENV_NO_MUTEX with OCIEnvCreate
-- Added numerous fixes and improvements in tests
-- Added option to fetch numeric/decimal data into string of characters
-- Fixed issues in binding procedure IN/OUT parameters
- PostgreSQL
-- Add reading of BYTEA data into std::string (not fully-featured binary data support yet)
-- Add JSON data type support available in PostgreSQL 9.2+
-- Fixed incorrect assertion in postgresql::get_error_details
-- Fixed premature deallocation of prepared statements
-- Fixed servers-side memory leak in prepared statements
-- Fixed memory leak of PGresult on exception thrown
-- Fixed isues in parsing complex PL/PSQL functions
- SQLite3
-- Implemented statement::get_affected_rows() operation
-- Fixed handling of database file path with spaces
- Building, testing and installation
-- Marked Makefile.basic as deprecated (maintainer wanted)
-- Cleaned numerous compilation warnings reported by various compilers
-- Improved compilation using latest version of clang
-- Added numerous improvements in CMake configuration
-- Added SOCI_STATIC option to enable/disable static libraries build
-- Fixed issues with ignored -DWITH_<dependency> options
-- Fixed FindMySQL.cmake to allow use of mysqlclient from custom location
-- Added support of SQLITE_ROOT_DIR variable to FindSQLite3.cmake module
-- Fixed and tested CMake configuration on OSX
-- Fixed and tested CMake configuration on FreeBSD
-- Fixed and tested CMake configuration to use with Ninja
-- Fixed building using Visual Studio 2010
-- Added support for building using Visual Studio 2012
-- Set up SOCI continuous integration at travis-ci.org
-- Added Debian packaging support to soci-pkg repository
-- Added Fedora/CentOS/RedHat packaging support to soci-pkg repository
- Documentation
-- Review and update to catch up with current status quo
-- Updated code examples
-- Start maintenance and hosting of SOCI documentation per released version
---
Version 3.1.0 differs from 3.0.0 in the following ways:
- Added Ada language binding
- Migraded build system from GNU Autotools and Visual Studio projects to CMake
- CMake build tested with Visual Studio, GCC and clang
- Incorporated a compromise for naming versioned shared libraries
- Enhanced and improved integration with Boost libraries:
-- Boost.DateTime
-- Boost.Fusion
-- Boost.Optional
-- Boost.Tuple
- Bug fixes and improvements in core and backends:
-- Added soci::values::get_properties accessor useful for composing soci::type_conversion
-- Export advanced API of backend loader from DLL.
-- Added static factory registration functions for backends
-- Added get_affected_rows operation
-- Fixed thread-safety of connection pool under Windows
-- Fixed bug with droping const qualifiers when binding to std::vector<soci::indicator>
-- Fixed bug in default initialization of an object of const backend_factory wihch requires user-provided default constructor (see C++03/C++0x)
-- Fixes for 64-bit builds
-- Removed redundant exchange_traits breaking ODR on LP64
-- Better ODBC support
-- Type conversion support for unsigned integer types
-- Bug ID:1971436 - incorrect rowset copy operations
-- Bug ID:2010367 - memory leak (ODBC)
-- Bug ID:2010409 - invalid memory allocaton in define by position (ODBC)
-- Bug ID:2021243 - long long type support in Visual C++
-- Patch ID:2483066 - 64bit Linux and 64bit integer submitted
-- Patch ID:2809809 - Fix build with GCC 4.4
-- Patch ID:2809810 - Fix SQLite3 build with GCC 4.3
-- Patch ID:2581206 - Windows unicode application
-- Patch ID:3058275 - install target for cmake build submitted
-- Patch ID:3069375 - use $(prefix)/lib64 on AMD64 platforms.
-- Improved performance while accessing query results (MySQL)
-- Bug fixes for PROCEDURE support (MySQL)
-- Removed throw statements from mysql_rowid_backend and mysql_blob_backend destructors (MySQL)
-- Verify that prepared statements survive session::reconnect() operatoin (MySQL)
-- Improved support for time and date (MySQL, PostgreSQL)
-- Fixed bug with strings of length exceeding 255 characters (ODBC)
-- Improved interpretation of the connect string (Oracle)
-- Added handling of unsigned long long (Oracle, SQLite3, PostgreSQL)
-- Fixes in integral types support (PostgreSQL)
-- Support for colon-casts (PostgreSQL)
-- Added possibility for use BLOB (PostgreSQL)
-- Added support for connection property "synchronous=on|off" (SQLite3)
-- Improved BLOB data handling (SQLite3)
-- Improved boolean type suppport (SQLite3)
-- Session timeout support (SQLite3)
-- Improved tests clean-up (SQLite3)
-- Added missing typedef of sqlite3_destructor_type which has been defined in sqlite3.h but since 3.3.10 (see comment for reference to SQLite ticket)
- Updated tests for various backends and SQL data types
- Migrated from CVS to Git repository
- Changed naming convensions and style across all the source code
- Firebird backend removed from official release as not actively maintained. Available in the Git repository.
---
Version 3.0.0 differs from 2.2.0 in the following ways:
- Exposed the session's locale object.
- Moved the "no data" flag from indicators to statement.
- Allowed const objects as "use" elements.
- Added connection mode for Oracle.
- Added RAII support for transactions.
- Added the open/close/reconnect functionality.
- Added support for long long as a fundamental data type.
- Unified column names for dynamic rowset description, to overcome
differences between database servers.
- Added the "simple" interface for interfacing from other languages.
- Added thread-safe connection pool.
- Added integrated support for Boost data types: gregorian_date,
fusion and tuple.
- Added dynamic backend loading.
- Changed the naming convention to comply with Boost recommendations.
---
Version 2.2.0 differs from 2.1.0 in the following ways:
- Added true support for statement preparation with PostgreSQL.
- Added support for the stream-like extraction from Row.
- Added STL-compatible iterator interface for select statements.
- Refactored the set of common tests to validate core library functionality
independently on the target database server.
- Introduced new backends for MS SQL Server (via ODBC) and Firebird.
- Provided complete build system for both Unix (autotools) and
Windows (solution and project files for MSVC++).
---
Version 2.1.0 differs from 2.0.1 in the following ways:
- Added two additional backends: MySQL and SQLite3
- Restructured the source code layout so that the whole library was broken
into the "core" part and independent "backends", each in its own
directory together with appropriate tests.
- Provided basic Makefiles for static and shared libraries on
Linux-compatible systems.
- Added the general class and function reference to the documentation.
---
Version 2.0.1 differs from 2.0.0 in the following ways:
- Corrected some typos in documentation.
- Corrected handling of dynamic rowset description for those backends
which do not have dedicated description functionality.
- A bug fix to correctly handle std::tm in the Oracle backend.
- A bug fix to correctly handle object relational mapping when
Values::set<T>() and Values::get<T>() are called where T is a
TypeConversion-based type.
---
Version 2.0.0 differs from 1.2.1 in the following ways:
- The whole library was internally re-architectured to allow operation
with many different backends. The top-level part of the library
(the syntax layer) provides essentially the same interface as in previous
versions of the library, but it can work with independent (and dynamically
selected) backends, possibly targeting different database engines.
As a prove of concept (and to encourage developments of new backends),
the PostgreSQL backend was provided in addition to the Oracle one.
During this re-architecturing, some minor bugs were fixed as well.
- The old Boost-style license was changed to the new (v. 1.0) Boost license.
---
The version 1.2.1 differs from 1.2.0 in the following ways:
- A bug was fixed that caused compile errors on MS VC++ compiler.
---
The version 1.2.0 differs from 1.1.0 in the following ways:
- A memory leak when reading into Row objects was fixed.
- Bulk (array) operations were introduced for high-performance
applications, where the number of network round-trips can be
significantly reduced by operating on whole arrays (vectors).
---
The version 1.1.0 differs from 1.0.1 in the following ways:
- Explicit support for calling stored procedures was added.
- Dynamic row recognition (type discovery) was added.
- Support for user-defined data types was added.