fix(output-mapping): clarify column swap validation errors - #562
Merged
Conversation
Contributor
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Co-Authored-By: olena.marchuk <olena.marchuk@keboola.com>
odinuv
force-pushed
the
devin/1787123642-output-mapping-column-swap-error
branch
from
August 27, 2026 19:38
e8fb541 to
e241cad
Compare
odinuv
approved these changes
Aug 27, 2026
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
AbstractTableStructureValidator::validateColumnsName()reported only one half of the mismatch, which made real failures misleading. Production job1325273716failed with:The actual cause was a column swap in the source (one column replaced by another): a column disappeared from the schema, so the counts matched and the new column could not be auto-added. Read literally, the old message points at the added column and hides the blocker.
Both throws now also list
array_diff($tableColumns, $schemaColumnsNames)— the columns that exist in the table but not in the schema — and the swap case explains that renames/replacements are not applied automatically:Note the control flow this relies on: the
does not contain columnsthrow is reachable only when column counts are equal and the diff is non-empty (always a swap), and thesame number of columnsthrow only when the table has columns absent from the schema — so the appended list is never empty. No behaviour change; the missing-columns auto-add path is untouched.Link to Devin session: https://app.devin.ai/sessions/cd95e73b195c46c4abeea2af594577e8
Requested by: @OlenaMarchuk