Add SCRAM-SHA-256 authentication method (sponsored by Schmidt GmbH)
Improve parsing speed for DateAndTime and Date based on the ISO PSQL 8601 format (as suggested by Esteban Maringolo)
Extend P3ConnectionEstablishedEvent to report authentication type
Extend the P3 connection URL with TLS/SSL to psql://username:password@localhost:5432/databasename?sslmode=require (selectively based on PostgreSQL's own format)
Make P3Client>>#url: more forgiving regarding the scheme, psql:// postgres:// as well as postgresql:// are now accepted (but psql:// remains our preferred shorthand)
Use GitHub Actions CI with tests on Pharo 7 to 10 against latest PostgreSQL database version
Move #isServerVersionAtLeastMajor:minor: to P3Client and make it more robust
Add a mechanism to retry faulty connections (see #retryCount and #retryDelay)
Fix P3Client>>#runQueryResult to better handle multiple commands in one query (as suggested by Yann Lesage)
Make it possible to use ZTimestamp with nanasecond precision as alternative to DateAndTime
Improve and extend unit tests related to and impacted by timezones, they now pass on a local Postgres server in the same timezone as against one in UTC
Add support for _oid oid[] type 1028 (as contributed by Dmitriy Dorofeev)
Improve documentation (Authentication, Logging)
Various bug fixes
v1.3
3 years ago
Add object logging, see the P3LogEvent hierarchy
Added P3ConnectionPool with tests
Better management of prepared statements
Add support for Chronology objects Time, Date and DateAndTime to be used directly as binding arguments for formatted/prepared statements, with tests
Added basic support for array based parameter binding, see P3ValuesArray and #printValuesArrayOn:
Better documentation and fallback for session/connection timezone and character encoder/decoder
Reimplementation of P3Error adding unique codes and #isLocal as opposed to PostreSQL server generated messages; signalling now happens with instances created by class side accessors
Bring back P3Client>>#queryEncoding as an alias for P3Client>>#serverEncoding as compatibility support for PharoDatabaseAccessor
Add P3DatabaseDriver>>#connectSSL: for GLORP
Various cleanups and internal improvements
v1.2
5 years ago
P3PreparedStatement is now joined by a polymorphic P3FormattedStatement working client side on text strings
P3PreparedStatement & P3FormattedStatement now share the same double dispatch mechanism to process argument binding
Added convenience methods #listDatabases #listSchemas & #listTablesInSchema: to P3Client
Added convenience methods #firstColumnData & #firstFieldOfFirstRecord to P3Result
Added dynamic ENUM support via #loadEnums in P3Client
Add support for the 7 geometric types POINT, CIRCLE, LINE, LSEG, POLYGON & PATH with corresponding objects P3Point, P3Circle, P3Line, P3LineSegment, P3Polygon & P3Path
Add support for the INTERVAL type with P3Interval object
Added P3Client>>#serverVersion accessor
Add support for BIT & VARBIT types with P3FixedBitString & P3BitString objects
Add TIMETZ support
Organised P3 package with tags
More & better documentation & unit tests
v1.1
5 years ago
added support for Postgres Extended Query protocol (P3PreparedStatement) (thx Jan @jvdsandt)
added support for reading array type values (currently INTEGER[] FLOAT[] BOOLEAN[] TEXT[] VARCHAR[])