pankajkoti opened a new pull request, #74017:
URL: https://github.com/apache/airflow/pull/74017

   ## What
   
   `get_schema` in `SQLToolset` and `DataFusionToolset` returned every column 
of a
   table with no bound. On a table with a few thousand columns that is a
   six-figure-byte tool result, and because an agent calls `get_schema` before 
it
   can write a query, the result enters message history early and its cost is
   re-paid on every later model request. On a several-thousand-column table an
   agent could exhaust its context before issuing a single query, even after
   #71317 bounded the `query` tool.
   
   #71317 deliberately left `get_schema` alone, because the same fix does not
   transfer: column names are the information the agent needs to write SQL, so
   truncating to the first N columns leaves it unable to reference or discover 
the
   rest.
   
   ## How
   
   `get_schema` now mirrors the `query` tool's bounded-output contract:
   
   - It returns a JSON object `{"columns": [{"name", "type"}, ...], 
"column_count":
     N}` instead of a bare list.
   - It accepts an optional `name_contains` substring filter, so the agent can 
ask
     for the columns relevant to its question on a wide table.
   - Above `max_columns` (new constructor argument, default 100) or the existing
     `max_result_bytes` budget, the full list is replaced by a bounded summary:
     `column_count`, a `type_histogram`, a `sample_columns` preview, and
     `truncated` / `truncated_by` / `hint` that name the limit hit and point 
back
     at `name_contains`.
   
   Both toolsets move together. The shared logic lives in `build_schema_result`
   next to `build_query_result` in `query_results.py`. The provider changelog
   records the tool-result shape change, and the toolset docs gain a "Bounded
   schema results" section.
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   - [X] Yes - Claude Code (Opus 4.8)
   
   Generated-by: Claude Code (Opus 4.8) following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   
   ---
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to