Repository navigation
MIT-618: add the mloda duckdb 2.0 join-alias GitHub task (batch 7) - #169
Merged
Merged
Conversation
MIT-618 batch 7: mloda-ai/mloda#2405, append_columns on DuckDB 2.0, where an input alias stops resolving after order() starts a new SELECT. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y
…error MIT-618 batch 7 review: the alias phrases restated the binder error and a re-aliasing workaround says "new select", so the cause words are now bindstatement, bind statement, starts/started a new select, and 2.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y
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.
What changed
tools/eval/github_tasks.pygets 1 more verified GitHub task, for 7 in all. Zach wants 20, so this is well short. I stopped at the turn budget and kept the bar where it was.upstream_changegh-mloda-duckdb-join-aliasduckdb-2.0-join-alias-after-new-selectupstream_changekeys (polars join order and this one).0eeca76, authored and committed 2026-10-20. That is after the June 2026 cutoff and one day before the 2.0.0 release.base_commitis the squash commit's only parent,b407188.uv pip install --exclude-newer=... -e .[duckdb], then theduckdb==2.0.0andpytest==9.1.1pins. The.venvis 219 MB, mostly pyarrow and duckdb. That is slightly over the 200 MB guideline. It is in the same range as the polars tasks, and the record's comment says so.append_columnsprojects the row number out of the join before ordering, instead of ordering the joined relation by"__l__".<rn>.relation_test_mixin.pyis laid over, but only the new test runs (test_append_columns_keeps_column_and_row_order).__len__calling the removedfetchone(), is left out, because its error names its own fix (rel.limit(1).fetchall()).len()also fail at the base for that reason, but they are not intest_command.Base failing output (containerized)
Key lines:
The traceback ends in duckdb's
guardedwrapper (duckdb/_relation.py).The runs went through a
.scratch/helper that callsrepos.materialize,repos.prepareandrepos.run_testswithcontainer.run, the same stepsagent_eval.py checkruns. Containers ran one at a time, none were left behind, and--on-hostwas never used.Cause-word checks
bindstatementbind statementstarts a new selectstarted a new select2.02.0are non-version words.2.0is already in the expected version set, so there are no new version words.alias stops resolving,alias no longer resolves,drops the join aliasand the like): they restate the binder error. A fix that only re-aliases would say "the__l__alias no longer resolves".new select: a workaround says "wrap the join in a new SELECT".aliaswas never a cause word: the laid-over mixin has a whole "Alias" section, and the base source usesset_alias.bind statementdoesn't match "Binder Error"; barebindwould.starts a new selectneeds its final "s", so "start a new select" in a fix doesn't match.mentions(re-run for the new words on a fresh containerized base run) against:relation_test_mixin.pyat the fix sha (334 lines);duckdb_relation.pyandsql_base_relation.py(git show b407188:...from the repo cache);append_columns,Referenced table,BinderException,Binder Error), in both directions;append_columns,append_column,_select_ordered,guarded,__len__,order,project,joinand the test's name...._keeps_column_and_row_order) describes only the behaviour. The fix's source comment states the cause ("DuckDB 2.0 drops the join aliases once order() is applied"), but the agent never sees the fix tree.Rejected candidates (this batch)
execute()result blocks relation reads): the fix changes only a test, CI, tox and docs.Series.mapon an empty str selection keeps the str dtype):_cast_pointwise_resultinExtensionArray.map"), merged 2026-04-16, before the cutoff.itertuplesover no columns): the fix changes no test.random_lobster's removal was deprecated earlier.From the brief and PRs #164, #165, #167 and #168: not re-checked.
Why
Ticket: MIT-618 (batch 7), the GitHub-task eval. These are real post-cutoff tasks for the arms run.
How it was tested
server/tests/test_eval_grader.pyandserver/tests/test_eval_repos.pypass.make checkpasses after mergingorigin/feature/eval-setup(already up to date).Learned
BEHAVIOR.mdholds the full list. It is a good map for duckdb 2.0 mining beyond the result-API removals: aliases after a new SELECT, bare strings as values, lazy parameterisedsql(),distinct().project(), filter after limit, andquery()leaving no view.fetchone()/fetchmany()removal errors name their own fix ("Use rel.limit(1).fetchall() instead"). When a fix PR mixes that with a subtler break, run only the subtler test.ExtensionArray.mapkeeping the Arrow/str dtype (pandas#64801) merged 2026-04-16, so its downstream breaks don't qualify.-e .[duckdb]installs about 219 MB (pyarrow and duckdb), slightly over the 200 MB guideline.🤖 Generated with Claude Code
https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y