-
Notifications
You must be signed in to change notification settings - Fork 241
/
NEWS
1129 lines (1129 loc) · 55.9 KB
/
NEWS
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
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
7.9.3
- Bump minimum CMake version to 3.28. (#874)
- Fixed error message on clashing transaction focuses. (#879)
- Don't call`/bin/true`; macOS doesn't have it. Just call `true`. (#885)
- Deprecate `exec_prepared()`; just use `exec()` with a `pqxx::prepped`.
- Deprecate `exec1()` etc. Use `result::expect_rows()` etc.
- Fix error-reporting crash in non-blocking connection constructor. (#894)
7.9.2
- Fix CMake documentation install. (#848)
- More CMake build fix. (#869)
- Bump gcc/clang/postgres minimum version requirements.
- Another fix to the readthedocs documentation build. (#845)
- Remove obsolete CMake workaround kludges. (#851, #866, #867)
- Remove obscure deprecated `stream_to` constructor that never worked. (#853)
- Support reading a field as an SQL array using `as_sql_array()`. (#841)
- Make row iterator a _proper_ `random_access_iterator`. (#846)
- Downgrade result iterator to "bidirectional"; was never really RA. (#846)
7.9.1
- Fix bad conversion of array of empty strings to string. (#816)
- Move `[[likely]]` feature check back to compile time, to speed up configure.
- Support `[[assume(...)]]`.
- Fix `throw_null_conversion` compile error when converting enums. (#807)
- Fix memory leak when failing to connect.
- Improve introductory docs for connections and transactions.
- Re-do entire documentation build. No more Sphinx in readthedocs. (#802)
- No more autodetection of doxygen etc. Run it, or don't.
- Docs build now disabled by default; use `--enable-documentation` to change.
7.9.0
- Support standard libraries without `std::basic_string<std::byte>` etc.
- `std::basic_string<std::byte` becomes `pqxx::bytes`. (#726)
- `std::basic_string_view<std::byte>` becomes `bytes_view`. (#726)
- Fix assertion failure when streaming row ending in empty string. (#774)
- CMake users can `shared_link_libraries(... libpqxx::pqxx)`. (#784)
- Support parameterised versions of `query()` etc. (#646)
- Put all feature tests back in config header. (#732)
- Automate integration of feature tests into both CMake & autoconf. (#747)
- Streaming query result implements `std::input_iterator`. (#771)
- Fix broken `to_buf()` on `zview`. (#728)
- Support `PQfsize()` and `PQfmod()`. (#727)
- Implement conversion from `string_view` to string. (#728)
- Rename `splitconfig` to `splitconfig.py`. (#763)
- Document need for conversions more clearly, link to docs. (#757)
- Experimental support for converting `std::span` to SQL arrays. (#769)
7.8.1
- Regenerate build files. Should fix ARM Mac build. (#715)
- Reinstate `<ciso646>` that MSVC can't live with or without. (#713)
7.8.0
- Streaming large data sets now benchmarks faster than similar C/libpq code!
- New `array` class for easier parsing of SQL arrays.
- Deprecating `stream_from`. Use `transaction_base::stream()`.
- Use `array_parser` only on comma-separated types, i.e. most of them. (#590)
- Bumping requirements versions: need postgres 10.
- Fix `array_parser` bug when parsing semicolon in an unquoted string.
- Make some `zview` constructors `noexcept` if `string_view` does it.
- Handle result status code for starting streaming replication. (#631)
- Faster text decoding and escaping in data streaming. (#601)
- Deprecate `basic_fieldstream` and `fieldstream`.
- Deprecate `<<` operator inserting a field into an `ostream`.
- New string conversion fields: `converts_to_string` & `converts_from_string`.
- Ran `autoupdate` (because the autotools told me to).
- Documentation tweak. (#584)
- Typo in README.md. (#586)
- Support `std::optional<std::string_view>` etc. in `stream_to`. (#596)
- Remove support for single-quoted array/composite elements. No such thing!
- Optimise out a kink in composite field parser.
- Work around build warning in MinGW: include `winsock2.h` before `windows.h`.
- Drop some redundant encoding groups.
- If CMake can't find libpq, fall back to pkg-config. (#664)
- Work around spurious compile error on g++ pre-gcc-10. (#665)
- Include `<pqxx/range>` and `<pqxx/time>` headers in `<pqxx/pqxx>`. (#667)
- Don't use `std::function` as deleter for smart pointers.
- Work around gcc compile error with regex + address sanitizer + analyzers.
- Fix "double free" on exit when built as shared library on Debian. (#681)
- Stop including `<ciso646>`; should be built into compilers. (#680)
- New `broken_connection` exception subclass: `protocol_violation`. (#686)
- Retired unused `blob_already_exists` exception class. (#686)
- Support for `PQinitOpenSSL()`. (#678)
- Slightly more helpful error for unsupported conversions. (#695)
- Replace some C++ feature tests with C++20 feature macros.
- Support moving of `stream_to`. (#706)
- Incorporate `source_location` in exceptions.
7.7.4
- `transaction_base::for_each()` is now called `for_stream()`. (#580)
- New `transaction_base::for_query()` is similar, but non-streaming. (#580)
- Query data and iterate directly as client-side types: `query()`. (#580)
- New ways to query a single row! `query01()` and `query1()`. (#580)
- We now have 3 kinds of execution: "exec", "query", and "stream" functions.
- Use C++23 `std::unreachable()` where available.
- `result::iter()` return value now keeps its `result` alive.
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 `<pqxx/pqxx>`. (#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 `<winsock2.h>` 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<std::byte>`. (#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<CONTAINER>`.
- 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 `<pqxx/prepared_statement>` to `<pqxx/params>`.
- 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 `<thread>`.
- 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<std::byte>` 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 `<thread>` 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 <array>` 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<type...>()`.
- 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<std::byte>` 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 `<limits>` (#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 [email protected]
- 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
- <pqxx/all> (previously <pqxx/all.h> is now called <pqxx/pqxx>
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!)