Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Excessive CPU usage on Windows #645

Open
dvarrazzo opened this issue Sep 19, 2023 · 0 comments
Open

Excessive CPU usage on Windows #645

dvarrazzo opened this issue Sep 19, 2023 · 0 comments
Labels
Windows The issue is related to Windows support

Comments

@dvarrazzo
Copy link
Member

Reported in the mailing list by David Raymond:


I've noticed that CPU usage for queries seems to have drastically increased going from psycopg2 to psycopg3.

In psycopg2 a connection would sit quietly while waiting for the results, using next to no CPU.
In psycopg it looks like the threads are using their core at full power, continuously checking for the result as fast as possible, and never sleeping or relaxing.

See below for a simple example script. During the psycopg2 part while the 8 threads are waiting on results my processor usage sits at the normal idling 2-3%. But in the psycopg3 part, while the 8 threads are waiting on results my processor usage jumps up to 62-63% or so.

Is there a setting or configuration I'm missing?
This is on Windows, where I install with "pip install psycopg2-binary" and "pip install psycopg[binary]"
Current versions shown by pip list:
psycopg 3.1.10 (This gets installed even when telling it to install psycopg[binary])
psycopg-binary 3.1.10
psycopg2-binary 2.9.7

And their reported .version
psycopg.version: 3.1.10
psycopg2.version: 2.9.7 (dt dec pq3 ext lo64)

I've got several scripts where I open up multiple connections to multiple servers and run a number of queries on them, where 98% of my machine's time should be just relaxing and waiting for the server to finish the next 1 to 15 minute long query. I don't need to continue the very microsecond the query completes. Is there anything I can do to bring CPU usage back down with psycopg (3) ?

Thank you,

import sys
import threading


import psycopg
import psycopg2


def connectAndRunSleep3():
    conn = psycopg.connect(host = "localhost", dbname = "...", user = "...", password = "...", autocommit = True)
    with conn.cursor() as cur:
        cur.execute("select pg_sleep(15);")
    conn.close()


def connectAndRunSleep2():
    conn = psycopg2.connect(host = "localhost", dbname = "...", user = "...", password = "...")
    conn.autocommit = True
    with conn.cursor() as cur:
        cur.execute("select pg_sleep(15);")
    conn.close()


if __name__ == "__main__":
    print("Python version:", sys.version)
    print("psycopg.__version__:", psycopg.__version__)
    print("psycopg2.__version__:", psycopg2.__version__)
    
    numThreads = 8
    
    print("Check your CPU usage during this run")
    
    print(f"Querying with {numThreads:,d} threads in psycopg2...")
    threads = []
    for n in range(numThreads):
        thread = threading.Thread(target = connectAndRunSleep2)
        threads.append(thread)
        thread.start()
    for thread in threads:
        thread.join()
    print("All joined.")
    
    print(f"Querying with {numThreads:,d} threads in psycopg3...")
    threads = []
    for n in range(numThreads):
        thread = threading.Thread(target = connectAndRunSleep3)
        threads.append(thread)
        thread.start()
    for thread in threads:
        thread.join()
    print("All joined.")

The slowness appears related to the wait_c function on Windows, because it was reproduced with 3.1.5 but not 3.1.4.

Couldn't reproduce the issue on Linux, will need a Windows machine.

As a stop-gap measure, next 3.1.11 will be released using wait_select on Windows instead.

@dvarrazzo dvarrazzo added the Windows The issue is related to Windows support label Sep 19, 2023
dvarrazzo added a commit that referenced this issue Sep 19, 2023
The function was reported to use excessive CPU. Need to investigate,
however, for the moment, suspend its usage on Windows.

See #645.
dvarrazzo added a commit that referenced this issue Sep 21, 2023
The function was reported to use excessive CPU. Need to investigate,
however, for the moment, suspend its usage on Windows.

See #645.
dvarrazzo added a commit that referenced this issue Sep 21, 2023
The function was reported to use excessive CPU. Need to investigate,
however, for the moment, suspend its usage on Windows.

See #645.
github-merge-queue bot pushed a commit to microsoft/semantic-kernel that referenced this issue Oct 4, 2023
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.10 to
3.1.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's
changelog</a>.</em></p>
<blockquote>
<p>.. currentmodule:: psycopg</p>
<p>.. index::
single: Release notes
single: News</p>
<h1><code>psycopg</code> release notes</h1>
<h2>Future releases</h2>
<p>Psycopg 3.2 (unreleased)
^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Add support for integer, floating point, boolean <code>NumPy scalar
types</code>__

(:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li>
<li>Add :ref:<code>raw-query-cursors</code> to execute queries using
placeholders in
PostgreSQL format (<code>$1</code>, <code>$2</code>...)
(🎫<code>[#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li>
<li>Add support for libpq functions to close prepared statements and
portals
introduced in libpq v17
(:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li>
<li>Disable receiving more than one result on the same cursor in
pipeline mode,
to iterate through <code>~Cursor.nextset()</code>. The behaviour was
different than
in non-pipeline mode and not totally reliable
(:ticket:<code>[#604](https://github.com/psycopg/psycopg/issues/604)</code>).
The <code>Cursor</code> now only preserves the results set of the last
<code>~Cursor.execute()</code>, consistently with non-pipeline
mode.</li>
</ul>
<p>.. __: <a
href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p>
<h2>Current release</h2>
<p>Psycopg 3.1.12
^^^^^^^^^^^^^^</p>
<ul>
<li>Fix possible hanging if a connection is closed while querying
(:ticket:<code>[#608](https://github.com/psycopg/psycopg/issues/608)</code>).</li>
<li>Fix memory leak when <code>~register_*()</code> functions are called
repeatedly

(:ticket:<code>[#647](https://github.com/psycopg/psycopg/issues/647)</code>).</li>
</ul>
<p>Psycopg 3.1.11
^^^^^^^^^^^^^^</p>
<ul>
<li>Avoid caching the parsing results of large queries to avoid
excessive memory
usage
(:ticket:<code>[#628](https://github.com/psycopg/psycopg/issues/628)</code>).</li>
<li>Fix integer overflow in C/binary extension with OID &gt; 2^31
(:ticket:<code>[#630](https://github.com/psycopg/psycopg/issues/630)</code>).</li>
<li>Fix loading of intervals with days and months or years
(:ticket:<code>[#643](https://github.com/psycopg/psycopg/issues/643)</code>).</li>
<li>Work around excessive CPU usage on Windows (reported in
:ticket:<code>[#645](https://github.com/psycopg/psycopg/issues/645)</code>).</li>
<li>Fix building on Solaris and derivatives
(:ticket:<code>[#632](https://github.com/psycopg/psycopg/issues/632)</code>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psycopg/psycopg/commit/5498bb85c62cbe71da16731e9f25e8727a098c80"><code>5498bb8</code></a>
chore: bump psycopg package version to 3.1.12</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b4b8ceb32da7f182ba0e3e0e81d692ce604b15cb"><code>b4b8ceb</code></a>
Merge branch 'fix-608' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/ae43e63400dc7366dde1e26d689cff69238c7d2c"><code>ae43e63</code></a>
fix: use poll() instead of epoll() for waiting</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/8b564e8f2539e6accaa853ec80636ab0d2d53de1"><code>8b564e8</code></a>
fix: don't hang forever if async connection is closed while
querying</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b3e0be9869257cfa9602608caee4ebe96148f63f"><code>b3e0be9</code></a>
fix: don't raise spurious errors on cancel if the connection is
closed</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/125f93c852cf9a0c4158fe45f162b3b420568a8e"><code>125f93c</code></a>
ci(scaleway_m1): add list command and jq pretty output</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/87dc783af3e744fb6dc411794f9efb627b9a7d1e"><code>87dc783</code></a>
chore(crdb): test 23.1 in CI</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/dbddfc5d3f567cb291b6f98868a97de9ec40d153"><code>dbddfc5</code></a>
Merge branch 'fix-647' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/4137dedad1e2e9078562bbb1ad5fff1b7ef640ed"><code>4137ded</code></a>
fix: cache all dynamically generated adapter types</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/d7eea4989766ea92b0d7d51559ff11779ff3b872"><code>d7eea49</code></a>
fix: cache dynamic adapters created in register_array()</li>
<li>Additional commits viewable in <a
href="https://github.com/psycopg/psycopg/compare/3.1.10...3.1.12">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=psycopg&package-manager=pip&previous-version=3.1.10&new-version=3.1.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
github-merge-queue bot pushed a commit to microsoft/semantic-kernel that referenced this issue Oct 4, 2023
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.10 to
3.1.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's
changelog</a>.</em></p>
<blockquote>
<p>.. currentmodule:: psycopg</p>
<p>.. index::
single: Release notes
single: News</p>
<h1><code>psycopg</code> release notes</h1>
<h2>Future releases</h2>
<p>Psycopg 3.2 (unreleased)
^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Add support for integer, floating point, boolean <code>NumPy scalar
types</code>__

(:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li>
<li>Add :ref:<code>raw-query-cursors</code> to execute queries using
placeholders in
PostgreSQL format (<code>$1</code>, <code>$2</code>...)
(🎫<code>[#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li>
<li>Add support for libpq functions to close prepared statements and
portals
introduced in libpq v17
(:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li>
<li>Disable receiving more than one result on the same cursor in
pipeline mode,
to iterate through <code>~Cursor.nextset()</code>. The behaviour was
different than
in non-pipeline mode and not totally reliable
(:ticket:<code>[#604](https://github.com/psycopg/psycopg/issues/604)</code>).
The <code>Cursor</code> now only preserves the results set of the last
<code>~Cursor.execute()</code>, consistently with non-pipeline
mode.</li>
</ul>
<p>.. __: <a
href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p>
<h2>Current release</h2>
<p>Psycopg 3.1.12
^^^^^^^^^^^^^^</p>
<ul>
<li>Fix possible hanging if a connection is closed while querying
(:ticket:<code>[#608](https://github.com/psycopg/psycopg/issues/608)</code>).</li>
<li>Fix memory leak when <code>~register_*()</code> functions are called
repeatedly

(:ticket:<code>[#647](https://github.com/psycopg/psycopg/issues/647)</code>).</li>
</ul>
<p>Psycopg 3.1.11
^^^^^^^^^^^^^^</p>
<ul>
<li>Avoid caching the parsing results of large queries to avoid
excessive memory
usage
(:ticket:<code>[#628](https://github.com/psycopg/psycopg/issues/628)</code>).</li>
<li>Fix integer overflow in C/binary extension with OID &gt; 2^31
(:ticket:<code>[#630](https://github.com/psycopg/psycopg/issues/630)</code>).</li>
<li>Fix loading of intervals with days and months or years
(:ticket:<code>[#643](https://github.com/psycopg/psycopg/issues/643)</code>).</li>
<li>Work around excessive CPU usage on Windows (reported in
:ticket:<code>[#645](https://github.com/psycopg/psycopg/issues/645)</code>).</li>
<li>Fix building on Solaris and derivatives
(:ticket:<code>[#632](https://github.com/psycopg/psycopg/issues/632)</code>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psycopg/psycopg/commit/5498bb85c62cbe71da16731e9f25e8727a098c80"><code>5498bb8</code></a>
chore: bump psycopg package version to 3.1.12</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b4b8ceb32da7f182ba0e3e0e81d692ce604b15cb"><code>b4b8ceb</code></a>
Merge branch 'fix-608' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/ae43e63400dc7366dde1e26d689cff69238c7d2c"><code>ae43e63</code></a>
fix: use poll() instead of epoll() for waiting</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/8b564e8f2539e6accaa853ec80636ab0d2d53de1"><code>8b564e8</code></a>
fix: don't hang forever if async connection is closed while
querying</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b3e0be9869257cfa9602608caee4ebe96148f63f"><code>b3e0be9</code></a>
fix: don't raise spurious errors on cancel if the connection is
closed</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/125f93c852cf9a0c4158fe45f162b3b420568a8e"><code>125f93c</code></a>
ci(scaleway_m1): add list command and jq pretty output</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/87dc783af3e744fb6dc411794f9efb627b9a7d1e"><code>87dc783</code></a>
chore(crdb): test 23.1 in CI</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/dbddfc5d3f567cb291b6f98868a97de9ec40d153"><code>dbddfc5</code></a>
Merge branch 'fix-647' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/4137dedad1e2e9078562bbb1ad5fff1b7ef640ed"><code>4137ded</code></a>
fix: cache all dynamically generated adapter types</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/d7eea4989766ea92b0d7d51559ff11779ff3b872"><code>d7eea49</code></a>
fix: cache dynamic adapters created in register_array()</li>
<li>Additional commits viewable in <a
href="https://github.com/psycopg/psycopg/compare/3.1.10...3.1.12">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=psycopg&package-manager=pip&previous-version=3.1.10&new-version=3.1.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
SOE-YoungS pushed a commit to SOE-YoungS/semantic-kernel that referenced this issue Nov 1, 2023
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.10 to
3.1.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's
changelog</a>.</em></p>
<blockquote>
<p>.. currentmodule:: psycopg</p>
<p>.. index::
single: Release notes
single: News</p>
<h1><code>psycopg</code> release notes</h1>
<h2>Future releases</h2>
<p>Psycopg 3.2 (unreleased)
^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Add support for integer, floating point, boolean <code>NumPy scalar
types</code>__

(:ticket:<code>[microsoft#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li>
<li>Add :ref:<code>raw-query-cursors</code> to execute queries using
placeholders in
PostgreSQL format (<code>$1</code>, <code>$2</code>...)
(🎫<code>[microsoft#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li>
<li>Add support for libpq functions to close prepared statements and
portals
introduced in libpq v17
(:ticket:<code>[microsoft#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li>
<li>Disable receiving more than one result on the same cursor in
pipeline mode,
to iterate through <code>~Cursor.nextset()</code>. The behaviour was
different than
in non-pipeline mode and not totally reliable
(:ticket:<code>[microsoft#604](https://github.com/psycopg/psycopg/issues/604)</code>).
The <code>Cursor</code> now only preserves the results set of the last
<code>~Cursor.execute()</code>, consistently with non-pipeline
mode.</li>
</ul>
<p>.. __: <a
href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p>
<h2>Current release</h2>
<p>Psycopg 3.1.12
^^^^^^^^^^^^^^</p>
<ul>
<li>Fix possible hanging if a connection is closed while querying
(:ticket:<code>[microsoft#608](https://github.com/psycopg/psycopg/issues/608)</code>).</li>
<li>Fix memory leak when <code>~register_*()</code> functions are called
repeatedly

(:ticket:<code>[microsoft#647](https://github.com/psycopg/psycopg/issues/647)</code>).</li>
</ul>
<p>Psycopg 3.1.11
^^^^^^^^^^^^^^</p>
<ul>
<li>Avoid caching the parsing results of large queries to avoid
excessive memory
usage
(:ticket:<code>[microsoft#628](https://github.com/psycopg/psycopg/issues/628)</code>).</li>
<li>Fix integer overflow in C/binary extension with OID &gt; 2^31
(:ticket:<code>[microsoft#630](https://github.com/psycopg/psycopg/issues/630)</code>).</li>
<li>Fix loading of intervals with days and months or years
(:ticket:<code>[microsoft#643](https://github.com/psycopg/psycopg/issues/643)</code>).</li>
<li>Work around excessive CPU usage on Windows (reported in
:ticket:<code>[microsoft#645](https://github.com/psycopg/psycopg/issues/645)</code>).</li>
<li>Fix building on Solaris and derivatives
(:ticket:<code>[microsoft#632](https://github.com/psycopg/psycopg/issues/632)</code>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psycopg/psycopg/commit/5498bb85c62cbe71da16731e9f25e8727a098c80"><code>5498bb8</code></a>
chore: bump psycopg package version to 3.1.12</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b4b8ceb32da7f182ba0e3e0e81d692ce604b15cb"><code>b4b8ceb</code></a>
Merge branch 'fix-608' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/ae43e63400dc7366dde1e26d689cff69238c7d2c"><code>ae43e63</code></a>
fix: use poll() instead of epoll() for waiting</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/8b564e8f2539e6accaa853ec80636ab0d2d53de1"><code>8b564e8</code></a>
fix: don't hang forever if async connection is closed while
querying</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b3e0be9869257cfa9602608caee4ebe96148f63f"><code>b3e0be9</code></a>
fix: don't raise spurious errors on cancel if the connection is
closed</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/125f93c852cf9a0c4158fe45f162b3b420568a8e"><code>125f93c</code></a>
ci(scaleway_m1): add list command and jq pretty output</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/87dc783af3e744fb6dc411794f9efb627b9a7d1e"><code>87dc783</code></a>
chore(crdb): test 23.1 in CI</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/dbddfc5d3f567cb291b6f98868a97de9ec40d153"><code>dbddfc5</code></a>
Merge branch 'fix-647' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/4137dedad1e2e9078562bbb1ad5fff1b7ef640ed"><code>4137ded</code></a>
fix: cache all dynamically generated adapter types</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/d7eea4989766ea92b0d7d51559ff11779ff3b872"><code>d7eea49</code></a>
fix: cache dynamic adapters created in register_array()</li>
<li>Additional commits viewable in <a
href="https://github.com/psycopg/psycopg/compare/3.1.10...3.1.12">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=psycopg&package-manager=pip&previous-version=3.1.10&new-version=3.1.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Windows The issue is related to Windows support
Projects
None yet
Development

No branches or pull requests

1 participant