]>
git.ipfire.org Git - thirdparty/psycopg.git/log
Daniele Varrazzo [Mon, 12 May 2025 00:44:26 +0000 (02:44 +0200)]
docs(pool): a proto-only SQLAlchemy url suffices as we are passing a creator
Daniele Varrazzo [Thu, 8 May 2025 12:18:25 +0000 (14:18 +0200)]
docs(pool): consistent sync/async examples in SQLAlchemy NullPool example
Daniele Varrazzo [Sun, 4 May 2025 21:26:26 +0000 (23:26 +0200)]
docs(pool): add documentation for close_returns
Daniele Varrazzo [Sun, 4 May 2025 20:23:12 +0000 (22:23 +0200)]
fix: add close_returns to NullConnectionPool
Daniele Varrazzo [Sun, 4 May 2025 19:21:19 +0000 (21:21 +0200)]
feat(pool): add close_returns
Behaviour implemented via subclassing Psycopg 3.2.
Close #1046
Daniele Varrazzo [Sun, 4 May 2025 18:35:25 +0000 (20:35 +0200)]
feat(pool): add connection subclasses to enable putconn-on-close
Daniele Varrazzo [Sun, 4 May 2025 20:57:10 +0000 (22:57 +0200)]
test(pool): make sure that returned connection have the pool set
The flow where we set _pool = None or _pool = self is a bit complex.
Make sure we don't mess it up.
Daniele Varrazzo [Sun, 11 May 2025 19:09:06 +0000 (21:09 +0200)]
refactor(pool): add function wrapper to call either async/sync version
Daniele Varrazzo [Sun, 11 May 2025 20:33:29 +0000 (22:33 +0200)]
chore: use the github url in update_errors
The official repo raises a 429 and doesn't allow to download blobs
anymore.
Daniele Varrazzo [Sun, 11 May 2025 11:35:06 +0000 (13:35 +0200)]
chore: bump psycopg package version to 3.2.8
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.
Daniele Varrazzo [Sun, 11 May 2025 10:45:56 +0000 (12:45 +0200)]
ci: make sure versions are strings, not floats
Daniele Varrazzo [Sat, 10 May 2025 19:58:27 +0000 (21:58 +0200)]
chore: add funding link to project metadata
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.
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.
Daniele Varrazzo [Sat, 10 May 2025 13:30:00 +0000 (15:30 +0200)]
chore(binary): bump libpq to 17.5 in binary packages
Daniele Varrazzo [Sat, 10 May 2025 13:13:41 +0000 (14:13 +0100)]
Merge pull request #1085 from psycopg/better-logging
Better logging
Daniele Varrazzo [Sat, 10 May 2025 02:55:45 +0000 (04:55 +0200)]
docs: add section about connection logging
Daniele Varrazzo [Fri, 9 May 2025 01:14:16 +0000 (03:14 +0200)]
refactor: more succinct expression for multiple attempts error
Daniele Varrazzo [Fri, 9 May 2025 00:48:25 +0000 (02:48 +0200)]
feat: restore connection attempts logging
It was deleted in #1076, with the introduction of the multi-message
exception but it is still useful, looking at #888.
Daniele Varrazzo [Sat, 10 May 2025 02:22:26 +0000 (04:22 +0200)]
ci: add Django LTS 5.2 3rd party integration test
Daniele Varrazzo [Sat, 10 May 2025 02:11:29 +0000 (04:11 +0200)]
ci: fix 3rd party test after the pip django package went lowercase
Daniele Varrazzo [Fri, 9 May 2025 23:27:42 +0000 (01:27 +0200)]
Merge branch 'libpq-v18'
Daniele Varrazzo [Fri, 9 May 2025 22:00:52 +0000 (00:00 +0200)]
ci: include PostgreSQL 18 libpq in tests
Daniele Varrazzo [Fri, 9 May 2025 13:00:34 +0000 (15:00 +0200)]
fix: fix building with PostgreSQL v18 libpq
Use 64 bits support from C99 types.
Fix #1082
Daniele Varrazzo [Fri, 9 May 2025 14:36:55 +0000 (16:36 +0200)]
chore(tests): import module only locally as it won't be imported/used in C
Daniele Varrazzo [Fri, 9 May 2025 14:34:37 +0000 (16:34 +0200)]
chore: import module to avoid confusing mypy situations
Daniele Varrazzo [Fri, 9 May 2025 13:10:33 +0000 (14:10 +0100)]
Merge pull request #1078 from psycopg/port-may-be-none
Fix port upon empty return from the libpq
Daniele Varrazzo [Thu, 8 May 2025 20:47:50 +0000 (22:47 +0200)]
fix: avoid a blank "port=" in the repr() of object with connection
Daniele Varrazzo [Thu, 8 May 2025 17:09:08 +0000 (19:09 +0200)]
fix: return the compiled port if PQport returns an empty string
Looking at the docs this seems the default value when an empty string is
specified, as opposite as the value in the PGPORT env var. See
<https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-PORT>.
This change is an improvement on top of
40dfa0b , where we allowed PGport
to return NULL. This is likely a libpq bug (reported in
<https://www.postgresql.org/message-id/CA%2Bmi_8YTS8WPZPO0PAb2aaGLwHuQ0DEQRF0ZMnvWss4y9FwDYQ%40mail.gmail.com>)
but now it's in the wild so we better support it rather than dying of
assert or by int()'ing an empty string.
Daniele Varrazzo [Fri, 9 May 2025 11:10:46 +0000 (13:10 +0200)]
test: actually test server cursors when row makers return None
Daniele Varrazzo [Thu, 8 May 2025 23:47:26 +0000 (01:47 +0200)]
fix(c): don't use Cython 3.1 or following to build the extension
The resulting module seems affected by a memory leak.
https://github.com/cython/cython/issues/6850
Daniele Varrazzo [Thu, 8 May 2025 21:06:05 +0000 (22:06 +0100)]
Merge pull request #1074 from embecka/master
Fix loading of rows when row maker returns None
Martin Baláž [Thu, 8 May 2025 00:03:01 +0000 (02:03 +0200)]
docs: add release notes entry about row maker returning none fixed
Martin Baláž [Wed, 7 May 2025 20:10:06 +0000 (22:10 +0200)]
test: test behaviour of cursors with a row maker returning None
Martin Baláž [Wed, 7 May 2025 15:25:13 +0000 (17:25 +0200)]
fix: fix loading of rows when row maker returns None
Close #1073
Daniele Varrazzo [Thu, 8 May 2025 05:10:48 +0000 (06:10 +0100)]
Merge pull request #1076 from danielfrankcom/dev/danielfrankcom/show-all-connection-errors
fix: show all messages associated with connection failures
Daniel Frankcom [Wed, 7 May 2025 23:20:43 +0000 (16:20 -0700)]
fix: show all connection errors on attempt failure
Daniele Varrazzo [Wed, 7 May 2025 02:45:14 +0000 (04:45 +0200)]
ci: test integration of pool package with previous psycopg version
Daniele Varrazzo [Wed, 7 May 2025 22:50:31 +0000 (00:50 +0200)]
test: allow running tests with old psycopg versions
Daniele Varrazzo [Wed, 7 May 2025 23:13:04 +0000 (00:13 +0100)]
Merge pull request #1077 from psycopg/no-attempts-after-ctrl-c
Stop processing connection attempts after pressing Ctrl-C
Daniele Varrazzo [Wed, 7 May 2025 21:39:20 +0000 (23:39 +0200)]
fix: don't process further attempt if ctrl-c is pressed during connection
See for example #1055 where this behaviour is reported, #1076 where it
is further discussed.
Daniele Varrazzo [Wed, 7 May 2025 21:40:23 +0000 (23:40 +0200)]
fix: remove assert calling informative libpq function
At least calling PQport on a connection with multiple attempts ends up
returning a NULL instead of an empty string (libpq from Postgres 17.4).
Daniele Varrazzo [Wed, 7 May 2025 18:21:14 +0000 (20:21 +0200)]
Merge branch 'fix-1071'
Daniele Varrazzo [Wed, 7 May 2025 14:01:01 +0000 (16:01 +0200)]
fix[c]: fix interval parsing with day/month/year and negative time
Close #1071
Daniele Varrazzo [Wed, 7 May 2025 18:19:10 +0000 (20:19 +0200)]
Merge branch 'cleanup-py310'
Daniele Varrazzo [Wed, 7 May 2025 11:05:49 +0000 (13:05 +0200)]
chore: bump build packages versions
Update packages metadata following PEP 639 license documentation.
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
Daniele Varrazzo [Wed, 7 May 2025 01:59:05 +0000 (03:59 +0200)]
style: drop string type aliases
Daniele Varrazzo [Wed, 7 May 2025 01:55:12 +0000 (03:55 +0200)]
chore: drop redundant brackets
Daniele Varrazzo [Wed, 7 May 2025 01:54:21 +0000 (03:54 +0200)]
chore: drop use of deprecated aliases
Daniele Varrazzo [Wed, 7 May 2025 01:44:46 +0000 (03:44 +0200)]
chore: drop pre-3.10 compatibility hacks
Daniele Varrazzo [Sun, 4 May 2025 21:33:29 +0000 (22:33 +0100)]
Merge pull request #1064 from psycopg/cursor-next
Add support for `next(cursor)`
Daniele Varrazzo [Sat, 3 May 2025 02:07:37 +0000 (04:07 +0200)]
feat: make cursors iterators
This allows to call `next(cursor)`, which is guaranteed to never return
None, making type checking simpler.
Daniele Varrazzo [Sun, 4 May 2025 18:54:58 +0000 (20:54 +0200)]
Merge branch 'fix-server-cursor-rownumber'
Daniele Varrazzo [Sun, 4 May 2025 17:03:38 +0000 (19:03 +0200)]
fix: fix AsyncClientCursor.rownumber after scroll()
Daniele Varrazzo [Sun, 4 May 2025 16:44:29 +0000 (18:44 +0200)]
refactor: auto-generate sync server cursor from async
Daniele Varrazzo [Sun, 4 May 2025 16:30:34 +0000 (18:30 +0200)]
refactor: split async/sync server cursor in two modules
Daniele Varrazzo [Sat, 3 May 2025 01:31:27 +0000 (03:31 +0200)]
refactor(test): better parametrization of fetch type tests
Daniele Varrazzo [Sun, 4 May 2025 16:17:17 +0000 (18:17 +0200)]
docs: reword unclear news entry
Daniele Varrazzo [Fri, 2 May 2025 22:18:10 +0000 (00:18 +0200)]
fix: improve error message trying to fetch from a no recordset result
Print the last command status with the error. For example:
the last operation didn't produce records (command status: NOTIFY)
or, if the result doesn't even have a command status:
the last operation didn't produce records (result status: EMPTY_QUERY)
Jero Bado [Thu, 1 May 2025 05:09:19 +0000 (13:09 +0800)]
chore: drop support for Python 3.9
Close #1056.
Daniele Varrazzo [Sun, 4 May 2025 11:27:49 +0000 (13:27 +0200)]
chore: test support for PyPY 3.11
Daniele Varrazzo [Sun, 4 May 2025 10:59:08 +0000 (12:59 +0200)]
Merge branch 'fix-from-ticks-functions'
Daniele Varrazzo [Thu, 1 May 2025 17:38:18 +0000 (19:38 +0200)]
fix: fix return value of `DateFromTicks` and `TimeFromTicks`
These function are based on the return value of `TimestampFromTicks`.
Because this value returned by this function is timezone-aware and
localized to the current timezone, truncating the value (and implicitly
losing the timezone) might return the wrong result.
For example, at tick 0, in NY, it was 1969-12-31T19:00-05:00. By
truncating the timestamp on the date, the date would be the 1969-12-31
instead of the expected 1970-01-01.
This changeset actually changes `TimestampFromTicks` to return an UTC
timestamp instead of a local timestamp. We believe that this change is
not a problem because we don't change neither the type (tz-aware
datetime) nor the value of the returned object (old and new values
compare equal). An alternative would have been to decouple the Timestamp
function from the Date/Time functions, but I think it would be confusing
if the Timestamp function returned a datetime with the date in 1969 but the
Date function returned a date in 1970.
Adjust the tests to be *stricter* than before, making use of the fact
that now the output is not affected by the local timezone.
Close #1058.
Fedor Kobak [Sun, 4 May 2025 10:52:23 +0000 (13:52 +0300)]
docs: use "result set" consistently
fix `statusmessage` docs to reflect the fact that it refers to the current result, not the last one, as it was in psycopg2. Improve docs consistency about other attributes which might be affected by current result.
See #1062.
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>
Daniele Varrazzo [Wed, 30 Apr 2025 13:05:26 +0000 (15:05 +0200)]
Merge branch 'connection-log'
Daniele Varrazzo [Tue, 29 Apr 2025 16:15:19 +0000 (18:15 +0200)]
chore: add connection debugging log in the C extension too
Daniele Varrazzo [Tue, 29 Apr 2025 14:14:40 +0000 (16:14 +0200)]
chore: add debug logging at connection time
Only added to the Python implementation for the moment.
See #888
Daniele Varrazzo [Tue, 29 Apr 2025 14:16:10 +0000 (16:16 +0200)]
fix: guard from unexpected connection status on repr
Daniele Varrazzo [Wed, 30 Apr 2025 13:03:47 +0000 (15:03 +0200)]
docs: add link to pre-commit project in readme.
Also reflow a paragraph because it seems that the `-e` at the beginning of
the line introduces a line break in the Github rendering of the readme.
Daniele Varrazzo [Tue, 29 Apr 2025 12:39:29 +0000 (14:39 +0200)]
docs: drop references to Scaleway build scripts
Daniele Varrazzo [Tue, 29 Apr 2025 12:37:14 +0000 (14:37 +0200)]
chore: drop scaleway build support
We are now building arm64 packages on Github Action runners
Daniele Varrazzo [Tue, 29 Apr 2025 12:14:59 +0000 (14:14 +0200)]
chore: bump psycopg package version to 3.2.7
Daniele Varrazzo [Wed, 16 Apr 2025 18:57:37 +0000 (20:57 +0200)]
test(pool): verify the overriding of `close()` to act as `putconn()`
We would like to maintain this possibility on a best-effort basis. The
hack has been mentioned in #1046 and upstream in
https://github.com/sqlalchemy/sqlalchemy/discussions/12522 and is useful
to integrate psycopg pool with the SQLAlchemy NullPool.
Daniele Varrazzo [Wed, 9 Apr 2025 14:38:17 +0000 (15:38 +0100)]
docs: document multiple statements limitations
Close #1020.
Daniele Varrazzo [Wed, 9 Apr 2025 14:16:33 +0000 (15:16 +0100)]
Merge pull request #1031 from Zaczero/binary-hstore
Support binary protocol for hstore
Kamil Monicz [Fri, 21 Mar 2025 16:47:02 +0000 (16:47 +0000)]
feat: implement binary hstore protocol
Daniele Varrazzo [Tue, 18 Mar 2025 14:46:35 +0000 (15:46 +0100)]
test(crdb): add test reproducing failure with prepared create statement
See #1009
Daniele Varrazzo [Tue, 18 Mar 2025 15:21:04 +0000 (16:21 +0100)]
ci(crdb): pull stable crdb images from crdb docker repository
Daniele Varrazzo [Sat, 5 Apr 2025 09:41:21 +0000 (10:41 +0100)]
style: define a symbolic const for null values in array
Daniele Varrazzo [Thu, 3 Apr 2025 11:07:46 +0000 (12:07 +0100)]
chore: drop unneeded nonlocal declarations
Flagged by flake8 7.2
Daniele Varrazzo [Thu, 3 Apr 2025 10:56:27 +0000 (11:56 +0100)]
Merge branch 'walrusify'
Daniele Varrazzo [Thu, 27 Mar 2025 16:36:29 +0000 (17:36 +0100)]
refactor: use assignment expressions in loops with assignment and break
Daniele Varrazzo [Thu, 27 Mar 2025 00:25:49 +0000 (01:25 +0100)]
refactor: use the assignment operator in assignments followed by an if
dependabot[bot] [Tue, 1 Apr 2025 07:17:44 +0000 (07:17 +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.22.0 to 2.23.2
- [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.22.0...v2.23.2)
Updates `prefix-dev/setup-pixi` from 0.8.3 to 0.8.4
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/v0.8.3...v0.8.4)
---
updated-dependencies:
- dependency-name: pypa/cibuildwheel
dependency-version: 2.23.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: actions
- dependency-name: prefix-dev/setup-pixi
dependency-version: 0.8.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: actions
...
Signed-off-by: dependabot[bot] <support@github.com>
Daniele Varrazzo [Thu, 27 Mar 2025 11:05:25 +0000 (12:05 +0100)]
docs: improve basic usage example
Be consistent with return/print, make the second print actually print
something (taking the chance to showcase `executemany()`).
LuiMoiPer [Thu, 27 Mar 2025 05:43:02 +0000 (22:43 -0700)]
docs: rename some news.rst section headers from python to psycopg
Daniele Varrazzo [Wed, 26 Mar 2025 18:56:32 +0000 (19:56 +0100)]
perf(composite): drop an if and a tuple() call
Daniele Varrazzo [Wed, 26 Mar 2025 18:23:14 +0000 (18:23 +0000)]
Merge pull request #1033 from Zaczero/shapely-srid
Add shapely SRID support.
Daniele Varrazzo [Wed, 26 Mar 2025 14:51:50 +0000 (15:51 +0100)]
ci(shapely): test shapely with a more current Python version
Daniele Varrazzo [Wed, 26 Mar 2025 14:46:00 +0000 (15:46 +0100)]
test(shapely): better use of fixtures to drop test duplications
Daniele Varrazzo [Tue, 25 Mar 2025 18:44:29 +0000 (19:44 +0100)]
docs: mention shapely SRID support in news file
Daniele Varrazzo [Tue, 25 Mar 2025 18:23:41 +0000 (19:23 +0100)]
fix: manage shapely conditional imports explicitly
Kamil Monicz [Mon, 24 Mar 2025 11:47:23 +0000 (11:47 +0000)]
test(shapely): Handle missing SRID support
Kamil Monicz [Mon, 24 Mar 2025 11:32:41 +0000 (11:32 +0000)]
fix(shapely): maintain Shapely < 2 compatibility
Daniele Varrazzo [Sun, 23 Mar 2025 17:14:11 +0000 (18:14 +0100)]
chore: add types-shapely to dev dependencies
Kamil Monicz [Sun, 23 Mar 2025 10:30:11 +0000 (10:30 +0000)]
fix(shapely): add SRID support
Daniele Varrazzo [Sun, 23 Mar 2025 22:10:57 +0000 (23:10 +0100)]
chore: configure flake8 for imports after pytest's importorskip