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
* fix integer overflow for oids > 2^31 #630
Conversation
Ouch! Nice catch! I suppose it's not easy to create entries in the catalog to write regression tests for this problem, right? Yes, the fix will be definitely backported to the next 3.1.x. Your procedure for proposing the fix is more or less correct. Usually you would create a branch with your fix, but I can use your commit and leave attribution to you this way too. You would also add an entry to the |
Merged, thank you! |
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 > 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>
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 > 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>
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 > 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>
In the current production release of psycopg3 (3.1.10), when a database has user defined types for which the assigned oid is > 2^31, the below stack trace is produced when processing rows which contain columns of said type:
This appears to be due to the incorrect use of (signed) int for the
__cinit__
oid parameter. Changing this to libpq.Oid (alias for unsigned int which is what the oid type is documented as in the official postgres documentation) fixes the issue.https://www.postgresql.org/docs/current/datatype-oid.html
The oid type is currently implemented as an unsigned four-byte integer.
Please advise if this can be merged for future releases, as well as into any 3.1.x maintenance release, and thanks for the great work on psycopg3!
I could not find documentation on how to submit this report and fix, so I forked the repo and am opening this PR.