]>
git.ipfire.org Git - thirdparty/psycopg.git/log
Daniele Varrazzo [Sat, 25 Oct 2025 10:20:35 +0000 (11:20 +0100)]
chore: bump psycopg_pool package version to 3.2.7
Daniele Varrazzo [Sat, 25 Oct 2025 10:19:53 +0000 (11:19 +0100)]
chore: bump psycopg package version to 3.2.12
Daniele Varrazzo [Sat, 25 Oct 2025 10:12:00 +0000 (11:12 +0100)]
Merge pull request #1193 from jerch/fix/no-pinning-copy-text
Daniele Varrazzo [Fri, 24 Oct 2025 14:52:49 +0000 (15:52 +0100)]
docs: add note about fixing the copy pinning issue
Daniele Varrazzo [Fri, 24 Oct 2025 15:09:15 +0000 (16:09 +0100)]
test(copy): cover the Python implementation in copy pinning tests
Jörg Breitbart [Thu, 23 Oct 2025 15:02:25 +0000 (17:02 +0200)]
fix(copy): restore selecting loader for each item
In the copy refactoring released in 3.2.11 we changed the behaviour to
choosing a dumper at the first non-null value per column and keeping it.
Turns out more people than expected rely on the more flexible behaviour
of passing strings or types and letting postgres do the conversion.
Restore the previous behaviour; however it's possible to use
`copy.set_types()` to set dumpers per column and gain something in
performance.
Fix #1192
Daniele Varrazzo [Thu, 23 Oct 2025 15:29:11 +0000 (16:29 +0100)]
ci: enable lint on pull requests
This now matches the tests workflow.
Daniele Varrazzo [Sun, 19 Oct 2025 02:39:42 +0000 (04:39 +0200)]
Merge pull request #1067 from psycopg/sqlalchemy-nullpool
Allow integration of psycopg pool with SQLAlchemy
Daniele Varrazzo [Sat, 18 Oct 2025 15:48:32 +0000 (17:48 +0200)]
fix(pool): more robust placement of reconnection attempts
The problem reported in #1176 is the close recursion already fixed.
However, because we try to reconnect before closing, we end up scheduling
a reconnection attempt for every recursion loop.
The recursion shouldn't happen anymore, but it seems more robust to
reconnect after the connection has been successfully closed, otherwise
we might end up requesting more connections than we ought (hopefully not
as dramatically as here anyway).
bash000000 [Sat, 26 Jul 2025 13:44:49 +0000 (21:44 +0800)]
fix(pool): fix infinite loop with close_returns=True
Close #1124
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 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 [Sat, 18 Oct 2025 03:00:40 +0000 (05:00 +0200)]
Merge branch 'perf/transpose-loading'
Jörg Breitbart [Thu, 16 Oct 2025 00:01:32 +0000 (02:01 +0200)]
perf: load results by row rather than by column
In the past we were converting results to Python tuples proceeding
column by column. The rationale was that certain overhead such as
selecting the loader was to be paid only once per column, not once per
datum.
However this analysis was dismantled in #1163, see especially the comment at
https://github.com/psycopg/psycopg/pull/1163#issuecomment-
3288921422
for some benchmark comparing various conversion strategies. In the end,
the simple row-by-row loading in a single function ends up being more
performing. Performance now surpasses the one of psycopg2.
See also #1155 for an initial analysis of performance regression.
A big thank you to Jörg Breitbart (@jerch) for this improvement!
Daniele Varrazzo [Wed, 15 Oct 2025 11:29:27 +0000 (13:29 +0200)]
Merge pull request #1150 from jerch/fix/binary-copy-rowlevel
fix buffer in binary copy
Daniele Varrazzo [Tue, 14 Oct 2025 00:35:48 +0000 (02:35 +0200)]
refactor: drop copy format code path with buffer creation
The path is unused and leads to more convoluted code.
Jörg Breitbart [Wed, 3 Sep 2025 08:04:04 +0000 (10:04 +0200)]
fix(c): fix copy buffer corruption on dumping error
Restore the buffer so that if we trap the exception and continue in
Python the buffer will not be corrupted.
Improve on the #1147 fix.
Daniele Varrazzo [Tue, 14 Oct 2025 01:41:34 +0000 (03:41 +0200)]
test: add test to reveal the buffer corruption on dump error
Daniele Varrazzo [Tue, 14 Oct 2025 00:12:14 +0000 (02:12 +0200)]
Merge pull request #1158 from jerch/fix/set-types-text
respect set_types in c-version in text format
Daniele Varrazzo [Mon, 13 Oct 2025 13:31:10 +0000 (15:31 +0200)]
docs: mention issue #1153 fix in news file
Daniele Varrazzo [Mon, 13 Oct 2025 13:30:04 +0000 (15:30 +0200)]
fix: consistent error passing a row with mismatched size to copy
Jörg Breitbart [Thu, 4 Sep 2025 14:27:13 +0000 (16:27 +0200)]
fix(c): respect the set_types() definitions in text format
Fix #1153
Daniele Varrazzo [Mon, 13 Oct 2025 12:34:29 +0000 (14:34 +0200)]
ci: enable tests on PR
They shouldn't be duplicated anymore if we develop in private forks of
the repo.
Daniele Varrazzo [Thu, 4 Sep 2025 09:43:03 +0000 (11:43 +0200)]
test: add test to reproduce set_types being ignored
It has been reported ignored in the C implementation in binary format. See #1153
Daniele Varrazzo [Mon, 13 Oct 2025 12:49:59 +0000 (14:49 +0200)]
test: longer sleep to test for idle timeout exception
The test fails semi-regularly on macOS (probably 5% of the times).
Daniele Varrazzo [Mon, 13 Oct 2025 11:05:31 +0000 (13:05 +0200)]
Merge pull request #1141 from wasix-org/fix/poll-rw
Fix polling for read+write
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().
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.
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
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.
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).
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.
Daniele Varrazzo [Sun, 12 Oct 2025 08:20:23 +0000 (10:20 +0200)]
ci: test with PostgreSQL 18 final image
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
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.
Daniele Varrazzo [Sun, 14 Sep 2025 03:40:11 +0000 (05:40 +0200)]
fix: fix return values of wait_poll(), wait_epoll()
Arshia Ghafoori [Wed, 27 Aug 2025 10:26:01 +0000 (14:26 +0400)]
fix(c): fix polling for read+write
Daniele Varrazzo [Mon, 13 Oct 2025 01:24:33 +0000 (03:24 +0200)]
Merge branch 'bump-libs'
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.
Daniele Varrazzo [Sat, 11 Oct 2025 01:51:08 +0000 (03:51 +0200)]
ci: use the system version of the cyrus-sasl library
Version 2.1.28 cannot be built in the manylinux_2_28 image, likely because of
https://github.com/cyrusimap/cyrus-sasl/issues/844.
We were building it to work around an i686 problem, but now we are not
building those images anymore, so let's try to use the packaged version.
Daniele Varrazzo [Fri, 10 Oct 2025 22:27:02 +0000 (00:27 +0200)]
ci: build aarch64 packages using manylinux_2_28 image
Daniele Varrazzo [Fri, 10 Oct 2025 13:06:06 +0000 (15:06 +0200)]
chore(binary): bump packaged versions of libpq, OpenSSL
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>
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>
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
Daniele Varrazzo [Mon, 6 Oct 2025 09:01:54 +0000 (11:01 +0200)]
docs: installation docs cleanup
Note that the pure Python module is slower - apparently not obvious
enough.
Make the "editable mode strict" option looking not optional, as the
issue doesn't seem to be solved any time soon.
Various grammar and presentation improvements.
Daniele Varrazzo [Sat, 4 Oct 2025 16:46:17 +0000 (18:46 +0200)]
docs: drop `pq.error_message()` function from public docs
There should be no need for this function to be used by end users.
Daniele Varrazzo [Sat, 4 Oct 2025 16:33:40 +0000 (18:33 +0200)]
docs: document the package to install in the "from psycopg2" page
See #1156.
Daniele Varrazzo [Sat, 13 Sep 2025 13:54:11 +0000 (15:54 +0200)]
chore: have a scrap directory where to put work scripts light on myoy
Daniele Varrazzo [Tue, 16 Sep 2025 00:07:42 +0000 (02:07 +0200)]
Merge pull request #1149 from psycopg/fix/binary-copy
Fix binary copy
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.
Daniele Varrazzo [Mon, 1 Sep 2025 15:22:34 +0000 (17:22 +0200)]
fix(c): fix excessive buffer allocation in binary copy
Fix #1147
Daniele Varrazzo [Fri, 12 Sep 2025 15:18:37 +0000 (17:18 +0200)]
chore: bump mypy, remove a now unneeded ignore
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
Daniele Varrazzo [Fri, 12 Sep 2025 15:13:38 +0000 (17:13 +0200)]
chore(ci): bump crdb test versions
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.
Daniele Varrazzo [Thu, 11 Sep 2025 10:26:41 +0000 (12:26 +0200)]
Merge pull request #1166 from psycopg/fix-builtin-dumper-loader
Don't raise a warning using a builtin for JSON dumps/loads
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.
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.
Daniele Varrazzo [Tue, 9 Sep 2025 00:03:50 +0000 (02:03 +0200)]
docs: add simple example of identifier binding with t-strings
Daniele Varrazzo [Mon, 8 Sep 2025 22:14:41 +0000 (00:14 +0200)]
chore: bump psycopg package version to 3.3.0.dev2
Daniele Varrazzo [Mon, 8 Sep 2025 22:13:50 +0000 (00:13 +0200)]
docs: mention version 3.3.0.dev1 download link in template string page
Daniele Varrazzo [Mon, 8 Sep 2025 11:06:44 +0000 (13:06 +0200)]
fix: typo in notifications warning
Daniele Varrazzo [Mon, 8 Sep 2025 15:29:24 +0000 (17:29 +0200)]
Merge pull request #1054 from psycopg/template-strings
Add template strings support.
Daniele Varrazzo [Sun, 25 May 2025 22:22:13 +0000 (23:22 +0100)]
docs: add template strings query documentation
Daniele Varrazzo [Sun, 25 May 2025 19:20:26 +0000 (20:20 +0100)]
feat: implement template strings
Daniele Varrazzo [Tue, 29 Apr 2025 20:32:18 +0000 (22:32 +0200)]
feat: add typing support for template strings
Daniele Varrazzo [Sun, 25 May 2025 18:50:19 +0000 (19:50 +0100)]
refactor(query): add private method to convert to bytes
Daniele Varrazzo [Tue, 29 Apr 2025 22:00:09 +0000 (00:00 +0200)]
refactor: move PostgresRawQuery to _queries module
Daniele Varrazzo [Tue, 29 Apr 2025 17:04:50 +0000 (19:04 +0200)]
test: add module to test with template strings
Skip module collection on Python version which don't support the syntax.
Daniele Varrazzo [Tue, 29 Apr 2025 17:09:18 +0000 (19:09 +0200)]
chore: exclude linters run on tstring test module
Currently the tooling doesn't support the syntax yet.
Daniele Varrazzo [Sun, 7 Sep 2025 14:16:30 +0000 (16:16 +0200)]
ci: switch to windows-2025 runners
Daniele Varrazzo [Sun, 7 Sep 2025 15:44:54 +0000 (17:44 +0200)]
chore: bump psycopg package version to 3.2.10
Daniele Varrazzo [Sun, 7 Sep 2025 15:41:32 +0000 (17:41 +0200)]
chore: isort
Daniele Varrazzo [Sun, 7 Sep 2025 14:09:39 +0000 (16:09 +0200)]
Merge pull request #1139 from psycopg/gssencmode-disable
Set gssencmode default to disable in binary package builds
Daniele Varrazzo [Tue, 26 Aug 2025 11:22:12 +0000 (13:22 +0200)]
ci: use separate build caches between psycopg 3.2 and 3.3
Introduce a suffix to change the cache key arbitrarily, to keep libpq
builds on different branches separate and not pollute each other's
cache.
Daniele Varrazzo [Tue, 26 Aug 2025 02:47:57 +0000 (04:47 +0200)]
fix: change default gssencmode to disable in built libpq
Fix #1136
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'.
Note: the warning in psycopg 3.3 is a runtime warning; in 3.2.x was a
deprectation warning.
See #1136
Daniele Varrazzo [Sun, 7 Sep 2025 14:05:58 +0000 (16:05 +0200)]
chore: restrict flake8 ignore on generated file to lines length only
Daniele Varrazzo [Sun, 7 Sep 2025 13:53:56 +0000 (15:53 +0200)]
Merge branch 'pg18'
Daniele Varrazzo [Sat, 5 Jul 2025 12:54:39 +0000 (14:54 +0200)]
feat: add `ConnectionInfo.full_protocol_version`
Add matching Capabilities methods too to allow checking if supported.
Daniele Varrazzo [Sat, 5 Jul 2025 11:50:02 +0000 (13:50 +0200)]
feat: add PGconn.full_protocol_version attributes
Wrap libpq 18 PQfullProtocolVersion functions.
See #1079
Daniele Varrazzo [Sun, 11 May 2025 20:50:58 +0000 (22:50 +0200)]
docs: mention PostgreSQL v18 support
Daniele Varrazzo [Sun, 7 Sep 2025 11:46:57 +0000 (13:46 +0200)]
ci: add PostgreSQL 18 to the test grid
Daniele Varrazzo [Sun, 11 May 2025 20:48:26 +0000 (22:48 +0200)]
chore: add PostgreSQL 18 exceptions
Daniele Varrazzo [Sun, 11 May 2025 20:43:00 +0000 (22:43 +0200)]
fix: add ConnStatus.CONNECTION_AUTHENTICATING value
Introduced in PostgreSQL 18
Daniele Varrazzo [Sun, 7 Sep 2025 11:42:25 +0000 (13:42 +0200)]
Merge branch 'fix-notifies-leak'
Daniele Varrazzo [Sat, 6 Sep 2025 21:44:42 +0000 (23:44 +0200)]
docs: document the changes to notifies generator
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
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.
Daniele Varrazzo [Sat, 6 Sep 2025 20:22:46 +0000 (22:22 +0200)]
Merge branch 'fix-executemany-lock'
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.
Daniele Varrazzo [Fri, 5 Sep 2025 23:57:52 +0000 (01:57 +0200)]
refactor: auto-generate sync pipeline object from async one
Daniele Varrazzo [Fri, 5 Sep 2025 23:48:48 +0000 (01:48 +0200)]
refactor: separate sync/async pipeline in their own modules
Daniele Varrazzo [Sat, 6 Sep 2025 00:21:22 +0000 (02:21 +0200)]
refactor: introduce ALock/Lock in acompat
jerch [Sat, 6 Sep 2025 14:47:31 +0000 (16:47 +0200)]
fix: fix excessive buffer resizing on int16 dump
Fix #1160