7.7.3 - Fix up more damage done by auto-formatting. - New `result::for_each()`: simple iteration and conversion of rows. (#528) - Add some missing headers in ``. (#551) - More strictness in `header-pre.hxx`/`header-post.hxx` checking. - Disallow nesting of `ignore-deprecated` blocks. - Deprecate `exec` functions' `desc` parameter. - Fix `placeholders` documentation. (#557) - Strip `const` and references from `value_type`. (#558) - Get tests running on appveyor. (#560) - Fix broken nonblocking connection on Windows. (#560) 7.7.2 - Fix up damage done by auto-formatting. 7.7.1 - When you build libpqxx, configure the compiler's C++ version yourself! - Finally fix a long-standing silly warning in autogen. - Fix `digit_to_number` not being found on some comilers. (#518, #519) - In audit mode, define `_FORTIFY_SOURCE` to enable some extra checks. - Make more functions `constexpr`. Nothing particularly useful though. - Make more functions `noexcept`. - Move constructor & assignment for `result`. - Support LGTM.com and Facebook "infer" static analysis. - Deprecated `set_variable`/`get_variable` on `transaction_base`. - (Design unearthed warts in SQL variables, which were then fixed.) - Set/get session variables on `connection`: `set_session_var`/`get_var`. - Set/get local variables: execute SQL statements. - When using `select()`, include `` if available. 7.7.0 - Fix `stream_to` for differing table/client encodings. (#473) - Use `[[likely]]` & `[[unlikely]]` only in C++20, to silence warnings. - Fix clang "not a const expression" error in Windows. (#472) - Fix warnings about `[[likely]]` in `if constexpr`. (#475) - Clearer error for ambiguous string conversion of `char` type. (#481) - Pseudo-statement in `prepare()` error was for the wrong statement. (#488) - New class, `connecting` for nonblocking connection to the database. (#487) - New class, `range` for SQL range types. (#490) - Replace `std::isdigit` with a safer alternative. - Support string conversions for `std::chrono::year_month_day`. (#492) - Helper for implementing string traits: `generic_to_buf`. - Support `result::at(row_num, col_num)`. - Support `result[row_num, col_num]` if the compiler allows it. - Work around broken `std::filesystem::path` in MinGW. (#498) - Fix leak when getting client encoding fails. (#500) - Use `std::cmp_greater` etc. when available. Saves some ugly casts. - Move `result_iterator.hxx` into `pqxx/include/internal/`. - Move `compiler-public.hxx` into `pqxx/include/internal/`. - Add script for updating copyright strings. - Make `tools/lint` figure out source directory by itself. - Pass the actual C++ version to `tools/lint`, not the baseline one. - Re-enable pyflakes testing in `tools/lint`. - Make more functions `[[nodiscard]]`. - Qualified some member functions as lvalue or rvalue. - Don't run clang-tidy by default. Compatibility issues with gcc options. - Describe version requirements in a JSON file, `requirements.json`. - Doxygen documentation now uses the (Doxygen-extended) Markdown format. - Build docs in `doc/html/`, no longer in `doc/html/Reference/`. - Disable some `std::filesystem` features on Windows. - Shut up stupid Visual Studio warnings. - On gcc, mark rarely-used functions as "cold," to be optimised for size. - Glyph scanning for GB18030 encoding was utterly broken. (#517) 7.6.0 - Removed bad string conversion to `std::basic_string_view`. (#463) - Add C++20 concepts: `binary`, `char_string`, `char_strings`. - Generalise binary strings to any contiguous range of `std::byte`. - Mark `zview` as a view and as a borrowed range. - Save a copy step on string fields in `stream_to`. - New helper: `pqxx::value_type`. - New helper: `pqxx::binary_cast`. (#450) - Some escaping functions now have "into my buffer" variants. - More generic escaping functions, supporting more types of binary. - In C++20, accept generic columns list for `stream_to`. (#447) - Renamed `` to ``. - Deprecated `dynamic_params` in favour of `params`. - `pqxx::params::append_multi()` now calls `reserve()` if possible. - `pqxx::params::size()` is now `noexcept` (but sadly, `ssize()` is not). - Helper for generating parameter placeholders `$1`, `$2`, etc. (#443) - Now requires support for C++14 `[[deprecated]]` attribute. - Deprecated `unesc_raw()` with `unesc_bin()` variants. - Once `unesc_raw()` is gone, we'll support only the hex escape format. - Work around broken `thread_local` in MinGW gcc < 11.1. - `pqxx::blob` now supports `std::filesystem::path`. - Fixed check against header/lib version mismatch: `check_pqxx_version_7_6` - Deprecated result slicing. Expect `row::slice()` to disappear. - More complete documentation, of cursors in particular. 7.5.2 - **Actual serious bug.** `blob::read(std::vector<...>)` was broken. 7.5.1 - Fixed some Visual Studio warnings. - Missed a bit in working around MinGW's broken ``. - Deprecated more obsolete representations of binary data. Use `std::byte`. - New script `tools/deprecations` lists files that use deprecated code. - Added automake-generated `config/compile` to revision control. 7.5.0 - Now requires `std::variant` support! No longer works with gcc7. - When implementing a string conversion, consider specialising `param_format`. - Stop "aborting" nontransaction on closing. (#419) - Silence an overzealous Visual C++ warning. (#418) - Starting support for C++20 `std::span`. - New `blob::read()` using `std::span`. (#429) - New `params` class lets you build parameter lists incrementally. (#387) - Pass `std::vector` params in binary format. - Dropped legacy tests 31 and 49 to work around clang C++20 bug. - Fixed `stream_to` test failure in non-English locales. (#440) - Clarify `transaction_base::stream` documentation. (#423) - Avoid `` on MinGW; it's broken there. (#336, #398, #424, #441) 7.4.1 - Missing includes; broke macOS clang build. (#416) 7.4.0 - Work around Visual Studio 2017 bug with `[[deprecated]]`. (#405, #406) - Work around eternal Windows bug with `max` macro yet again. (#101) - Prepare for C++20 `std::ssize()`. - Dropped test12, which didn't add much and tried to read null strings. - Support string conversion for `std::monostate`. (#409) - Consistent "named constructors" for `stream_to` and `stream_from`. - New `table_path` type. - New `connection` methods `quote_table` and `quote_columns`. - Lots of deprecated stream constructors. - `pqxx::row::swap()` now finally has the `deprecated` attribute. - Finally deprecated a bunch of `field`, `row`, and `result` constructors. - Exposed `transaction_focus` marker class. 7.3.1 - New, simpler API for large objects: `blob` ("binary large object"). - `largeobject` and friends are now deprecated. - Fix visibility issue on gcc/clang, especially on macOS. (#395) - Use "pure" & "visibility" attributes if they work, regardless of compiler. - More deprecated items now have the `[[deprecated]]` attribute. - Document the concept of transaction focus. - Error messages more often report query description, if given. - Suppress spurious deprecation messages on Visual Studio. (#402) - Correct error when prepared/param statement clashes with tx focus. (#401) - `from_stream` with `from_query` now has a convenient factory function. - Removed some obsolete scripts from the `tools/` directory. 7.3.0 - `stream_to` now quotes and escapes its table name. - Removed `transaction_base::classname()`. Did anyone ever use it? - Internal reorg of the `transaction` and `transactionfocus` hierarchies. - Removed the only case of virtual inheritance, related to `namedclass`. - Internal `concat()` for faster, simpler string concatentation. - Fix compile omission in string conversions for `nullptr_t`. - `pqxx::size_buffer()` can now size multiple values at once. - `multi_to_string()` to convert multiple values into one `std::string`. - Implicit `zview` constructor from `char const *`. (#389) - Many `std::string&` parameters are now `zview` or `std::string_view`. - Now checking statement parameter lengths for overflow. - `#include ` in connection.cxx. (#394) 7.2.1 - Fix infinite loop in converting `char *` to string. (#377) - Deprecated `namedclass`. - Convert an entire row using `row::as()`. - Internal rework of `field::to()` and `field::as()` functions. - Some more warning options in maintainer mode. - Removed the old, DocBook-based tutorial. - Fixed wrong `query` and SQLSTATE params to some exceptions. (#378) 7.2.0 - You can now implicitly convert a `const std::string &` to `zview`. - Replaced some overloads for C strings and C++ strings with `zview`. - Deprecating `binarystring`. Use `std::basic_string` instead! - Array parser did not recognise escaping in unquoted values. - gcc10 test build fix: a result iterator is not the same thing as a `row`. - Doc fix: field size does _not_ include terminating zero. (#356) - Fix error message in `demangle_type_name`: printed result, not raw name. - Fix compile warning in `demangle_type_name` on GNU systems. - Document that string conversions assume non-null values. - Start playing with C++20 _concepts._ - Sketch out concepts-based `PQconnectdbParams` support. (#343) - Add missing link to "datatypes" documentation. (#346) - Supports `to_string`, `stream_to`, etc. for `binarystring`. (#312) - Fixed infinite recursion when using `std::optional` in `stream_to`. (#364) - Home-rolled hex-escaping. Saves an allocation. - Catch floating-point negative overflow in `check_cast`, not underflow. - Bit more work on CMake build doc. (#318) - Typo in `datatypes.md`: `nullness`, not `nullness_traits`. (#353) - Fixed test names map in `tests/runner.cxx`. (#354) - Integral `from_string` now accept leading whitespace, as in composite types. - Experimental support basics for composite types. (#355) - Use `stream_from` without knowing the number of fields. (#357) - Global `size_buffer` function. - `quote()` now works for always-null types without conversions defined. - `std::nullopt` now converts to an SQL null. - Skip quoting and escaping array/composite fields of "safe" types. - New type trait: `is_unquoted_safe`. - Forbid invalid specialisations of `query_value`. - Fixed `mktemp` invocation that broke on FreeBSD. - Avoid unneeded encode/decode step on more binary data. - If `__cxa_demangle` fails, fall back on raw type name. (#361) 7.1.2 - Document build in `BUILDING-configure.md` / `BUILDING-cmake.md`. - Work around silly clang warning in `test_errorhandler.cxx`. - Fix install error with some internal headers. (#322) - Fix "No object selected" error message in large objects. (#324) - If error has no SQLSTATE, throw `broken_connection`. (#280) - Fix argument order in `encrypt_password`. (#333, #334) - Fix underestimate of buffer size for `to_string` for floats. (#328) 7.1.1 - Compile fix for Visual Studio. - Warning fix for clang. - Also install `transaction_focus.hxx`. (#320) 7.1.0 - Query tuples straight into `std::tuple` using `transaction::stream()`! - And, `stream_from` now supports more or less arbitrary queries. - Instead of a tuple of fields, you can pass `stream_to` a container as well. - `string_traits::size_buffer()` must now be `noexcept`. - New `nullness` member: `always_null`. - There is now `to_buf` support for string literals. - Streaming data is now more efficient. - The table name in `stream_from` is now escaped. - You can now "convert" strings to `std::string_view`. Mind your lifetimes! - A `std::variant` will now convert to string, if its member types do. - If a `stream_from` row fails to convert, you can no longer retry it. - `from_string(field const &)` now handles null values properly. - Obsolete Windows build docs are gone. - Added `row::to(std::tuple<...>)`. - Unified the test suites. We no longer need `test/unit/unit_runner`. - New helper: `strip_t<...>` to remove a type's constness and reference. - Replace custom templating with CMake glob in `src/CMakeLists.txt`. - Replace custom templating with CMake glob in `doc/CMakeLists.txt`. - Replace custom templating with CMake glob in `test/unit/CMakeLists.txt`. 7.0.8 - Inline `type_name` in `PQXX_DECLARE_ENUM_CONVERSION`. 7.0.7 - Fix broken `--with-postgres-lib` option in `configure` script (#311) - Should now build even if neither `pkg-config` nor `pg_config` is available. - CMake accepts `PostgreSQL_ROOT`, if it's a sufficiently recent version. 7.0.6 - Prefer `pg_config` over `pkg-config` for include path (#291). - Try to plod on if we don't know the PostgreSQL include path. - Fix error message when starting overlapping transactions and such (#303). - Fix potential crashes when converting invalid strings to floats (#307, #308). 7.0.5 - Compile fix for g++ 10: include `` (#292). - Cleaned up error-checking of PG results. (#280). - The `esc()` methods now also take `std::string_view` (#295). 7.0.4 - Fix possible crash in `connection::connection_string` (#290). - Fix filtering of default values in `connection::connection_string` (#288). - Deprecate `row::swap` and public inheritance of iterators from `row`. - More copy/move/default constructors/assignments on result iterators. - More copy/move/default constructors/assignments on row iterators. 7.0.3 - Fixed misreporting of broken connection as `sql_error` (#280). - Replaced non-ASCII test texts with escape codes (#282, #283). - `ilostream` could truncate at `0xff` byte at buffer boundary (#284, #286). 7.0.2 - New query function: `query_value`, queries and converts a single value. - A `stream_from` stream can now be iterated. - More callable types qualify as transactors, thanks to `std::invoke`. 7.0.1 - Windows build fixes. - Documentation for writing your own string conversions. - `transaction_rollback` and children are now `sql_error`, not just `failure`. 7.0.0 - Bumped minimum required C++ version to C++17. - Everything has changed. If you're porting from older versions, be careful! - There is now only one connection class: `connection`. - Removed tablereader/tablewriter, replaced by stream_from/stream_to. - Removed obsolete transactor framework, replaced by post-C++11 one. - Removed old ways of invoking parameterised and prepared statements. - Session variables are no longer cached. - If you do weird stuff with setting/getting variables, it may break. - Reading a variable written from raw SQL, procedures, etc, will now work. - Prepared statements are now registered immediately. - If you do weird stuff with preparing/unpreparing statements, it may break. - Changed exceptions and errors for many error situations. - Mishandling prepared statements will now break the connection. - Many string references and const char pointers are now `std::string_view`. - New `zview` class wraps `string_view` for string with terminating zero. - The `stream_base` abstract base class is gone. - Transactions no longer have an `isolation_tag` nested type. - The `isolation_traits` type is gone. - There's no more `pqxx_exception`. Complicated things too much. - `pqxx::string_traits<>::name()` has been replaced with `pqxx::type_name`. - `to_string()` can now handle `std::vector` (to produce an SQL array). - All `from_string()` that took a C string now take a `std::string_view`. - There are now separate `string_traits` and `null_traits` templates. - Enums outside classes are now scoped enums. - `error_verbosity` is no longer nested in connection. - `connection::get_verbosity` is gone. - Some enums have changed names: `accesspolicy` to `access_policy`, and so on. - `dynamic_params` now accepts an accessor. - Fixed "const" support in arguments to parameterised/prepared statements. - Connection objects can now be moved. - `connections::options()` has been replaced by `connection_string()`. - Replaced pqxx-fulltest with `test_all.py`. - Some `size_type` have changed to different types, to match current libpq. - Internal overflows are more consistently caught and reported. - Deprecated items have been removed. - Large objects now require backend version 9.3 or better. - Seeking inside large objects now supports 64-bit sizes. - Visual Studio project files and sample headers are gone. Use CMake. - MinGW Makefiles are gone. Use `configure` or CMake. - Need PostgreSQL 10 to use robusttransaction. - `robusttransaction` no longer uses a log table. Feel free to drop it. 6.4.4 - Use pkg-config if pg-config is not available. - In CMake build, prefer CMake's config headers over any found in source tree. 6.4.3 - Updated copyright strings. - Added missing "stream" headers to autotools-based install. - Added stream headers to pqxx/pqxx header. 6.4.2 - Fix mistake for Windows in 6.4.1: use PQfreemem, not std::free. - Easily enable runtime checks in configure: "--enable-audit". - Enable optimisation in CircleCI build. 6.4.1 - Fixed more memory leaks. 6.4.0 - Half fix, half work around nasty notice processor life time bug. - Fix selective running of tests: "test/unit/runner test_infinities". - Added some missing `std::` qualifications. 6.3.3 - Throw more appropriate error when unable to read client encoding. - CMake build fixes. 6.3.2 - Conversion errors no longer throw pqxx::failure; always conversion_error! - Use C++17's built-in numeric string conversions, if available. - Query numeric precision in a more sensible, standard way. - Avoid "dead code" warning. - Replace obsolete autoconf macros. - Remove all "using namespace std". - CMake build fixes. 6.3.1 - Windows compile fix (CALLBACK is a macro there). - Work around Visual Studio 2017 not supporting ISO 646. 6.3.0 - New "table stream" classes by Joseph Durel: stream_from/stream_to. - Support weird characters in more identifiers: cursors, notifcations, etc. - Connection policies are deprecated. It'll all be one class in 7.0! - Connection deactivation/reactivation is deprecated. - Some items that were documented as deprecated are now also declared as such. - Fix Windows bug where WSAPoll was never used. Thanks dpolunin. - Fix Windows CMake build to link to socket libraries. Thanks dpolunin. - Various other changes to the CMake build. - Fix failure when doing multiple string conversions with Visual C++. - Fix nested project builds in CMake. Thanks Andrew Brownsword. - In Visual Studio, build for host architecture, not "x64". - Fix string conversion link error in Visual Studio. Thanks Ivan Poiakov. - Fix string conversion to bool for "1". Thanks Amaracs. - Fix in escaping of strings in arrays. Thanks smirql. - Faster copying of results of large queries. Thanks Vsevolod Strukchinsky. - Starting to handle encodings properly! Thanks to Joseph Durel. - No longer using std::iterator (deprecated in C++17). 6.2.5 - Removed deprecated pqxx-config. - Build fix on Visual C++ when not defining NOMINMAX. - Reduce setup code for string conversions, hopefully improving speed. - Allow nul bytes in tablereader. - Support defining string conversions for enum types. - Fixed const/pure attributes warning in gcc 8. - Updated build documentation to mention CMake option. - Fixed a floating-point string conversion failure with Visual Studio 2017. 6.2.4 - Fix builds in paths containing non-ASCII characters. - New macro: PQXX_HIDE_EXP_OPTIONAL (to work around a client build error). 6.2.3 - Build fixes. 6.2.2 - Variable number of arguments to prepared or parameterised statement (#75). - Windows build fix (#76). 6.2.1 - Compile fixes. 6.2.0 - At last! A check against version mismatch between library and headers. - Small compile fixes. 6.1.1 - Small compile fixes. - A particular error string would always come out empty. 6.1.0 - Dependencies among headers have changed. You may need extra includes. - Library headers now include "*.hxx" directly, not the user-level headers. - Supports parsing of SQL arrays, when using "ASCII-like" encodings. 6.0.0 - C++11 is now required. Your compiler must have shared_ptr, noexcept, etc. - Removed configure.ac.in; we now use configure.ac directly. - Removed pqxx::items. Use the new C++11 initialiser syntax. - Removed maketemporary. We weren't using it. - Can now be built outside the source tree. - New, simpler, lambda-friendly transactor framework. - New, simpler, prepared statements and parameterised statements. - Result rows can be passed around independently. - New exec0(): perform query, expect zero rows of data. - New exec1(): perform query, expect (and return) a single row of data. - New exec_n(): perform query, expect exactly n rows of data. - No longer defines Visual Studio's NOMINMAX in headers. - Much faster configure script. - Most configuration items are gone. - Retired all existing capability flags. - Uses WSAPoll() on Windows. - Documentation on readthedocs.org, thanks Tim Sheerman-Chase. 5.1.0 - Releases after this will require C++11! - Internal simplification to pqxx::result. - A row object now keeps its result object alive. - New exec() variants: "expect & return 1 row," "expect no rows," "expect n." - ChangeLog is gone. It was a drag on maintenance. 5.0.1 - Exposed sqlstate in sql_error exception class. 5.0 - The PGSTD namespace alias is gone. Use the std namespace directly. - pqxx::tuple is now pqxx::row, to avoid clashes with std::tuple. - Deprecated escape_binary functions dropped. - Deprecated notify_listener class dropped. - Support for many old compilers dropped. - Support for "long long" and "long double" types is always enabled. - No longer uses obsolete std::tr1 namespace; use plain std instead. - Now requires libpq 9.1 or better. - Requires server version 9.1 or better. - Support for REPEATABLE READ isolation level added. - Makefile fixes for Visual Studio 2013. - Supports C++11 and C++14. - No longer has obsolete debian & RPM packaging built in. - Fixed failure to abort uncommitted subtransactions on destruction. - Fixed failure to detect some integer overflows during conversion. - Build tooling uses /usr/bin/env python instead of /usr/bin/python. - New configure options: --with-postgres-include and --with-postgres-lib. - In g++ or compatible compilers, non-exported items are no longer accessible. - Many build fixes for various platforms and compilers. 4.0 - API change: noticers are gone! Use errorhandlers to capture error output. - API change: tablereaders and tablewriters are gone; they weren't safe. - API change: prepared statements are now weakly-typed, and much simpler. - API change: fields and tuples are now stand-alone classes in ::pqxx. - API change: thread-safety field have_strerror_r is now have_safe_strerror. - API change: notify_listener has been replaced with notification_receiver. - notification_receiver takes a payload parameter. - Easier Visual C++ setup. - Absolutely requires a libpq version with PQescapeStringConn. - Absolutely requires libpq 8.0 or better. - Changes for C++0x. - Supports clang++. - Visual C++ makefiles now support new-style unit tests. - Sample headers for more recent Visual Studio versions. - Fixes binary-data escaping problems with postgres 9.0. - Fixes problems with binary-string handling and escaping. - Fixes compatibility problems between 9.x libpq and 7.x backend. - quote_name to escape SQL identifiers for use in queries. - syntax_error reports error's approximate location in the query. - On Windows, now uses ws2_32 instead of wsock32. - Various Windows build fixes. - Updated for gcc 4.6.0. - configure script supports --enable-documentation/--disable-documentation. - Streamlined test/release toolchain. 3.1 - Shared libraries are now versioned by ABI: 3.1 instead of 3.1.0 etc. - Threading behaviour is now documented, and can be queried. - Version information available at compile time. - Supports parameterized statements. - Result tuples now support slicing. - Configure with --with-tr1=boost to use BOOST shared_ptr. - String conversion now has its own header file. - Supports read-only transactions. - Fixed breakage with Solaris "make". - Uses shared_ptr if available. - binarystring::str() is no longer cached; no longer returns reference. - Fixed problems in Visual C++ Makefile for test suite. - Fixed problems with RPM packaging. - Fixed build problem on RedHat/CentOS 5. - Lets you check whether a prepared statement has been defined. - "Varargs" prepared statements. - Unnamed prepared statements now supported. - Results have iterator as well as const_iterator. - Rewrite of robusttransaction logic; may actually do its job now. - Connections support async query cancel from signal handler or thread. - More documentation for performance features. 3.0 - Website is now at http://pqxx.org/ (no redirects) - Completely replaced cursor classes - More helpful error messages on failed connections - More detailed hierarchy of constraint-violation exception classes - trigger is now called notify_listener, trigger header is now notify-listen - New mixin base class pqxx_exception distinguishes libpqxx exception types - Quoting is back! transaction_base::quote() & connection_base::quote() - Several build & documentation problems with Visual C++ fixed - Compile fixes for gcc 4.2, 4.3 - Compile fixes for Sun Studio Express 5.9 - Uses strlcpy() where available, instead of strncpy() - Keeps better track of applicable text encodings - Fixed bug with prepared statement parameters in separate C++ statements - robusttransaction now works for multiple users - Pipeline lets you cancel ongoing queries, e.g. because they run for too long - Fixed broken escaping of binary values in tablewriter - Floating-point types now represented with full precision - Proper unit tests for new functionality - New traits-based system for adding data types - Floating-point infinities now supported - Flushing/completing a pipeline now frees up the transaction for other use - Completely reworked test suite, builds and runs much faster - tablewriter supports writing of raw lines 2.6.9 - Removed old 1.x API (that means all identifiers with capital letters!) - Tested with all current libpq versions and oldest/newest supported backends - No longer have old OnCommit()/OnAbort()/OnDoubt() callbacks in transactor! - Fixes failure when closing cursors with upper-case letters in their names - Fixes bug when adding triggers to connections that aren't open yet - Fixes bug when removing triggers - Fixes small memory leak when preparing statements - Fixes many problems with older backends - Fixes bug in result::swap(): protocol versions were not swapped - Some errors went undetected when using certain libpq versions - Fixes prepared statements on new libpq versions talking to old backends - Can estimate server version if libpq does not know how to obtain it - Greatly reduced memory usage while escaping strings - With Visual C++, creates lib/ directory if not already present - Useful error messages when preparing statements - Allows prepared statements to be registered explicitly - Support for "long long" types; enable with PQXX_ALLOW_LONG_LONG macro - Compilation errors for older libpq versions fixed - Some new small utility classes for disabling notice processing etc. - Result sets remember the queries that yielded them - New test script, pqxx-fulltest, tests against all current postgres versions - Connections can simulate failure - Adds password encryption function 2.6.8 - Fixes bug: binary parameters to prepared statements truncated at nul bytes - New, more specific exception types to distinguish errors from server - Resolved serious problems with generated reference documentation - Automatically detect Windows socket library with MinGW - Windows "make" fixed to run from main directory, not win32 - Fixes "mktemp" problems on some BSD-based platforms - pqxx-config is deprecated; use pkg-config instead - On GNU/Linux, uses poll() instead of select() to avoid file descriptor limit - Will provide server and protocol version information where available - New cursor class, absolute_cursor 2.6.7 - New escape functions for binary data: transaction_base::esc_raw() - Improved detection of socket libraries, especially for MinGW - Works around bug in some versions of GNU grep 2.5.1 - Fixes problem with configuration headers - Fixes PQprepare() detection - Fixes incomplete Visual C++ Makefile - Fixes compile error in workaround for older libpq versions - Removes "rpath" link option 2.6.6 - New, encoding-safe string-escaping functions - Upper-case letters now allowed in prepared-statement names - Fixes crash in test005 - More Visual C++ improvements - Removed collaboration diagrams from reference docs - New templating system for generating Windows Makefiles etc. 2.6.5 - Visual C++ users: copy win32/common-sample to win32/common before editing it - Should fix problems finding socket library on MinGW - Even more work on Visual C++ problems - Updated documentation for Visual C++ users - Fixed bug in prepared statements (mostly visible on Visual C++) - Nested transactions work harder to detect backend support 2.6.4 - Massively improved compatibility with Windows and Visual C++ - Fixed late initialization of "direct" connection state - Fixed problem with initialization of connection capabilities - Fixed configuration bug for libpq in nonstandard locations - Sample configuration header for libpq found in PostgreSQL 8.1 2.6.3 - Radical rework of prepared statements; INCOMPATIBLE INTERFACE CHANGE! - Dropped support for g++ 2.95 - Emulate prepared statements support on old libpq or old backend - Bug fix: missing tutorial (release script now tests for this) - Automatically links in socket library on Windows or Solaris, if needed - Bug fix: check for std namespace didn't work - Fixes for Cygwin/MSYS/MinGW 2.6.2 - Bug fix: connection state was not set up properly in some common cases - Bug fix: headers were installed in "include" instead of "include/pqxx" - Bug fix: sqlesc(string) broke with multibyte or multiple encodings - namedclass is now used as a virtual base; affects all subclass constructors - Initial implementation of subtransactions - Detect more connection capabilities - Standard library namespace can be set from configure script's command line - Completely reworked connection hierarchy, with separate policy objects - Clients can now define their own connection policies - Paved the way for client-defined thread synchronization - Now lives at http://thaiopensource.org/development/libpqxx/ 2.6.1 - Hugely improved recognition of different strerror_r() versions - Resolved link problems with gcc 4.0 and shared library 2.6.0 - New macro PQXX_SHARED defines whether to use/build libpqxx as shared library - Robusttransaction compatible with PostgreSQL 8.1 - Infrastructure for querying connection/backend capabilities at runtime - Greatly improved cursor support - Connection reactivation can be inhibited explicitly - Tries even harder to make sense of conflicting strerror_r() definitions - Detects connection failures that libpq glosses over - Reference documentation grouped into more coherent sections - Assumes strerror() is threadsafe on systems that have no strerror_r() - Now allows connection's socket number to be queried - New internal_error class for libpqxx-internal errors - With Visual C++, doesn't redefine NOMINMAX if it is defined already - Several compatibility improvements for Visual C++ - Fixes and workarounds for HP-UX and HP aCC compiler - Phased old cursor interface out of test suite; tests ported to new interface - Added documentation on thread safety - New thread safety model - Large objects have functions to tell current position - Minor updates to tutorial (somebody pay me and I'll do more :) - No longer needs libpq-fs.h header - Meaningful error messages for ambiguous string conversions fixed 2.5.6 - Support null parameters to prepared statements (use C-style char pointers) 2.5.5 - Diagnoses connection failure during result transfer - Fixes invalid -R link option in pqxx-config 2.5.4 - Fix workaround code for older libpq versions without PQunescapeBytea() - Work around grep bug in Fedora Core 4 that broke configure in UTF-8 locales - In Visual C++, assume libpqxx is a DLL when linking to std library as DLL - Missing documentation in distribution archive is back again - Export fewer symbols from library binary with gcc 4.0 - Releases now automatically tested against gcc 4.0 - Meaningful link errors for additional ambiguous string conversions - DLL symbol exports now automatically tested before each release 2.5.3 - Greatly improved builds on MinGW with MSYS - All known problems with MinGW fixed - Fix bugs in stream classes that caused failures and crashes with STLport - Detects and uses STLport automatically 2.5.2 - Fix memory leaks - Fix problems with NaN (not-a-number values) on some compilers 2.5.1 - Fix configure script; broke when very recent libpqxx was already installed - Fix cursor breakage when "long" is more than 32 bits - Fix cases where new-style abort/doubt handlers are used - Fix for division-by-zero error in Visual C++ (changed sample headers) - Improved checking for strerror_r in configure script - Fix for problem MinGW has with configure script - Fix spurious failure of Oid check in configure script 2.5.0 - Fix race condition in removing triggers - Fix binary string conversion with older libpq - Fix some error strings that may previously have come out wrong - No longer includes any libpq headers while compiling client code - Improved thread safety: avoid strerror() where possible - Prepared statements - Translate more error conditions to std::bad_alloc exception - Clearer and more specific explanations for configuration failures - Improved documentation - Looks for standard library in global namespace as well as std - Accepts standard C library in std namespace - Release script automatically tests with a range of compilers, not just one - Compatible with g++ 2.95 again; this time it's tested automatically 2.4.4 - Fix problems building shared library in Visual C++ - Fix autobuild in Debian, which was broken by mistake in BSD grep workaround - Fix conversion of string to floating-point type NaN - Remove stray CVS directories from distribution archive - Workaround for Visual C++ problem when issuing messages from destructors - Yet more workarounds for Visual C++ bugs - Fix situation where connection state might not be restored after failure - Fix configuration problem on SunOS - Network speedup in connection setup with pending variables and/or triggers 2.4.3 - Yet more workarounds for bugs in Visual C++ .NET 2003 - Fixes for SunC++ 5.5 - On Visual C++, now defines NOMINMAX, fixing large object support - Workaround for BSD grep - Improvements for builds from CVS - Sample config headers for Sun ONE Studio 8 2.4.2 - Fix minor problems with Apple's version of g++ 3.3 - Fix problem with MingW on Windows - Workarounds and fixes for Visual C++.NET 2003 - Renewed compatibility with g++ 2.95 - More sample configuration headers - Updated reference documentation - Removed assert code 2.4.1 - Several bugs in icursor_iterator fixed; incompatible interface changes - Tightens throw specifications on begin(), end(), size(), capacity() - Containers define reference and pointer types - Implements swap() in all container types - Implements == and != in all container types - Stabilizes new (but still limited) cursor interface - icursor_iterator thinks purely in stride granularity - Introduces />= comparisons for icursor_iterators - Allows "adopted SQL cursors" in new cursor interface - Reference-counting in binarystrings, so they can be copied (and efficiently) - Fixes reference-to-temporary problem with std::reverse_iterator in results - Result/tuple reverse_iterators no longer require std::reverse_iterator - Includes some sample config headers (in config/sample-headers) - Replaces iffy autoconf checks (avoid failures with maintainer mode's -Werror) - Fixes incompatibility with some implementations of Unix "cut" program (again) 2.4.0 - Fixes incompatibility with some implementations of Unix "cut" program - Fixes "ptrdiff_t redefinition" problem in some environments - More container-like tuples, so fields can be iterated - All size_type types are now unsigned - More conservative robusttransaction--thanks Tom Lane - Stream-like extraction operator for result field conversion - Warnings about deprecated headers now suppressed while compiling library - Iterator constructors and copy assignments now have empty throw specs 2.3.0 - Generates MinGW Makefile automatically - Documents MinGW build - Workaround for missing prepared-statement support - Potential bug fixed in closing of connections - Fixed incompatibility between new cursor streams and older backends - Removed pqxxbench 2.2.9 - Bugfix in removing trigger - Added "failed connection" to regression test - Some changes to throw specifications - Putting libpq in its own namespace is optional 2.2.8 - Moved libpq into pqxx::internal::pq namespace - New config system separates compiler-related items from libpq-related ones - Auto-generates Visual C++ Makefile, should always remain up-to-date now 2.2.7 - Bugfix: from_string() didn't handle LONG_MIN--thanks Yannick Boivin 2.2.6 - Complete "pipeline" rewrite, for better exception safety - New garbage collection scheme for "result;" constructors now exception-free 2.2.5 - First new cursor classes! - Fixed strange failure in tablewriter during large insertions - Updated tutorial 2.2.4 - New utility class template, items<> for easy container initialization - New utility function template, separated_list() - Error handling bugfix in tablewriter - Fixed tablereader handling of lines ending in empty fields - tablereader lines no longer end in newline with old libpq versions 2.2.3 - Trigger names no longer need to be proper identifiers - Compile fixes for g++ 3.4.0 and other modern compilers - Tablestreams may specify column lists - Deprecated Quote() in favour of sqlesc(); improved quoting - Fixed generation of libpqxx.spec 2.2.2 - Bugfix in fieldstream w.r.t. reading strings on some systems - Renamed config.h to internalconfig.h to avoid confusion - New connection functions allow client to sleep until notification arrives - Notification functions return number of notifications received - Even fewer client-visible macros exported by libconfig.h 2.2.1 - New, 2.x-style string conversions without locale problem - Documentation improvements - Implemented result::swap() 2.2.0 - Installs to /usr/local by default, NOT to /usr/local/pqxx like before! - Uses Postgres-provided script to find Postgres (thanks Peter Eisentraut) - Which means no more configure arguments required on Irix (thanks Arjen Baart) - Fixes long-standing bug in result class! - New pipeline class for throughput optimization - New field stream class: read result field as C++ stream - Separate namespace pqxx::internal for definitions not relevant to the user - More Windows compilation fixes - SUN Workshop 6 compile fixes and workarounds (thanks Jon Meinecke) - Implemented reverse_iterator for result class - Checks for functional std::reverse_iterator template - Preliminary Makefile for MinGW compiler (thanks Pasquale Fersini) - Changed the way unique<> works - Checks for functional std::count_if() - Bugs fixed & test programs added 2.1.3 - Makefile fixes for Visual C++, thanks Paresh Patel - Library ABI versioning implemented, thanks Roger Leigh - Uses old SQL isolation level syntax for compatibility, thanks koun@sina.com - tablestreams can explicitly complete() before destructor - Bugfix in robusttransaction: forgot to set isolation level - Fixed off-by-ones in tablewriter escape code - tablestreams now use \n-style escape sequences - tablestreams support octal numbers - Freely definable "null" strings in tablestreams, as originally intended - Improved Debian packaging, thanks Roger Leigh - tablestreams use libpq's new-style COPY functions, if available - Extended automation of build/release procedure - tablewriter writes in nonblocking mode to help hide communication latency - Can get backend variables as well as set them - More configuration macro cleanups - Workaround for missing clear() in standard string - Merry Christmas! 2.1.2 - Compile fix for gcc libstdc++ 2.9, thanks Jaroslaw Staniek - Moved deprecated functions below current ones - Cleanups for Debian packaging (thanks Roger Leigh, new Debian maintainer!) - Updated authors listings - Bumped ABI version number for the first time (now 2:0:1) 2.1.1 - More workarounds for gcc 2.95 - Automated tools keep test makefiles up to date 2.1.0 - Asynchronous connections - Fixed configure --includedir option (thanks Ray Dassen!) - Compile fixes for SUN Workshop 6, and one for gcc on FreeBSD 4.8 2.0.0 - New stable release! - Includes all changes since 1.5 release. - Workarounds for Microsoft Visual C++ 7 problems. Thanks Costin Musteata! - No longer need to define PQXX_NO_PARTIAL_CLASS_TEMPLATE_SPECIALISATION - Integrated Windows configuration into regular configuration - Only uses #warning if preprocessor supports it - Works on libpq versions without PQ[un]escapeBytea() 1.9.9 - Minor documentation changes 1.9.8 - Workaround for compile problem with postgres 7.3 - Convenience typedef for transaction<>: "work" 1.9.7 - binarystring rewritten and moved to its own file - binarystring::size() does not include terminating null byte! - Implemented escaping of binary strings - Fix in workaround for missing numeric_limits on some compilers - String conversion supported for unsigned char * - More helpful link errors for unsupported string conversions - Complete test coverage 1.9.6 - Fixes in "field table" support - Improved coexistence with client program's config.h, if any - Prefixed autoconf macros used in headers with "PQXX_" 1.9.5 - Header file contents moved to .hxx files for editor filetype recognition - Fixes wrong timestamp for include/pqxx/result in 1.9.4 distribution 1.9.4 - Fixes Visual C++ build problem when compiling as library 1.9.3 - Quick release for various minor changes 1.9.2 - Renamed most public member functions to all-lower-case names - (previously is now called 1.9.1 - tablestream destructor crashed if table didn't exist (thanks Sean [Rogers?]) - Renamed all header files to remove ".h" suffix - Tables created by regression test now prefixed with "pqxx" for safety - Large objects now considered stable - Migrated tutorial from SGML to DocBook XML (thanks Wichert Akkerman) - Added tests 57-59 - Fixed compile error in largeobject - Updated Windows makefiles 1.9.0 - EVERYTHING HAS CHANGED. Read the list or run into trouble! - CURSOR HAS INCOMPATIBLE CHANGES AND MAY BE REPLACED COMPLETELY - CACHEDRESULT HAS INCOMPATIBLE CHANGES (won't compile without changes) - REVISE YOUR TRANSACTORS; now templatized on transaction type - Finally got license file in order - Incompatible change in setting transactor quality of service - Cursors require serializable isolation level (checked at link time) - Renamed Connection_base to connection_base, Connection to connection, LazyConnection to lazyconnection - Renamed LargeObject to largeobject, LargeObjectAccess to largeobjectaccess - Renamed Noticer to noticer - Renamed Trigger to trigger - Renamed Result to result, Tuple to tuple, Field to field - Renamed Unique<> to unique<> - Renamed CachedResult to cachedresult - Transformed Transaction Taxonomy (TTT): - Renamed Transaction_base to transaction_base - Renamed Transaction to transaction - Renamed Transactor to transactor<> (now a template) - Implemented transaction isolation levels as compile-time static properties - transaction and robusttransaction now templatized on their isolation levels - cachedresult requires serializable isolation level (checked at link time) - Now need to include pqxx/transactor.h yourself if you need transactors - Large objects require real backend transaction at compile time - New type oid and constant oid_none for row identifiers resp. null oid - Added some forgotten PQXX_LIBEXPORTs - Tweaked documentation in many places 1.8.1 - By popular request: more convenient way to read field values - Documented locale sensitivity of ToString(), FromString(), Field::to() 1.8.0 - Compiles on gcc 2.95 again (heavy streambuf workarounds in largeobject.h) - ConnectionItf renamed to Connection_base, TransactionItf to Transaction_base - connectionitf.h is now connection_base.h, transactionitf.h connection_base.h 1.7.8 - BinaryString class for unescaping bytea strings - PQAlloc template keeps track of libpq-allocated objects - Removed some consts in Unique<>, ConnectionItf, sorry! - Can now set session variables on connections, transactions 1.7.7 - ./configure also looks for postgres in /usr/local/pgsql - test007 now uses SQL_ASCII as its test encoding - integrated Greg Hookey's Debian packaging 1.7.6 - added postgres library (libpq) to dynamic link path 1.7.5 - added test052 - test055 - added Result::Tuple::ColumnNumber() - also test setting of client encodings - removed superfluous versions of to_file() from large object classes 1.7.4 - new exception class, sql_error, remembers query text - moved exception classes to new file include/pqxx/except.h - test cases report texts of any failed queries - added tools/rmlo.cxx 1.7.3 - default constructors for connection classes - revamped seeking operations on large objects - better error messages in large objects - added test050, test051 1.7.2 - more workarounds for Sun CC 5.1, thanks Jeroen van Erp! - preliminary support for "named" queries - can now Quote() string constants - included Doxyfile in distribution archive - helps avoid Windows memory allocation problem in DLLs - allows setting of client character set encoding 1.7.1 - regenerated documentation 1.7.0 - removed all deprecated features - connection string documentation in README - separate Connection, LazyConnection classes - made test001 more concise - added test049 1.6.4 - configure script now respects different std namespace 1.6.3 - olostream, lostream now flush themselves before closing - fixed compilation problems when using ToString<>() on a plain char * - compilation fixes for Sun compiler (thanks Jeroen van Erp!) - added .pc file for pkgconfig (thanks Ray Dassen!) 1.6.2 - Debian packaging added to distribution archive - new ilostream, olostream, lostream classes 1.6.1 - large object's cunlink() replaced by remove() - default constructor for LargeObject 1.6.0 - new large objects interface - added test048 1.5.0 - allow result fields to be written to streams - removed confusing CachedResult::clear() - minor documentation updates - added test046, test047 - added convenience header 1.4.5 - fixed crash CachedResult that was less shallow than I thought - fixed quoting problem with adopted SQL cursors 1.4.4 - (forgot to save cursor.cxx with new constructor in 1.4.4, sorry) 1.4.3 - all tests now have three-digit numbers - Cursor can adopt SQL cursor returned by a function 1.4.2 - bugfix in CachedResult when accessing empty Results - minor documentation improvements 1.4.1 - documents new homepage: http://pqxx.tk/ - Connection constructor accepts null connect string - Exec() now also takes queries as C++ strings 1.4.0 - Connection::IsOpen() renamed to is_open() - NoticeProcessor replaced by Noticer (with C++ linkage) 1.3.7: - detects nasty rare problem case with Cursors in unknown positions 1.3.6: - fixed detection of missing PQescapeString(). Thanks David Wright! v1.3.5: - documented Windows build procedure - fixed problem with upper-case letters in cursor names. Thanks key88! 2003-01-19 16:00, v1.3.4: - support long double type - clarified some error messages 2003-01-08 18:45, v1.3.3: - fix missing include in test13 2003-01-07 02:30, v1.3.2: - configure looks for postgres includes/library in more places, thanks Ray! 2003-01-02 23:00, v1.3.1: - bugfix in Cursor positioning 2003-01-02 20:30, v1.3.0: - absolute positioning for Cursor - better documentation on cursors - reduced, but improved test suite output 2002-12-23 17:30, v1.2.8: - Cursor::Move() returns number of rows skipped - new typedef Cursor::size_type 2002-12-14 23:30, v1.2.7: - test suite now distinguishes expected errors from unexpected ones 2002-12-09 20:00, v1.2.6: - fixed some Cursor test cases for change in postgres 7.3 - added important warning to Cursor 2002-12-09 02:00, v1.2.5: - added important warning to CachedResult 2002-12-08 14:14, v1.2.4: - fixed compile error on some systems in include/pqxx/util.h 2002-12-04 12:00, v1.2.3: - workaround for broken on some systems - fixed Quote() bug 2002-12-03 01:30, v1.2.2: - fixed serious CachedResult bug - added test41 2002-12-02 17:00, v1.2.1: - hopefully fixed cursor bug with PostgreSQL 7.3 2002-12-01 22:00, v1.2.0: - new CachedResult class 2002-11-07 13:15, v1.1.4: - workaround for missing InvalidOid definition 2002-10-23 16:00, v1.1.3: - Cursor & TableStream hierarchy now work on any transaction type - get no. of affected rows & oid of inserted row from Result - increased test coverage 2002-10-21 01:30, v1.1.2: - updated build procedure - Debian packaging improvements 2002-09-25 03:00, v1.1.1: - supports activating/deactivating of connections - various Connection getters now activate deferred connection first 2002-09-23 01:00, v1.1.0: - supports lazy connections (added 19 test cases just for these) - greatly reduced performance overhead for RobustTransaction - removed id field from RobustTransaction's transaction log tables 2002-09-14 20:00, v1.0.1: - now lives on GBorg - various packaging updates 2002-06-12 17:30, v0.5.1: - no longer have to destroy one transaction before creating the next 2002-06-07 17:15, v0.5.0: - "make install" now finally installs headers! - distribution now includes SGML (DocBook) version of tutorial 2002-06-04 15:00, v0.4.4: - may now have multiple triggers with same name on single connection 2002-06-02 23:00, v0.4.3: - fixed TableReader problem with \t and \n 2002-06-01 21:00, v0.4.2: - hopefully fixes compile problem with broken std::iterator - configure no longer requires --with-postgres-include=/usr/include/postgresql 2002-05-29 22:00, v0.4.1: - can now also handle bool, unsigned char, short field types 2002-05-27 22:30, v0.4.0: - RENAMED Transactor::TRANSACTIONTYPE to argument_type for STL conformance - RENAMED Result::Field::name() to Name() - documentation improvements - minor optimizations 2002-05-18 00:00, v0.3.1: - removed broken postgres_fe.h dependency (hopefully permanent fix) 2002-05-12 22:45, v0.3.0: - also looks for postgres_fe.h in postgres' internal/ directory (tmp fix) 2002-05-05 01:30, v0.2.3: - extensive build instructions in README - make check now controlled through PG environment variables 2002-05-04 19:30, v0.2.2: - more STL conformance - fixed regression test - test6 now copies "orgevents" to "events" by default 2002-04-28 23:45 Version bumped to 0.2 2002-04-28 23:45 Self-generated distribution archive 2002-04-27 14:20 Replaced automake symlinks with actual files 2002-04-07 02:30 Released with configure script 2002-03-29 01:15 Not yet released. Still integrating autogen stuff...