]>
git.ipfire.org Git - thirdparty/psycopg.git/log
Daniele Varrazzo [Wed, 1 Feb 2023 01:04:04 +0000 (02:04 +0100)]
test: test hstore registration using different encodings
Reproduce the "emerging" bug reported in #503.
Daniele Varrazzo [Wed, 1 Feb 2023 00:59:01 +0000 (01:59 +0100)]
fix: fix TypeInfo.fetch() with a sql_ascii encoding connection
Close #503
Daniele Varrazzo [Wed, 1 Feb 2023 00:52:57 +0000 (01:52 +0100)]
test: add TypeInfo.fetch() test with autocommit transaction
Daniele Varrazzo [Wed, 1 Feb 2023 00:39:51 +0000 (01:39 +0100)]
test: reproduce the error in TypeInfo.fetch() in sql_ascii connection
Reported in #503.
Harry Lees [Fri, 3 Feb 2023 11:57:50 +0000 (11:57 +0000)]
fixed broken link to pip docs
Daniele Varrazzo [Sat, 4 Feb 2023 13:43:57 +0000 (14:43 +0100)]
Merge branch 'sqlalchemy_pipeline' into maint-3.1
Daniele Varrazzo [Sat, 4 Feb 2023 10:15:55 +0000 (11:15 +0100)]
ci: add colors to pytest sqlalchemy run
Daniele Varrazzo [Sat, 4 Feb 2023 10:08:48 +0000 (11:08 +0100)]
ci: allow better job visualization in Action page
Daniele Varrazzo [Sat, 4 Feb 2023 10:05:11 +0000 (11:05 +0100)]
ci: fix postgres service in 3rd party workflow
Federico Caselli [Tue, 17 Jan 2023 21:51:02 +0000 (22:51 +0100)]
ci: add sqlalchemy integration pipeline
Daniele Varrazzo [Wed, 1 Feb 2023 10:25:26 +0000 (11:25 +0100)]
chore: upgrade black to 23.1.0
Code reformatted to adhere to the new style requested (stricter on
redundant tuples unpacking brackets and blank lines at blocks start).
Daniele Varrazzo [Wed, 1 Feb 2023 01:14:51 +0000 (02:14 +0100)]
chore: bump psycopg package version to 3.1.9.dev1
Daniele Varrazzo [Tue, 17 Jan 2023 01:38:35 +0000 (02:38 +0100)]
ci: bump to PostgreSQL 15 on macOS package build
Try to do without brew update, which at the moment downloads half a
million of packages we don't use and then barfs on some java crap.
Daniele Varrazzo [Mon, 16 Jan 2023 23:58:15 +0000 (00:58 +0100)]
chore: bump cibuildwheel to 2.12.0
Checking if this fixes the current error in Github Actions, where the
macOS builds fail on `brew update`.
Daniele Varrazzo [Sat, 28 Jan 2023 17:14:32 +0000 (18:14 +0100)]
chore: bump psycopg_pool package version to 3.1.7.dev1
Daniele Varrazzo [Sat, 28 Jan 2023 16:52:26 +0000 (17:52 +0100)]
chore: bump psycopg_pool package version to 3.1.6
Daniele Varrazzo [Sat, 28 Jan 2023 16:51:59 +0000 (17:51 +0100)]
Merge branch 'kwargs-begone' into maint-3.1
Daniele Varrazzo [Sat, 28 Jan 2023 16:46:33 +0000 (17:46 +0100)]
docs(pool): mention change in constructors signatures in the news
Ran Benita [Tue, 24 Jan 2023 20:59:55 +0000 (22:59 +0200)]
refactor(pool): make constructor configuration parameters type-safe
Previously, arguments to ConnectionPool and friends would be forwarded
using `**kwargs` to `BasePool`. This is however not type-safe, and
prevents code editors from auto-completing the parameters.
Drop the `**kwargs`, duplicate the parameters instead.
Fixes #493.
Daniele Varrazzo [Mon, 16 Jan 2023 21:53:48 +0000 (22:53 +0100)]
chore: bump psycopg package version to 3.1.8
Florian Apolloner [Mon, 16 Jan 2023 20:09:21 +0000 (21:09 +0100)]
Fixed TypeInfo for ClientCursor.
TypeInfo had a hardcoded binary=True which doesn't work to well for
ClientCursor.
Daniele Varrazzo [Mon, 9 Jan 2023 17:45:22 +0000 (17:45 +0000)]
Merge branch 'rowcount' into maint-3.1
Denis Laxalde [Sat, 7 Jan 2023 15:01:36 +0000 (16:01 +0100)]
fix: set rowcount to the first result in executemany(..., returning=True)
Previously, _rowcount was unconditionally set to the overall number of
rows of all queries in executemany() and then reset only upon the first
call to nextset(). In the returning=True case, this lead the rowcount
attribute to be wrong for the first result (i.e. it didn't match the
number of rows that would be returned by .fetchall(), as can be seen in
updated tests).
Now we only set _rowcount to the cumulated number of rows of executed
queries *if* executemany() is not returning (so the value is still
useful, e.g., in to check the number of INSERTed rows):
>>> cur.executemany("INSERT INTO t(r) VALUES (%s)", [(1,), (2,)])
>>> cur.rowcount
2 # number of inserted rows
>>> cur.nextset()
>>> cur.executemany("INSERT INTO t(r) VALUES (%s) RETURNING r", [(1,), (2,)], returning=True)
>>> cur.rowcount
1 # number of rows in the first result set
>>> cur.fetchall()
[(1,)]
>>> cur.nextset()
True
>>> cur.rowcount
1
>>> cur.fetchall()
[(2,)]
>>> cur.nextset()
Besides, the code for processing results from executemany() in
_executemany_gen_no_pipeline() is now similar to that of
_set_results_from_pipeline().
Denis Laxalde [Sun, 8 Jan 2023 14:48:38 +0000 (15:48 +0100)]
refactor: drop superfluous _rowcount reset
In BaseCursor._set_results_from_pipeline() we were resetting _rowcount
if negative. This is superfluous as this code is reached when coming
from _executemany_gen_pipeline() in which we already do
'self._rowcount = 0' early on.
Denis Laxalde [Sat, 7 Jan 2023 18:50:37 +0000 (19:50 +0100)]
ci: install the "oldest" libpq from pgdg repository
Daniele Varrazzo [Sat, 7 Jan 2023 12:54:49 +0000 (12:54 +0000)]
doc: fix typo unless -> unlike
Daniele Varrazzo [Fri, 6 Jan 2023 17:29:59 +0000 (17:29 +0000)]
refactor: drop internal use of Union[] type definition in TypeInfo.fetch()
Daniele Varrazzo [Fri, 6 Jan 2023 17:21:19 +0000 (17:21 +0000)]
fix: use more uniformly the to_regtype function
Make the knowledge of the function to use independent from the knowledge
of the types implemented by a certain database.
Daniele Varrazzo [Fri, 6 Jan 2023 13:35:38 +0000 (13:35 +0000)]
test(crdb): fix flakey test
We often find a "delete" record more than once in the changefeed, before
deleting it. Tolerate one.
Federico Caselli [Thu, 5 Jan 2023 21:41:29 +0000 (22:41 +0100)]
Use to_regtype instead of ::regtype in type info queries on supported dbs
Daniele Varrazzo [Tue, 3 Jan 2023 19:40:38 +0000 (19:40 +0000)]
fix: report the MultirangeInfo object exposed by psycopg.types.multirange
Daniele Varrazzo [Tue, 3 Jan 2023 13:14:19 +0000 (13:14 +0000)]
Merge branch 'build-backend' into maint-3.1
Daniele Varrazzo [Mon, 2 Jan 2023 01:59:26 +0000 (01:59 +0000)]
ci: add in-tree build backend to avoid installing Cython if not needed
Only install Cython when there are pyx files to build. If there aren't,
it means that the c files are already available and Cython is not
required.
Close #471.
Daniele Varrazzo [Mon, 2 Jan 2023 03:26:32 +0000 (03:26 +0000)]
ci: use the 'build' python package as build frontend
Daniele Varrazzo [Mon, 2 Jan 2023 03:01:41 +0000 (03:01 +0000)]
ci: fix building source packages
Something was broken recently and installing from the package root
doesn't work anymore.
Daniele Varrazzo [Mon, 2 Jan 2023 04:13:32 +0000 (04:13 +0000)]
Merge branch 'test-lower-bound-dependencies' into maint-3.1
Daniele Varrazzo [Sat, 31 Dec 2022 03:07:39 +0000 (03:07 +0000)]
ci: include a single test with the oldest dependencies versions
Daniele Varrazzo [Sat, 31 Dec 2022 03:07:17 +0000 (03:07 +0000)]
chore: update the lower bound dependencies in the constraint file
Lower minimum dependency on pytest-randomly to version 3.5, as
version 3.6 requires a newer importlib-metadata.
Daniele Varrazzo [Mon, 26 Dec 2022 03:47:42 +0000 (03:47 +0000)]
fix: raise known errors before checking for signals in waiting
Daniele Varrazzo [Mon, 26 Dec 2022 06:09:34 +0000 (06:09 +0000)]
test: add psycopg2 in green mode to benchmark script
This is a more accurate comparison between psycopg2 and 3.
Daniele Varrazzo [Fri, 23 Dec 2022 04:24:51 +0000 (04:24 +0000)]
test: add --concurrency option to benchmark script
Investigate the poor parallelism mentioned in #448.
Daniele Varrazzo [Wed, 28 Dec 2022 03:26:43 +0000 (03:26 +0000)]
style: uniform variable name between sync and async cursor
Daniele Varrazzo [Fri, 23 Dec 2022 18:04:14 +0000 (18:04 +0000)]
fix: raise OperationalError instead of MemoryError on several operations
Failure is related to the operation executed, not to memory not
available to store the result.
Daniele Varrazzo [Thu, 29 Dec 2022 00:48:22 +0000 (00:48 +0000)]
chore: add Documentation, Changes links to metadata
Daniele Varrazzo [Thu, 29 Dec 2022 00:31:30 +0000 (00:31 +0000)]
feat(bump-version): add --actions option
Daniele Varrazzo [Thu, 22 Dec 2022 22:19:07 +0000 (22:19 +0000)]
chore(c): lean win32
Daniele Varrazzo [Thu, 22 Dec 2022 21:28:12 +0000 (21:28 +0000)]
chore(c): fix build warnings on win32
Daniele Varrazzo [Thu, 22 Dec 2022 16:25:40 +0000 (16:25 +0000)]
ci: uniform and clean up test workflow
Daniele Varrazzo [Thu, 22 Dec 2022 22:48:44 +0000 (22:48 +0000)]
test(crdb): skip inet tests on v22.2.1
Work around https://github.com/cockroachdb/cockroach/issues/94192
Daniele Varrazzo [Thu, 22 Dec 2022 19:07:10 +0000 (19:07 +0000)]
chore(pool): add pyproject.toml
Daniele Varrazzo [Tue, 20 Dec 2022 20:19:23 +0000 (20:19 +0000)]
ci: configure the database to run two-phase-commit tests
We can't use the Github Actions PostgreSQL service because it doesn't
seem possible to configure the server for stored transactions:
- the service yaml definition doesn't take args to pass to run
- we can't overwrite the entry point with a script of ours because the
service starts before actions/checkout
- the postgres image doesn't allow to pass extra parameters to the
server via an env var
Daniele Varrazzo [Thu, 22 Dec 2022 03:04:10 +0000 (03:04 +0000)]
test: fix int mixin enum in test
Daniele Varrazzo [Wed, 21 Dec 2022 23:00:32 +0000 (23:00 +0000)]
perf: micro-optimize AdaptersMap.get_dumper
Minimal amount of opcodes in case of fast-path (there is an adapter
precisely for the class queried).
Daniele Varrazzo [Tue, 20 Dec 2022 15:25:14 +0000 (15:25 +0000)]
ci: separate source and binary package workflows
Daniele Varrazzo [Tue, 20 Dec 2022 15:56:34 +0000 (15:56 +0000)]
chore: bump psycopg_pool package version to 3.1.6.dev1
Daniele Varrazzo [Tue, 20 Dec 2022 15:56:23 +0000 (15:56 +0000)]
chore: bump psycopg package version to 3.1.8.dev1
Daniele Varrazzo [Tue, 20 Dec 2022 15:14:42 +0000 (15:14 +0000)]
test: mark another couple of tests flakey to avoid delaying releases
Daniele Varrazzo [Tue, 20 Dec 2022 03:46:30 +0000 (03:46 +0000)]
chore: bump psycopg_pool package version to 3.1.5
Daniele Varrazzo [Tue, 20 Dec 2022 03:46:27 +0000 (03:46 +0000)]
chore: bump psycopg package version to 3.1.7
Daniele Varrazzo [Tue, 20 Dec 2022 03:43:46 +0000 (03:43 +0000)]
feat(bump_version): create release tags too
Daniele Varrazzo [Tue, 20 Dec 2022 03:13:17 +0000 (03:13 +0000)]
feat(bump_version): update history file too
Daniele Varrazzo [Mon, 19 Dec 2022 23:58:18 +0000 (23:58 +0000)]
Merge branch 'fix-464'
Daniele Varrazzo [Mon, 19 Dec 2022 22:46:42 +0000 (22:46 +0000)]
fix: consider cursor description results in row factories
Fix #464
Daniele Varrazzo [Mon, 19 Dec 2022 13:21:02 +0000 (13:21 +0000)]
Merge branch 'detox'
Daniele Varrazzo [Sun, 18 Dec 2022 19:14:16 +0000 (19:14 +0000)]
test: drop --allow-fail and --no-collect-ok options
They were needed to deal with problem caused by tox. Not needed anymore.
Daniele Varrazzo [Sun, 18 Dec 2022 15:23:26 +0000 (15:23 +0000)]
ci: enable subprocess-based tests in ci
Daniele Varrazzo [Sun, 18 Dec 2022 02:54:08 +0000 (02:54 +0000)]
test: skip test on windows, C implementation, in ci
No idea why ctypes doesn't work, and I really don't care.
Daniele Varrazzo [Thu, 8 Dec 2022 14:44:36 +0000 (14:44 +0000)]
ci: drop tox from tests
Daniele Varrazzo [Fri, 16 Dec 2022 15:29:48 +0000 (15:29 +0000)]
Merge branch 'fix-438'
Daniele Varrazzo [Fri, 16 Dec 2022 03:21:38 +0000 (03:21 +0000)]
fix(pool): make sure that check() fills an empty pool
Close #438.
Daniele Varrazzo [Fri, 16 Dec 2022 15:29:21 +0000 (15:29 +0000)]
Merge branch 'test-crdb-v22.2'
Daniele Varrazzo [Fri, 16 Dec 2022 03:32:42 +0000 (03:32 +0000)]
test(crdb): re-introduce a mix of Python and libpq versions
Rafi Shamim [Mon, 12 Dec 2022 21:47:33 +0000 (16:47 -0500)]
Run tests against CockroachDB v22.2
v22.2 was released recently, so we can test it. This upgrade revealed a
regression in CRDB that we must workaround
(https://github.com/cockroachdb/cockroach/issues/93739).
This also removes testing for v21.2, since it is no longer supported.
Daniele Varrazzo [Thu, 15 Dec 2022 15:54:25 +0000 (15:54 +0000)]
ops: add script to bump package version
Daniele Varrazzo [Thu, 15 Dec 2022 15:49:31 +0000 (15:49 +0000)]
test: skip a flakey test on release
For 3.1.6 release, three package jobs failed on this test. One of them,
a ppc manylinux, took more than 30 minutes to rerun. Not pleasurable.
Daniele Varrazzo [Thu, 15 Dec 2022 15:36:20 +0000 (15:36 +0000)]
chore: bump psycopg package version to 3.1.7.dev1
Daniele Varrazzo [Thu, 15 Dec 2022 11:12:37 +0000 (11:12 +0000)]
chore: bump version number for 3.1.6 release
Daniele Varrazzo [Thu, 15 Dec 2022 11:11:22 +0000 (11:11 +0000)]
Merge branch 'fix-460'
Daniele Varrazzo [Thu, 15 Dec 2022 11:03:44 +0000 (11:03 +0000)]
fix(copy): don't create a row maker on copy
A COPY_OUT result has columns, but no names for the columns. This case
must be handled in cur.description (see #235) but we don't need to
handle it in copy. If we did handle it in copy, we would need a column
name fallback, which we forgot to handle, hence the problem in #460.
Close #460.
Daniele Varrazzo [Thu, 15 Dec 2022 09:39:59 +0000 (09:39 +0000)]
chore(binary): upgrade packaged libraries to libpq 15.1, openssl 1.1.1s
Daniele Varrazzo [Thu, 15 Dec 2022 09:42:17 +0000 (09:42 +0000)]
chore: bump to dev version 3.1.6.dev0
Daniele Varrazzo [Tue, 13 Dec 2022 14:23:56 +0000 (14:23 +0000)]
ci: run tests on Python 3.11 on macOS
Daniele Varrazzo [Tue, 13 Dec 2022 14:20:37 +0000 (14:20 +0000)]
chore: bump version number for 3.1.5 release
Daniele Varrazzo [Tue, 13 Dec 2022 12:49:23 +0000 (12:49 +0000)]
perf(rows): reduce row_factories overhead
Drop the call to cur.description, which is very heavy. Use the low-level
PGresult to get the fields names.
Close #457.
Daniele Varrazzo [Tue, 13 Dec 2022 05:19:05 +0000 (05:19 +0000)]
perf: drop call to pgconn_encoding per query
Cursor._encoding converted to property. It is only used in error
messages and infrequent operations.
Use uniformly the fallback value of utf-8 in *_encoding() functions,
especially when the connection is closed.
Daniele Varrazzo [Tue, 13 Dec 2022 04:04:04 +0000 (04:04 +0000)]
test: fix resource leaking in tests
It results in spurious warnings on ``gc_collect()`` in some innocent test
downstream::
ResourceWarning: unclosed <socket.socket fd=14,
family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0>
Daniele Varrazzo [Tue, 13 Dec 2022 03:05:39 +0000 (03:05 +0000)]
test: ignore error looking for leaks
The leaks counter frequently reports a leak between run 1 and 2 of the
tests. It turns out to be a Decimal Context whose items() method reports
no content. So the problem is related to Python, not psycopg, and it is
not an unbound leak.
Can't reproduce it in CI, but it happens on my laptop, since switching
to Ubuntu 22.04 with Python 3.10.
Daniele Varrazzo [Tue, 13 Dec 2022 04:25:46 +0000 (04:25 +0000)]
fix: don't re-export TypeAlias from _compat module
Pyright special-cases that type and requires to import it from typing or
typing_extensions only (see https://github.com/microsoft/pyright/issues/4197).
Drop conditional dependency on typing_extension and always import
TypeAlias from there.
Fix #439.
Daniele Varrazzo [Mon, 12 Dec 2022 14:41:54 +0000 (14:41 +0000)]
docs: fix ticket number in news file
Daniele Varrazzo [Mon, 12 Dec 2022 14:40:52 +0000 (14:40 +0000)]
Merge branch 'wait-select'
Daniele Varrazzo [Mon, 12 Dec 2022 14:39:48 +0000 (14:39 +0000)]
docs: report select speedup in news file
Close #411.
Daniele Varrazzo [Sun, 11 Dec 2022 20:25:12 +0000 (20:25 +0000)]
perf(c): add fast-call Cython function to PQflush wrapper
Daniele Varrazzo [Sun, 11 Dec 2022 19:48:32 +0000 (19:48 +0000)]
perf(c): small optimization tweaks to wait_c
Daniele Varrazzo [Tue, 1 Nov 2022 23:38:50 +0000 (00:38 +0100)]
test: skip high fd number test on Windows
Windows is pretty simple in regards of the wait function, because it only
implement select, and it doesn't have the same limit of the Unix select.
However this test sometimes fails in weird ways: on the pgconn.socket >
1024 assert, for instance. So, let's just skip it.
Daniele Varrazzo [Tue, 1 Nov 2022 22:39:22 +0000 (23:39 +0100)]
test: allow choosing a wait function using the PSYCOPG_WAIT_FUNC env var
We won't make this public yet, possibly we never will (I think we are
the people responsible for this choice), but it might be useful for
testing.
Daniele Varrazzo [Sat, 29 Oct 2022 23:37:01 +0000 (01:37 +0200)]
perf(c): use poll() instead of select() for waiting, where available
Daniele Varrazzo [Sat, 29 Oct 2022 10:27:10 +0000 (12:27 +0200)]
fix(c): guard select() from high number file descriptors
The Python `select.select()` wrapper raises ValueError. Without a guard,
the C `wait_select()` segfaults. The C way to say you have been naughty.
On Windows this seems not only not needed, but it actually stops from creating
any connection at all.
Daniele Varrazzo [Wed, 26 Oct 2022 01:02:14 +0000 (03:02 +0200)]
fix(c): allow wait_select() to be interrupted by signals
Daniele Varrazzo [Tue, 25 Oct 2022 21:14:58 +0000 (23:14 +0200)]
fix(c): fix import on Windows
Daniele Varrazzo [Tue, 25 Oct 2022 20:31:11 +0000 (22:31 +0200)]
perf(c): add C version of select waiting function
'Wait' and 'Ready' enums moved into the '_enums' module to avoid a
circular import.