]>
git.ipfire.org Git - thirdparty/psycopg.git/log
Daniele Varrazzo [Sat, 30 Dec 2023 00:30:39 +0000 (01:30 +0100)]
refactor: use typing.Self
The object seems available for all the supported Python version and
should avoid problems with PyRight (see #708).
It is not a solution for #308 because we cannot use `Self[Row]`.
Federico Caselli [Mon, 18 Dec 2023 20:31:22 +0000 (21:31 +0100)]
test: add async driver to sqlalchemy pipeline
Daniele Varrazzo [Tue, 19 Dec 2023 01:27:19 +0000 (02:27 +0100)]
chore: bump psycopg package version to 3.1.17.dev1
Daniele Varrazzo [Tue, 19 Dec 2023 01:07:54 +0000 (02:07 +0100)]
chore: bump psycopg package version to 3.1.16
Daniele Varrazzo [Mon, 18 Dec 2023 23:58:35 +0000 (00:58 +0100)]
fix: fix empty ports handling in async multiple connection attempts
Close #703.
Daniele Varrazzo [Tue, 19 Dec 2023 00:01:26 +0000 (01:01 +0100)]
chore: bump psycopg package version to 3.1.16.dev1
Daniele Varrazzo [Mon, 18 Dec 2023 01:54:26 +0000 (02:54 +0100)]
chore: include codespell in dev dependencies
Daniele Varrazzo [Thu, 14 Dec 2023 03:26:56 +0000 (04:26 +0100)]
chore: bump psycopg package version to 3.1.15
Daniele Varrazzo [Thu, 14 Dec 2023 03:25:23 +0000 (03:25 +0000)]
Merge pull request #700 from psycopg/fix-service-file
Daniele Varrazzo [Wed, 13 Dec 2023 13:20:49 +0000 (14:20 +0100)]
refactor: add compiled_default option to _get_params
Make it less awkward to come out with a 5432 when we really want a port
number (in name resolution) but still allow to leave it unspecified to
avoid mangling the conninfo.
Daniele Varrazzo [Wed, 13 Dec 2023 11:31:13 +0000 (12:31 +0100)]
fix: honour the PGLOADBALANCEHOSTS env var
Daniele Varrazzo [Wed, 13 Dec 2023 03:55:51 +0000 (04:55 +0100)]
fix: honour the PGCONNECT_TIMEOUT env var
Daniele Varrazzo [Wed, 13 Dec 2023 03:35:48 +0000 (04:35 +0100)]
fix: set minimum timeout to 2s
This is consistent with what the libpq does.
Move timeout calculation to a function in conninfo module and don't
change the connect_timeout parameter explicitly in the connection
string.
Drop awful drop_default_args_from_conninfo() from tests.
Daniele Varrazzo [Wed, 13 Dec 2023 03:34:40 +0000 (04:34 +0100)]
fix: add debug logging when a connection attempt is discarded
Daniele Varrazzo [Wed, 13 Dec 2023 00:33:04 +0000 (01:33 +0100)]
refactor: return lists from conninfo attempt functions
Daniele Varrazzo [Wed, 13 Dec 2023 00:03:55 +0000 (01:03 +0100)]
fix: shuffle attempts when one host resolves to more than one IP
This behaviour (first resolve all the hosts, then shuffle the IPs) mimics
better what the libpq does in non-async mode.
Daniele Varrazzo [Tue, 12 Dec 2023 19:33:20 +0000 (20:33 +0100)]
fix: don't add defaults to connection strings
A default such as empty string for host may may shadow values defined in
a service file.
Fix #694.
Daniele Varrazzo [Tue, 12 Dec 2023 16:56:37 +0000 (17:56 +0100)]
fix: fix iteration resolving hosts with multiple IP addresses in async mode
Fix #695 (not 100% sure, but probably).
Daniele Varrazzo [Tue, 12 Dec 2023 17:02:22 +0000 (18:02 +0100)]
test: mark a couple of test slow
Sub-second, but noticeable glitches in my stream of green dots.
nialov [Mon, 4 Dec 2023 17:33:46 +0000 (19:33 +0200)]
test: mark flaky ref count tests
All tests that have the 'gc' fixture are now marked with the refcount mark. The
reasoning is that they demonstrate flaky behaviour and disabling them in
certain CI is necessary to ensure reliable testing. See #692
Daniele Varrazzo [Mon, 4 Dec 2023 09:35:40 +0000 (10:35 +0100)]
docs: fix doc about the module gevent needs to patch
Daniele Varrazzo [Sat, 2 Dec 2023 09:32:54 +0000 (10:32 +0100)]
chore: bump psycopg package version to 3.1.15.dev1
Daniele Varrazzo [Sat, 2 Dec 2023 02:20:04 +0000 (03:20 +0100)]
chore: bump psycopg package version to 3.1.14
Daniele Varrazzo [Sat, 2 Dec 2023 02:19:45 +0000 (03:19 +0100)]
Merge branch 'pypy-3.1' into maint-3.1
Daniele Varrazzo [Sat, 2 Dec 2023 01:56:35 +0000 (02:56 +0100)]
test: skip some tests that raise an error on pypy 3.9
The error is:
anyio/_backends/_asyncio.py:2039: in _cancel_all_tasks
raise cast(BaseException, task.exception())
...
> result = coro.throw(exc)
E RuntimeError: can't do async_generator.athrow().throw()
The error only happens on Pypy 3.9, and doesn't happen on master, only
in the maint 3.1 branch. 3.1 uses anyio < 4, master uses anyio >= 4, so
I would say that the error is limited to only this combination and that
it is an anyio bug.
The problem affects just two tests, so let's just skip them. Whatever.
Nick Pope [Tue, 28 Nov 2023 12:46:59 +0000 (12:46 +0000)]
chore: add support for PyPy.
Daniele Varrazzo [Fri, 1 Dec 2023 23:40:56 +0000 (00:40 +0100)]
Merge branch 'fix-gevent' into maint-3.1
Daniele Varrazzo [Thu, 30 Nov 2023 09:11:46 +0000 (10:11 +0100)]
refactor: use `yield from` in connections attempts
Daniele Varrazzo [Thu, 30 Nov 2023 10:23:27 +0000 (11:23 +0100)]
ci: test gevent integration
Daniele Varrazzo [Thu, 30 Nov 2023 09:05:33 +0000 (10:05 +0100)]
fix: ensure gevent collaboration
Close #527
Denis Laxalde [Thu, 30 Nov 2023 20:01:01 +0000 (21:01 +0100)]
test: let pytest show more info in summary
We add '-ra' to pytest options so as to get report about "(a)ll except
passed" tests. This is in particular useful to get the detailed message
about why some tests got skipped (especially useful in CI).
Daniele Varrazzo [Tue, 21 Nov 2023 12:19:47 +0000 (12:19 +0000)]
Merge pull request #683 from mweinelt/connect-env-maint-3.1
Daniele Varrazzo [Tue, 21 Nov 2023 08:49:24 +0000 (09:49 +0100)]
test: fix test failing to connect if env vars are cleaned
Add `dsn_env` fixture returning the `dsn` merged with the values in the
PG* env vars. This way the env can be cleaned but a working connection
string is still available.
Martin Weinelt [Tue, 21 Nov 2023 02:00:36 +0000 (03:00 +0100)]
fix: flush PG environment variables in test_connect{,_args}
These tests were previously affected by environment variables, that can
be used to configure a postgresql instance.
Closes: #681
Daniele Varrazzo [Fri, 17 Nov 2023 16:00:08 +0000 (17:00 +0100)]
chore(ci): use existing macos11 packages in macOS arm build
Daniele Varrazzo [Fri, 17 Nov 2023 15:36:57 +0000 (16:36 +0100)]
chore: bump psycopg package version to 3.1.13
Daniele Varrazzo [Thu, 16 Nov 2023 01:27:14 +0000 (02:27 +0100)]
fix: plug memory leak receiving notifications in python libpq wrapper
Close #679.
Daniele Varrazzo [Tue, 14 Nov 2023 00:24:17 +0000 (01:24 +0100)]
Merge branch 'fix-multiple-hosts-3.1' into maint-3.1
Daniele Varrazzo [Mon, 13 Nov 2023 22:56:46 +0000 (23:56 +0100)]
chore: drop conninfo.resolve_hostaddr_async
The function is no more used internally and only exposed from the _dns
module with a warning. Its implementation is now an application of a few
internal functions exposed internally by the conninfo module. Move the
whole implementation into _dns.
Daniele Varrazzo [Mon, 13 Nov 2023 20:12:45 +0000 (20:12 +0000)]
fix: add support for the 'load_balance_hosts' connection parameter
Daniele Varrazzo [Mon, 13 Nov 2023 18:08:51 +0000 (18:08 +0000)]
test: test conninfo attempts functions and multiple host support in connection
Daniele Varrazzo [Thu, 26 Oct 2023 21:16:01 +0000 (23:16 +0200)]
feat: explicitly iterate on multiple hosts on connections
The libpq async connection path doesn't iterate on the attempts, so we
need to do it ourselves.
Daniele Varrazzo [Thu, 26 Oct 2023 16:28:17 +0000 (18:28 +0200)]
refactor: introduce support function to split connection attempts
Refactor the `resolve_hostaddr_async()` function to make use of such
facilities.
Daniele Varrazzo [Wed, 25 Oct 2023 18:23:08 +0000 (20:23 +0200)]
refactor: move setting autocommit on connection out of _connect_gen
Daniele Varrazzo [Sat, 11 Nov 2023 19:49:24 +0000 (19:49 +0000)]
chore: bump min Python version tested with SQLAlchemy to 3.8
Daniele Varrazzo [Sat, 11 Nov 2023 15:32:07 +0000 (15:32 +0000)]
chore: refresh 3rd party tests
- upgrade Python to 3.12
- test stable version of SQLAlchemy 2
- add missing SQLAlchemy test dependency
Testing Django with Python 3.12 not enabled yet as it requires pylibmc wheel
packages for Python 3.12 (https://github.com/lericson/pylibmc/issues/288).
Daniele Varrazzo [Sat, 11 Nov 2023 19:10:28 +0000 (19:10 +0000)]
chore: bump psycopg_pool package version to 3.1.10.dev1
Daniele Varrazzo [Sat, 11 Nov 2023 19:04:30 +0000 (19:04 +0000)]
chore: bump psycopg_pool package version to 3.1.9
Daniele Varrazzo [Sat, 11 Nov 2023 14:59:09 +0000 (14:59 +0000)]
fix(bump_version): fix bumping minor version with dev releases
Daniele Varrazzo [Thu, 2 Nov 2023 09:25:18 +0000 (10:25 +0100)]
chore(macos): build images with more recent Python versions
Daniele Varrazzo [Tue, 24 Oct 2023 18:15:18 +0000 (20:15 +0200)]
Merge branch 'fix-667-3.1' into maint-3.1
Daniele Varrazzo [Tue, 24 Oct 2023 09:19:36 +0000 (11:19 +0200)]
fix: retry automatically syscall in wait_c if it fails with EINTR
Fix #667
Daniele Varrazzo [Tue, 24 Oct 2023 08:50:40 +0000 (10:50 +0200)]
test: add test to generate an EINTR in wait_c
Martin Weinelt [Mon, 23 Oct 2023 22:54:18 +0000 (00:54 +0200)]
Mark test_identify_closure as timing-sensitive
```
____________________________ test_identify_closure _____________________________
conn_cls = <class 'psycopg.Connection'>, dsn = 'host=127.0.0.1 user=psycopg'
@pytest.mark.crdb_skip("pg_terminate_backend")
@pytest.mark.slow
def test_identify_closure(conn_cls, dsn):
def closer():
time.sleep(0.2)
conn2.execute("select pg_terminate_backend(%s)", [conn.pgconn.backend_pid])
conn = conn_cls.connect(dsn)
conn2 = conn_cls.connect(dsn)
try:
t = threading.Thread(target=closer)
t.start()
t0 = time.time()
try:
with pytest.raises(psycopg.OperationalError):
conn.execute("select pg_sleep(1.0)")
t1 = time.time()
> assert 0.2 < t1 - t0 < 0.4
E assert 0.2 < (
1697715164 .
8614173 -
1697715164 .
6617775 )
tests/test_concurrency.py:231: AssertionError
```
Daniele Varrazzo [Tue, 10 Oct 2023 21:21:57 +0000 (23:21 +0200)]
docs: link together readme files on PyPI and add reference to psycopg2
See https://github.com/psycopg/psycopg2/issues/1632
Daniele Varrazzo [Sun, 8 Oct 2023 17:31:07 +0000 (19:31 +0200)]
style(pool): more explicit error message for pool open with no loop
Daniele Varrazzo [Fri, 6 Oct 2023 19:37:17 +0000 (21:37 +0200)]
test: mark array leak test slow
It takes 300ms, but it's still a blip when other tests run.
Add notes in the tests readme about repeating finding slow tests.
Daniele Varrazzo [Fri, 6 Oct 2023 15:04:42 +0000 (17:04 +0200)]
refactor(pool): don't use a no-op function as reconnect callback
Just check for None.
Daniele Varrazzo [Fri, 6 Oct 2023 12:38:44 +0000 (14:38 +0200)]
style(pool): don't report too many decimals in timeout error message
Daniele Varrazzo [Fri, 6 Oct 2023 12:36:43 +0000 (14:36 +0200)]
fix(pool): trade off usage timing precision for robustness
It is unlikely that the statements we shuffled around will fail;
however, let's do the right thing and make sure that, if they do, the
getconn/putconn pair remains matched.
Daniele Varrazzo [Tue, 3 Oct 2023 16:34:07 +0000 (18:34 +0200)]
Merge branch 'fix-652' into maint-3.1
Daniele Varrazzo [Tue, 3 Oct 2023 16:09:11 +0000 (18:09 +0200)]
test: verify that time objects with failing utcoffset() are handled correctly
Daniele Varrazzo [Tue, 3 Oct 2023 16:08:19 +0000 (18:08 +0200)]
fix: raise DataError dumping a time with ambiguous timezone
Close #652
Daniele Varrazzo [Tue, 3 Oct 2023 11:29:48 +0000 (13:29 +0200)]
Merge branch 'cp312-build' into maint-3.1
Daniele Varrazzo [Tue, 3 Oct 2023 11:26:16 +0000 (13:26 +0200)]
ci: add PostgreSQL 16 to the test grid
Daniele Varrazzo [Tue, 3 Oct 2023 11:21:46 +0000 (13:21 +0200)]
test: test Python 3.12 on all platform with final image
Daniele Varrazzo [Tue, 3 Oct 2023 11:19:35 +0000 (13:19 +0200)]
ci: add Python 3.12 packages build
Daniele Varrazzo [Tue, 3 Oct 2023 08:48:40 +0000 (10:48 +0200)]
ci: build Python 3.12 packages
Daniele Varrazzo [Tue, 3 Oct 2023 08:53:29 +0000 (10:53 +0200)]
chore: fix 'adapers' typo
Daniele Varrazzo [Wed, 27 Sep 2023 21:59:12 +0000 (23:59 +0200)]
style: avoid a chained traceback on dns parsing error
Denis Laxalde [Wed, 5 Apr 2023 11:39:53 +0000 (13:39 +0200)]
fix: use Self type for connection pool in __*enter__()
This makes inheritance, e.g. for *NullConnectionPool, work correctly:
with psycopg_pool.NullConnectionPool() as p:
pass
reveal_type(p)
# Revealed type is "psycopg_pool.null_pool.NullConnectionPool"
Daniele Varrazzo [Wed, 27 Sep 2023 00:33:17 +0000 (02:33 +0200)]
chore: bump psycopg package version to 3.1.13.dev1
Daniele Varrazzo [Tue, 26 Sep 2023 21:25:55 +0000 (23:25 +0200)]
chore: bump psycopg package version to 3.1.12
Daniele Varrazzo [Tue, 26 Sep 2023 20:47:48 +0000 (22:47 +0200)]
Merge branch 'fix-608' into maint-3.1
Daniele Varrazzo [Tue, 26 Sep 2023 17:24:44 +0000 (19:24 +0200)]
fix: use poll() instead of epoll() for waiting
epoll() hangs when the fd it listens to is closed. poll() doesn't have
this problem (as a consequence, hanging only happened in the Python
code, as wait_c is poll-based).
Daniele Varrazzo [Tue, 26 Sep 2023 16:29:47 +0000 (18:29 +0200)]
fix: don't hang forever if async connection is closed while querying
Fix #608
Daniele Varrazzo [Tue, 26 Sep 2023 16:27:25 +0000 (18:27 +0200)]
fix: don't raise spurious errors on cancel if the connection is closed
Daniele Varrazzo [Mon, 25 Sep 2023 15:16:02 +0000 (17:16 +0200)]
ci(scaleway_m1): add list command and jq pretty output
Daniele Varrazzo [Tue, 26 Sep 2023 16:54:10 +0000 (18:54 +0200)]
chore(crdb): test 23.1 in CI
Daniele Varrazzo [Tue, 26 Sep 2023 08:53:54 +0000 (10:53 +0200)]
Merge branch 'fix-647' into maint-3.1
Daniele Varrazzo [Mon, 25 Sep 2023 15:19:53 +0000 (17:19 +0200)]
fix: cache all dynamically generated adapter types
These are not currently a leak in cPython, but I don't think it's
guaranteed anywhere, and it might well not be the case in other Python
implementations. So, as a matter of hygiene, make sure that calling
register_*() in a loop doesn't create an unbound number of new types.
Daniele Varrazzo [Mon, 25 Sep 2023 22:26:56 +0000 (00:26 +0200)]
fix: cache dynamic adapters created in register_array()
If the base class is a C extension, the subclasses cannot be GC'd. This
results in a leak if register_array() is called in a loop.
Close #647
Daniele Varrazzo [Sat, 23 Sep 2023 11:32:45 +0000 (13:32 +0200)]
chore: bump psycopg_pool package version to 3.1.9.dev1
Daniele Varrazzo [Sat, 23 Sep 2023 11:32:37 +0000 (13:32 +0200)]
chore: bump psycopg package version to 3.1.12.dev1
Daniele Varrazzo [Fri, 22 Sep 2023 22:08:43 +0000 (00:08 +0200)]
chore: bump psycopg_pool package version to 3.1.8
Daniele Varrazzo [Fri, 22 Sep 2023 22:08:01 +0000 (00:08 +0200)]
chore: bump psycopg package version to 3.1.11
Daniele Varrazzo [Fri, 22 Sep 2023 21:44:42 +0000 (23:44 +0200)]
docs: Document what to do when a new major version of Postgres is released
Daniele Varrazzo [Fri, 22 Sep 2023 20:36:27 +0000 (22:36 +0200)]
ci: provision a M1 build server automatically, if needed
Daniele Varrazzo [Fri, 22 Sep 2023 21:31:46 +0000 (23:31 +0200)]
chore: upgrade libpq, OpenSSL versions
Daniele Varrazzo [Fri, 22 Sep 2023 23:07:03 +0000 (01:07 +0200)]
fix(bump_version): handle tagging without bumping version
Daniele Varrazzo [Fri, 22 Sep 2023 22:23:07 +0000 (00:23 +0200)]
ci: run 3rd party integration tests on commit on maint-3.1 branch
Daniele Varrazzo [Fri, 22 Sep 2023 21:32:16 +0000 (23:32 +0200)]
chore: update cibuildwheel version
Daniele Varrazzo [Fri, 22 Sep 2023 21:31:46 +0000 (23:31 +0200)]
chore: upgrade libpq, OpenSSL versions
Daniele Varrazzo [Fri, 22 Sep 2023 21:23:47 +0000 (23:23 +0200)]
docs: refresh stale release information
Daniele Varrazzo [Tue, 19 Sep 2023 20:38:03 +0000 (22:38 +0200)]
perf(windows): don't use wait_c.
The function was reported to use excessive CPU. Need to investigate,
however, for the moment, suspend its usage on Windows.
See #645.
Daniele Varrazzo [Tue, 19 Sep 2023 19:07:20 +0000 (21:07 +0200)]
fix(c): fix loading of intervals with days and months or years
Close #643.
Daniele Varrazzo [Fri, 15 Sep 2023 15:35:58 +0000 (17:35 +0200)]
ci: fix building Python 3.7 extension on windows using delvewheel 1.5.1
See https://github.com/adang1345/delvewheel/issues/39
Daniele Varrazzo [Mon, 11 Sep 2023 00:54:02 +0000 (01:54 +0100)]
style: move private functions closer to the classes where they are used
For better alignment with the master branch.
Daniele Varrazzo [Mon, 4 Sep 2023 13:42:00 +0000 (14:42 +0100)]
fix: avoid caching the parsing of large queries
These queries are typically generated by ORMs and have poor
cacheability, but can result in a lot of memory being used.
Close #628.
See also <https://github.com/sqlalchemy/sqlalchemy/discussions/10270>.
Daniele Varrazzo [Mon, 4 Sep 2023 14:03:24 +0000 (15:03 +0100)]
Revert "chore(binary): bump depending libraries"
This reverts commit
d424be88f63ee0d56088bcbc85904cdcc4fc48b8 .
The commit only bumped the defaults in the build script, but actually
the proper version is in the workflow file. A libpq version fixing #528
was already released with psycopg-binary 3.1.10.