fix(db): skip orphaned sequences in resynchronizeDatabaseSequences - #58762
fix(db): skip orphaned sequences in resynchronizeDatabaseSequences#58762boris324 wants to merge 1 commit into
Conversation
When converting a database to PostgreSQL via `occ db:convert-type`,
the sequence resynchronization crashes on orphaned sequences that
no longer have an associated column (e.g. after autoincrement was
removed via dropAutoincrementColumn in a migration).
The query against information_schema.columns returns no row for
these sequences, and the code tried to access fields on a `false`
result, producing malformed SQL like:
SELECT setval('...', (SELECT MAX() FROM ))
Skip sequences with no matching column. Also handle empty tables
where MAX returns NULL, and use schema-qualified table names.
Fixes nextcloud#58715
|
Hello there, We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process. Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6 Thank you for contributing to Nextcloud and we hope to hear from you soon! (If you believe you should not receive this message, you can add yourself to the blocklist.) |
|
Is this PR finished? |
|
I can confirm that this fixed the problem for me and allowed me to complete the MariaDB to Postrgres coversion. |
|
I can confirm this patch solves issues with: In a DB conversion from MariaDB to Postrgres Commands used:
then
on a custom install of docker |
|
Thanks for the fix! |
Fixes #58715
Orphaned PostgreSQL sequences (left behind after
dropAutoincrementColumnin migrations likeVersion33000Date20251023110529) crashocc db:convert-typewith:The
information_schema.columnslookup returns no row for these sequences, and the code accessed fields on thefalseresult.Changes: