]> git.ipfire.org Git - thirdparty/psycopg.git/log
thirdparty/psycopg.git
3 weeks agofix: consider a connection closed in poll() only if it's not ready too
Daniele Varrazzo [Sat, 11 Oct 2025 01:26:40 +0000 (03:26 +0200)] 
fix: consider a connection closed in poll() only if it's not ready too

When closing the proxy and trying to communicate, poll returns state 25
on the connection, i.e. POLLIN | POLLERR | POLLHUP. The connection is
not closed though, so we might end up in weird state ahead (e.g. connection
stuck in ACTIVE).

Because it's suggested that the connection is readable, do read from it.
Likely a proper error will be raised downstream, but we will remain in
consistent state.

3 weeks agofix(c): fix timeout calculation in select-based wait function
Daniele Varrazzo [Fri, 10 Oct 2025 13:17:54 +0000 (15:17 +0200)] 
fix(c): fix timeout calculation in select-based wait function

Because of the error, the timeout set to 0, resulting in a busy loop
instead of waiting.

Might fix #645.

3 weeks agorefactor: check for closed connection in wait functions
Daniele Varrazzo [Tue, 7 Oct 2025 23:49:52 +0000 (01:49 +0200)] 
refactor: check for closed connection in wait functions

Catch and display errors in a more homogeneous way: if a wait function
finds a connection closed it will raise an OperationalError chained to
the OSError obtained from stat'ing the socket. Previously control would
have gone back to the generator with a read-ready state and it would
have failed on whatever libpq function would have touched the socket.

Fix the problem reported in #608 affecting the epoll wait function, for
which we opted to use the poll function instead (which, more simply,
made the closed fd easier to spot).

note that on Windows it's not possible to use os.fstat() to ckeck a
socket state, therefore make it no-op.

3 weeks agotest: improve wait functions tests
Daniele Varrazzo [Sun, 14 Sep 2025 15:46:34 +0000 (17:46 +0200)] 
test: improve wait functions tests

Check for consistent behaviour and expected result. The test currently
pass on the Python module and highlight shortcoming in the C function.

Complete wait async test, generate sync version automatically.

See #1141

3 weeks agorefactor(wait): disallow interval=None in wait functions
Daniele Varrazzo [Sun, 14 Sep 2025 15:10:33 +0000 (17:10 +0200)] 
refactor(wait): disallow interval=None in wait functions

It is not used internally: we always use an interval to allow for
Ctrl-C. It causes ambiguity with 0, which might be a value useful for
polling.

3 weeks agofix: fix return values of wait_poll(), wait_epoll()
Daniele Varrazzo [Sun, 14 Sep 2025 03:40:11 +0000 (05:40 +0200)] 
fix: fix return values of wait_poll(), wait_epoll()

3 weeks agofix(c): fix polling for read+write
Arshia Ghafoori [Wed, 27 Aug 2025 10:26:01 +0000 (14:26 +0400)] 
fix(c): fix polling for read+write

3 weeks agotest: make AEvent.wait_timeout() return False on timeout
Daniele Varrazzo [Mon, 15 Sep 2025 23:41:35 +0000 (01:41 +0200)] 
test: make AEvent.wait_timeout() return False on timeout

For better similarity to Event.wait().

3 weeks agotest: fix decorator to skip tests on crdb because of any db name accepted
Daniele Varrazzo [Mon, 15 Sep 2025 22:34:24 +0000 (00:34 +0200)] 
test: fix decorator to skip tests on crdb because of any db name accepted

3 weeks agoci: use working test server on macOS
Daniele Varrazzo [Sun, 12 Oct 2025 02:38:24 +0000 (04:38 +0200)] 
ci: use working test server on macOS

macos-14 can use PostgreSQL 18. I saw a failure trying to use 17; not
sure if it's still there but 18 works fine, so bump.

macos-13 better says on 17. Trying to "brew update" it will pull a
version that will try to compile docbook and takes forever to install. I
understand that avoid an upgrade we get a version that has a binary
package ("bottled", in this deranged naming convention).

3 weeks agoci: test with PostgreSQL 18 final image
Daniele Varrazzo [Sun, 12 Oct 2025 08:20:23 +0000 (10:20 +0200)] 
ci: test with PostgreSQL 18 final image

3 weeks agoMerge branch 'bump-libs-3.2' into maint-3.2
Daniele Varrazzo [Mon, 13 Oct 2025 11:25:11 +0000 (13:25 +0200)] 
Merge branch 'bump-libs-3.2' into maint-3.2

3 weeks agoci: add workflow to build and cache the libpq
Daniele Varrazzo [Sun, 12 Oct 2025 00:28:06 +0000 (02:28 +0200)] 
ci: add workflow to build and cache the libpq

This avoid to attempt building the libpq concurrently with every Python
version, which will make caching fail.

3 weeks agochore(binary): bump packaged versions of libpq, OpenSSL
Daniele Varrazzo [Fri, 10 Oct 2025 13:06:06 +0000 (15:06 +0200)] 
chore(binary): bump packaged versions of libpq, OpenSSL

3 weeks agoUpdate DEFAULT_AUTO_FIELD setting in Django CI workflow (#1182)
Jacob Walls [Fri, 10 Oct 2025 16:48:32 +0000 (18:48 +0200)] 
Update DEFAULT_AUTO_FIELD setting in Django CI workflow (#1182)

* test(django): Remove DEFAULT_AUTO_FIELD setting

Refs https://github.com/django/django-docker-box/pull/59

* test(django): use DEFAULT_AUTO_FIELD for LTS4 and LTS5

Not to be used from main on.

---------

Co-authored-by: Daniele Varrazzo <daniele.varrazzo@gmail.com>
3 weeks agochore(deps): bump the actions group across 1 directory with 5 updates (#1181)
dependabot[bot] [Fri, 10 Oct 2025 14:35:53 +0000 (15:35 +0100)] 
chore(deps): bump the actions group across 1 directory with 5 updates (#1181)

Bumps the actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4` | `5` |
| [actions/setup-python](https://github.com/actions/setup-python) | `5` | `6` |
| [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) | `3` | `4` |
| [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) | `3.1.4` | `3.2.0` |
| [actions/github-script](https://github.com/actions/github-script) | `7` | `8` |

Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

Updates `actions/setup-python` from 5 to 6
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

Updates `peter-evans/repository-dispatch` from 3 to 4
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](https://github.com/peter-evans/repository-dispatch/compare/v3...v4)

Updates `pypa/cibuildwheel` from 3.1.4 to 3.2.0
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0)

Updates `actions/github-script` from 7 to 8
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: peter-evans/repository-dispatch
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: pypa/cibuildwheel
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3 weeks agoci: fix bad expansion of an array variable in build_libpq.sh
ubifred [Fri, 10 Oct 2025 11:35:35 +0000 (13:35 +0200)] 
ci: fix bad expansion of an array variable in build_libpq.sh

* ci: fix bad expansion of an array variable in build_libpq.sh

The `options` array variable have been introduced in
`adb8336a392a71a3cb2ddf18bd9b17238a01a06e` but is used with `$options`
which only expand the 1st value (for bash).

The full expansion have to be done with `${options[*]}`

Note that `-shared` and `-fPIC` options are still used as they are
enabled by default by `./Configure`, but the `zlib` option is not taken
into account (disabled by default)

* ci: fix wrong command

`./configure` does not exists

Fix #1178

7 weeks agoMerge branch 'fix/binary-copy' into maint-3.2
Daniele Varrazzo [Tue, 16 Sep 2025 00:18:14 +0000 (02:18 +0200)] 
Merge branch 'fix/binary-copy' into maint-3.2

7 weeks agofix(copy): avoid sending copy data if an error is set
Daniele Varrazzo [Mon, 1 Sep 2025 16:06:43 +0000 (18:06 +0200)] 
fix(copy): avoid sending copy data if an error is set

It would result in a partial message. The server seems to do the right
thing anyway, but let's not waste its precious time.

7 weeks agofix(c): fix excessive buffer allocation in binary copy
Daniele Varrazzo [Mon, 1 Sep 2025 15:22:34 +0000 (17:22 +0200)] 
fix(c): fix excessive buffer allocation in binary copy

Fix #1147

7 weeks agoMerge branch 'fix-builtin-dumper-loader' into maint-3.2
Daniele Varrazzo [Tue, 16 Sep 2025 00:12:13 +0000 (02:12 +0200)] 
Merge branch 'fix-builtin-dumper-loader' into maint-3.2

7 weeks agofix: drop warning for objects passed as JSON lods/dump function
Daniele Varrazzo [Wed, 10 Sep 2025 19:55:02 +0000 (21:55 +0200)] 
fix: drop warning for objects passed as JSON lods/dump function

Just optimistically assume that they are ok and will not cause leaks.
The possibility of there being something else which might cause a leak
is lower than the possibility that we didn't think about something else
and raise a warning, refusing to cache the loader, and really cause a
leak.

7 weeks agofix: don't raise a warning using a builtin for JSON dumps/loads
Daniele Varrazzo [Wed, 10 Sep 2025 10:07:46 +0000 (12:07 +0200)] 
fix: don't raise a warning using a builtin for JSON dumps/loads

These types are stable so will not leak. However they have no
code/closure dunder attr so they will raise a warning.

Fix #1165.

8 weeks agochore: remove ignore unneeded in mypy >= 1.18.1
Daniele Varrazzo [Fri, 12 Sep 2025 15:18:37 +0000 (17:18 +0200)] 
chore: remove ignore unneeded in mypy >= 1.18.1

We can't bump the min mypy on this maintenance branch because it doesn't
support Python 3.8, therefore ignore warnings in this file to
accommodate the min supported mypy version 1.14.

8 weeks agotest: fix tests with master version of crdb
Daniele Varrazzo [Fri, 12 Sep 2025 15:14:00 +0000 (17:14 +0200)] 
test: fix tests with master version of crdb

The server version reported is 250300. Tests fail with the error:

    psycopg.errors.OperatorIntervention: this schema change is
    disallowed because table "execmany" is locked and this operation cannot
    automatically unlock the table

    DETAIL:  To unlock the table, execute `ALTER TABLE execmany SET (schema_locked = false);`

    After the schema change completes, we recommend setting it back to
    true with `ALTER TABLE execmany SET (schema_locked = true);`.

    HINT:  Locking the table improves changefeed performance; see
    https://www.cockroachlabs.com/docs/dev/changefeed-best-practices.html#lock-the-schema-on-changefeed-watched-tables

8 weeks agochore(ci): bump crdb test versions
Daniele Varrazzo [Fri, 12 Sep 2025 15:13:38 +0000 (17:13 +0200)] 
chore(ci): bump crdb test versions

8 weeks agoci: run lint/tests in any branches
Daniele Varrazzo [Fri, 12 Sep 2025 14:33:23 +0000 (16:33 +0200)] 
ci: run lint/tests in any branches

The `*` results in branches with a `/` excluded.

Also exclude running tests if only docs change.

8 weeks agofix: typo in notifications warning
Daniele Varrazzo [Mon, 8 Sep 2025 11:06:44 +0000 (13:06 +0200)] 
fix: typo in notifications warning

8 weeks agoci: use stable runner windows-2022
Daniele Varrazzo [Sun, 7 Sep 2025 14:12:50 +0000 (16:12 +0200)] 
ci: use stable runner windows-2022

Soon the `-latest` image will become -2025.

8 weeks agochore: bump psycopg package version to 3.2.11.dev1
Daniele Varrazzo [Mon, 8 Sep 2025 09:14:43 +0000 (11:14 +0200)] 
chore: bump psycopg package version to 3.2.11.dev1

2 months agochore: bump psycopg package version to 3.2.10 3.2.10
Daniele Varrazzo [Sun, 7 Sep 2025 15:44:54 +0000 (17:44 +0200)] 
chore: bump psycopg package version to 3.2.10

2 months agoMerge branch 'pg18-3.2' into maint-3.2
Daniele Varrazzo [Sun, 7 Sep 2025 13:54:22 +0000 (15:54 +0200)] 
Merge branch 'pg18-3.2' into maint-3.2

2 months agodocs: mention PostgreSQL v18 support
Daniele Varrazzo [Sun, 11 May 2025 20:50:58 +0000 (22:50 +0200)] 
docs: mention PostgreSQL v18 support

2 months agoci: add PostgreSQL 18 to the test grid
Daniele Varrazzo [Sun, 7 Sep 2025 00:35:30 +0000 (02:35 +0200)] 
ci: add PostgreSQL 18 to the test grid

2 months agochore: add PostgreSQL 18 exceptions
Daniele Varrazzo [Sun, 11 May 2025 20:48:26 +0000 (22:48 +0200)] 
chore: add PostgreSQL 18 exceptions

2 months agofix: add ConnStatus.CONNECTION_AUTHENTICATING value
Daniele Varrazzo [Sun, 11 May 2025 20:43:00 +0000 (22:43 +0200)] 
fix: add ConnStatus.CONNECTION_AUTHENTICATING value

Introduced in PostgreSQL 18

2 months agoMerge branch 'fix-1091' into maint-3.2
Daniele Varrazzo [Sun, 7 Sep 2025 11:42:36 +0000 (13:42 +0200)] 
Merge branch 'fix-1091' into maint-3.2

2 months agodocs: document the changes to notifies generator 1092/head
Daniele Varrazzo [Sat, 6 Sep 2025 21:44:42 +0000 (23:44 +0200)] 
docs: document the changes to notifies generator

2 months agofix: raise a warning when notifies generator and handlers are used together
Daniele Varrazzo [Sat, 6 Sep 2025 22:14:48 +0000 (00:14 +0200)] 
fix: raise a warning when notifies generator and handlers are used together

2 months agofix: collect notifies only if no handler was registered
Daniele Varrazzo [Wed, 14 May 2025 15:16:03 +0000 (17:16 +0200)] 
fix: collect notifies only if no handler was registered

If someone is listening to notifications by using an handler, the
notifies backlog would fill without ever being emptied.

This change has the risk of breaking something if someone is relying on
notifies being received both via callback and via generator, but I don't
know how to satisfy it without creating a leak to users who don't use the
generator. Will ask around...

Fix #1091.

2 months agoci: move minimum SQLAlchemy git main Python version to 3.10
Daniele Varrazzo [Sat, 6 Sep 2025 18:31:35 +0000 (20:31 +0200)] 
ci: move minimum SQLAlchemy git main Python version to 3.10

2 months agoci: run packages build on workflow file change
Daniele Varrazzo [Sat, 6 Sep 2025 18:32:59 +0000 (20:32 +0200)] 
ci: run packages build on workflow file change

2 months agoMerge branch 'fix-executemany-lock-3.2' into maint-3.2
Daniele Varrazzo [Sat, 6 Sep 2025 19:18:51 +0000 (21:18 +0200)] 
Merge branch 'fix-executemany-lock-3.2' into maint-3.2

2 months agofix: keep a lock for the entire duration of executemany 1159/head
Daniele Varrazzo [Sat, 6 Sep 2025 01:00:24 +0000 (03:00 +0200)] 
fix: keep a lock for the entire duration of executemany

Before this change we had the lock context inside the pipeline context,
because conn.pipepline() and Pipeline.__enter/exit__ take a lock. But
this created windows of opportunities for other threads to execute
concurrent operations on the connection, resulting in "another command
is already in progress" errors.

Fix #1130.

2 months agorefactor: auto-generate sync pipeline object from async one
Daniele Varrazzo [Fri, 5 Sep 2025 23:57:52 +0000 (01:57 +0200)] 
refactor: auto-generate sync pipeline object from async one

2 months agorefactor: separate sync/async pipeline in their own modules
Daniele Varrazzo [Fri, 5 Sep 2025 23:48:48 +0000 (01:48 +0200)] 
refactor: separate sync/async pipeline in their own modules

2 months agofix: fix excessive buffer resizing on int16 dump
jerch [Sat, 6 Sep 2025 14:47:31 +0000 (16:47 +0200)] 
fix: fix excessive buffer resizing on int16 dump

Fix #1160

2 months agoMerge pull request #1137 from psycopg/gssapi-warning
Daniele Varrazzo [Fri, 5 Sep 2025 21:59:47 +0000 (23:59 +0200)] 
Merge pull request #1137 from psycopg/gssapi-warning

Warn about implicit use of GSS-API

2 months agofeat: raise a warning if a GSS connection is obtained using the libpq default 1137/head
Daniele Varrazzo [Tue, 26 Aug 2025 01:28:16 +0000 (03:28 +0200)] 
feat: raise a warning if a GSS connection is obtained using the libpq default

Suggest the user to specify a 'gssencmode' setting explicitly so that,
in the future, we will be able to change the setting default to 'disable'.

See #1136

2 months agofeat: add support for libpq PQconnectionUsedGSSAPI()
Daniele Varrazzo [Mon, 25 Aug 2025 16:35:30 +0000 (18:35 +0200)] 
feat: add support for libpq PQconnectionUsedGSSAPI()

We will not advertise its presence as PGconn.used_gssapi until Psycopg
3.3. However we can use it internally to implement a warning to check
the implicit usage of gssencmode=prefer.

See #1136

2 months agoMerge branch 'py314-3.2' into maint-3.2
Daniele Varrazzo [Tue, 2 Sep 2025 22:26:28 +0000 (00:26 +0200)] 
Merge branch 'py314-3.2' into maint-3.2

2 months agodocs: mention Python 3.14 support in news file
Daniele Varrazzo [Tue, 2 Sep 2025 22:23:15 +0000 (00:23 +0200)] 
docs: mention Python 3.14 support in news file

2 months agoci: drop i686 binary packages
Daniele Varrazzo [Mon, 1 Sep 2025 09:31:24 +0000 (11:31 +0200)] 
ci: drop i686 binary packages

Not happy to drop them in a bugfix release, it seems possible to still
produce them with current cibuildwheel, but the documentation doesn't
make obvious how to restore them.

We will try to restore them if someone complains.

2 months agochore(pool): use coro test from inspect instead of asyncio
Daniele Varrazzo [Mon, 1 Sep 2025 09:23:59 +0000 (11:23 +0200)] 
chore(pool): use coro test from inspect instead of asyncio

The latter is deprecated in Python 3.14.

2 months agotest: fix pproxy compatibility with Python 3.14
Daniele Varrazzo [Sun, 31 Aug 2025 19:20:50 +0000 (21:20 +0200)] 
test: fix pproxy compatibility with Python 3.14

Work around the issue reported in https://github.com/qwj/python-proxy/issues/200

2 months agoci: test with Python 3.14 non-dev
Daniele Varrazzo [Fri, 29 Aug 2025 18:11:05 +0000 (20:11 +0200)] 
ci: test with Python 3.14 non-dev

2 months agochore(test): drop use of asyncio event loop policy
Daniele Varrazzo [Fri, 29 Aug 2025 16:52:42 +0000 (18:52 +0200)] 
chore(test): drop use of asyncio event loop policy

Deprecated since Python 3.14

2 months agoci(alpine): install missing libraris required to test and package wheels
Daniele Varrazzo [Fri, 29 Aug 2025 15:11:54 +0000 (17:11 +0200)] 
ci(alpine): install missing libraris required to test and package wheels

Since some recent alpine version the krb5-libs package is not installed by
default anymore. When building the libpq the package got installed as a
side effect of installing krb5-dev, but, in case libpq build was cached,
the libraries would have been missing when packaging the wheel or
importing psycopg for test.

2 months agochore: bump cibuildwheel to 3.1.4
Daniele Varrazzo [Tue, 26 Aug 2025 15:54:24 +0000 (17:54 +0200)] 
chore: bump cibuildwheel to 3.1.4

It should help with Python 3.14 builds.

2 months agochore: add Python 3.14 to supported version metadata and docs
Daniele Varrazzo [Tue, 29 Apr 2025 12:26:39 +0000 (14:26 +0200)] 
chore: add Python 3.14 to supported version metadata and docs

2 months agoci: add Python 3.14 dev to package build
Daniele Varrazzo [Tue, 29 Apr 2025 12:26:15 +0000 (14:26 +0200)] 
ci: add Python 3.14 dev to package build

2 months agoci: add Python 3.14 version to test grid
Daniele Varrazzo [Sun, 27 Apr 2025 21:47:15 +0000 (23:47 +0200)] 
ci: add Python 3.14 version to test grid

2 months agochore: bump Cython version
Daniele Varrazzo [Wed, 21 May 2025 16:54:43 +0000 (18:54 +0200)] 
chore: bump Cython version

Skip version 3.1.0 because of https://github.com/cython/cython/issues/6850
I understand that >= 3.1.0 is required for the free threading support (#1096).

2 months agotest: use current timezone name
Daniele Varrazzo [Tue, 19 Aug 2025 14:51:35 +0000 (16:51 +0200)] 
test: use current timezone name

3 months agoMerge branch 'fix-binary-version' into maint-3.2
Daniele Varrazzo [Wed, 23 Jul 2025 00:32:58 +0000 (02:32 +0200)] 
Merge branch 'fix-binary-version' into maint-3.2

3 months agofix(binary): fix __version__
Daniele Varrazzo [Tue, 22 Jul 2025 01:31:15 +0000 (03:31 +0200)] 
fix(binary): fix __version__

It was taken from the psycopg-c package, so it might have been wrong or,
more likely, reported as 0.0.0.0 because not installed.

3 months agotest: verify the version is sane
Daniele Varrazzo [Tue, 22 Jul 2025 00:33:22 +0000 (02:33 +0200)] 
test: verify the version is sane

3 months agochore: ignore mypy flag for unused ignore
Daniele Varrazzo [Tue, 22 Jul 2025 11:50:27 +0000 (13:50 +0200)] 
chore: ignore mypy flag for unused ignore

Flagged by mypy 1.17 on CI, but we need to stay on mypy 1.14 in the
maint 3.2 branch because of Python 3.8 compatibility.

3 months agoci: avoid running jobs on pull requests
Daniele Varrazzo [Sun, 11 May 2025 12:06:55 +0000 (14:06 +0200)] 
ci: avoid running jobs on pull requests

Jobs run anyway on push. This setting results in duplicate runs.

3 months agoMerge pull request #1119 from psycopg/fix-cancelled-error-shadowing
Daniele Varrazzo [Sat, 12 Jul 2025 04:38:39 +0000 (05:38 +0100)] 
Merge pull request #1119 from psycopg/fix-cancelled-error-shadowing

Avoid a TypeError shadowing CancelledError on task cancellation

3 months agofix(c): avoid a TypeError shadowing CancelledError on task cancellation 1119/head
Daniele Varrazzo [Fri, 11 Jul 2025 23:13:32 +0000 (01:13 +0200)] 
fix(c): avoid a TypeError shadowing CancelledError on task cancellation

Fix #1005.

4 months agotest: fix failure in test_connection_warn_close
Daniele Varrazzo [Sat, 5 Jul 2025 22:47:40 +0000 (00:47 +0200)] 
test: fix failure in test_connection_warn_close

Create all the connections beforehand otherwise some may reuse the same
address, resulting in a duplicated warning message, which would be
omitted and fail the test.

4 months agofix: don't call str(self) or imported objects in __del__
Daniele Varrazzo [Wed, 30 Apr 2025 00:37:23 +0000 (02:37 +0200)] 
fix: don't call str(self) or imported objects in __del__

We easily end up trying to access resources already unavailable in the
objects representation. In Python 3.14 this seems to happen aggressively
(or maybe it's just more visible because testing a dev version).

4 months agofix: change signature of SQL.join() to allow a sequence of Any
Daniele Varrazzo [Tue, 20 May 2025 15:06:06 +0000 (17:06 +0200)] 
fix: change signature of SQL.join() to allow a sequence of Any

We declared accepting a sequence of Composable, but, because we passed
the joined values to `Composite`, actually non-composable were
interpreted as `Literal`.

Make this behaviour explicit by testing it and fixing the signature.

4 months agochore: run isort before other hooks
Daniele Varrazzo [Mon, 12 May 2025 15:13:57 +0000 (17:13 +0200)] 
chore: run isort before other hooks

It's quicker to fail than mypy.

4 months agoMerge pull request #1115 from psycopg/fix-jsonb-function-caching
Daniele Varrazzo [Sat, 5 Jul 2025 17:02:11 +0000 (18:02 +0100)] 
Merge pull request #1115 from psycopg/fix-jsonb-function-caching

4 months agochore(json): adapt caching types definition to Python 3.8 1115/head
Daniele Varrazzo [Fri, 4 Jul 2025 23:24:11 +0000 (01:24 +0200)] 
chore(json): adapt caching types definition to Python 3.8

4 months agofix(json): don't leak when lambdas are used as dumps/loads function
Daniele Varrazzo [Fri, 4 Jul 2025 18:00:43 +0000 (20:00 +0200)] 
fix(json): don't leak when lambdas are used as dumps/loads function

Cache functions on the code, not on the function identity itself:
different lambdas or local functions are different objects but he
underlying code object is the same.

Avoid caching if the function is a closure because it then becomes a can
of worms (if the argument is not hashable etc). Throw a warning in that
case.

Fix #1108

fix(json): don't leak when lambdas are used as loads function

4 months agofix: add missing interface for PGconn.protocol_version
Daniele Varrazzo [Sat, 5 Jul 2025 13:22:12 +0000 (15:22 +0200)] 
fix: add missing interface for PGconn.protocol_version

4 months agofix(test): work around error with issubclass(collections.ablc.Callable)
Daniele Varrazzo [Wed, 7 May 2025 10:43:23 +0000 (12:43 +0200)] 
fix(test): work around error with issubclass(collections.ablc.Callable)

Reproduced only on Python 3.10

5 months agoci: cancel concurrent binary build jobs
Daniele Varrazzo [Wed, 4 Jun 2025 15:40:29 +0000 (16:40 +0100)] 
ci: cancel concurrent binary build jobs

5 months agotest: skip tests connecting to non-existing dbs for CRDB
Daniele Varrazzo [Mon, 2 Jun 2025 12:43:38 +0000 (13:43 +0100)] 
test: skip tests connecting to non-existing dbs for CRDB

For CRDB, every database exists.

5 months agotest: make sure tests don't hang if default connection points to a closed port
Daniele Varrazzo [Mon, 2 Jun 2025 10:37:26 +0000 (11:37 +0100)] 
test: make sure tests don't hang if default connection points to a closed port

They might hang is the server doesn't accept connections on the standard
port.

Tested by forcing the default connection to go to an unresponsive port,
using:

    export PGHOST=192.0.2.1
    export PSYCOPG_TEST_DSN="host=localhost dbname=psycopg_test"

and fixing all the tests hanging because they try to connect to the
unroutable hostname, not taking into account the test dsn.

5 months agochore: make code compatible with Mypy 1.14 and 1.16
Daniele Varrazzo [Mon, 2 Jun 2025 12:29:56 +0000 (13:29 +0100)] 
chore: make code compatible with Mypy 1.14 and 1.16

The master branch moved to a minimum 1.16, but Python 3.8 is only
supported up to Mypy < 1.15.

Therefore introduce an ignore[override] required in Mypy 1.16 but ignore
the complaint of Mypy 1.14.

5 months agochore: bump psycopg package version to 3.2.10.dev1
Daniele Varrazzo [Wed, 14 May 2025 15:20:22 +0000 (17:20 +0200)] 
chore: bump psycopg package version to 3.2.10.dev1

5 months agochore: bump psycopg package version to 3.2.9 3.2.9
Daniele Varrazzo [Tue, 13 May 2025 14:13:03 +0000 (16:13 +0200)] 
chore: bump psycopg package version to 3.2.9

5 months agoMerge branch 'fix-1088' into maint-3.2
Daniele Varrazzo [Tue, 13 May 2025 14:12:54 +0000 (16:12 +0200)] 
Merge branch 'fix-1088' into maint-3.2

5 months agodocs: mention fix in version 3.2.9
Daniele Varrazzo [Tue, 13 May 2025 14:07:47 +0000 (16:07 +0200)] 
docs: mention fix in version 3.2.9

5 months agoRevert "ci: install win32 libpq from conda force"
Daniele Varrazzo [Tue, 13 May 2025 12:55:17 +0000 (14:55 +0200)] 
Revert "ci: install win32 libpq from conda force"

This reverts commit ba4187d830a90f3e8edba10260d213079b7b5912.

Fix #1088

5 months agochore: bump psycopg package version to 3.2.9.dev1
Daniele Varrazzo [Sun, 11 May 2025 17:17:01 +0000 (19:17 +0200)] 
chore: bump psycopg package version to 3.2.9.dev1

5 months agochore: bump psycopg package version to 3.2.8 3.2.8
Daniele Varrazzo [Sun, 11 May 2025 11:35:06 +0000 (13:35 +0200)] 
chore: bump psycopg package version to 3.2.8

5 months agoci: make sure versions are strings, not floats
Daniele Varrazzo [Sun, 11 May 2025 10:45:56 +0000 (12:45 +0200)] 
ci: make sure versions are strings, not floats

5 months agochore: add funding link to project metadata
Daniele Varrazzo [Sat, 10 May 2025 19:58:27 +0000 (21:58 +0200)] 
chore: add funding link to project metadata

5 months agofix(c): fix building on 32 bit with libpq 18
Daniele Varrazzo [Sat, 10 May 2025 16:27:50 +0000 (18:27 +0200)] 
fix(c): fix building on 32 bit with libpq 18

The previous code was protected by a HAVE_LONG_INT_64 macro.

5 months agochore(binary): bump OpenSSL to 3.5.0
Daniele Varrazzo [Sat, 10 May 2025 15:55:05 +0000 (17:55 +0200)] 
chore(binary): bump OpenSSL to 3.5.0

On Windows the libpq 17.5 package depends on it.

5 months agochore(binary): bump libpq to 17.5 in binary packages
Daniele Varrazzo [Sat, 10 May 2025 13:30:00 +0000 (15:30 +0200)] 
chore(binary): bump libpq to 17.5 in binary packages

5 months agochore(deps): bump the actions group with 2 updates
dependabot[bot] [Thu, 1 May 2025 07:13:04 +0000 (07:13 +0000)] 
chore(deps): bump the actions group with 2 updates

Bumps the actions group with 2 updates: [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) and [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi).

Updates `pypa/cibuildwheel` from 2.23.2 to 2.23.3
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v2.23.2...v2.23.3)

Updates `prefix-dev/setup-pixi` from 0.8.4 to 0.8.8
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/v0.8.4...v0.8.8)

---
updated-dependencies:
- dependency-name: pypa/cibuildwheel
  dependency-version: 2.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.8.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
5 months agoci: install win32 libpq from conda force
trim21 [Sun, 23 Feb 2025 09:25:45 +0000 (17:25 +0800)] 
ci: install win32 libpq from conda force

5 months agoMerge branch 'better-logging' into maint-3.2
Daniele Varrazzo [Sat, 10 May 2025 13:46:56 +0000 (15:46 +0200)] 
Merge branch 'better-logging' into maint-3.2

5 months agodocs: add section about connection logging
Daniele Varrazzo [Sat, 10 May 2025 02:55:45 +0000 (04:55 +0200)] 
docs: add section about connection logging