Skip to content

fix: prevent crash when opening Oracle views with LONG columns#614

Closed
datlechin wants to merge 1 commit intomainfrom
fix/oracle-view-long-column-crash
Closed

fix: prevent crash when opening Oracle views with LONG columns#614
datlechin wants to merge 1 commit intomainfrom
fix/oracle-view-long-column-crash

Conversation

@datlechin
Copy link
Copy Markdown
Member

Summary

  • OracleNIO (v1.0.0-rc.4) crashes with EXC_BREAKPOINT in OracleBackendMessageDecoder.decode when decoding LONG/LONG RAW column data — this is an unrecoverable precondition failure
  • Many Oracle system views contain LONG columns, so clicking any such view crashes the app
  • Detect SELECT * queries in OraclePlugin.execute(), pre-fetch column metadata from ALL_TAB_COLUMNS, and rewrite to an explicit column list replacing LONG/LONG RAW with NULL AS "col"
  • Cache unsafe column names per table so buildBrowseQuery/buildFilteredQuery also exclude them on subsequent pagination/sorting/filtering
  • Thread-safe cache access via NSLock, uppercase-normalized column matching, fast-path skip for non-* queries

Closes #564

Test plan

  • Connect to Oracle (e.g. gvenzl/oracle-free container)
  • Click a system view that has LONG columns (e.g. ALL_VIEWS, ALL_TAB_COLUMNS) — should open without crash
  • Click a regular table — should open normally (no performance regression)
  • Paginate/sort/filter on a view with LONG columns — should work without crash
  • Verify LONG columns show NULL values in the data grid

OracleNIO crashes (EXC_BREAKPOINT) when decoding LONG/LONG RAW column
data. Detect SELECT * queries, pre-fetch column metadata, and replace
* with explicit columns excluding unsafe types.

Closes #564
@datlechin datlechin closed this Apr 7, 2026
@datlechin datlechin deleted the fix/oracle-view-long-column-crash branch April 7, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

opening an oracle view crashes

1 participant