Skip to content

refactor(mdb): use safe conn.prepare() for infer_schema#88

Merged
lewiszlw merged 2 commits into
masterfrom
refactor/mdb-infer-schema-safe-prepare
Jun 22, 2026
Merged

refactor(mdb): use safe conn.prepare() for infer_schema#88
lewiszlw merged 2 commits into
masterfrom
refactor/mdb-infer-schema-safe-prepare

Conversation

@lewiszlw

Copy link
Copy Markdown
Member

Summary

Replace the manual unsafe ODBC statement lifecycle in MdbConnection::infer_schema with odbc-api's safe Connection::prepare() API.

Before

let pre = conn.preallocate()?;
let mut stmt = pre.into_handle();
let sql_text = SqlText::new(&sql);
stmt.prepare(&sql_text)?;
unsafe { stmt.execute() }?;
let cursor = unsafe { CursorImpl::new(stmt) };
let remote_schema = Arc::new(build_remote_schema(cursor)?);

After

let mut prepared = conn.prepare(&sql)?;
let remote_schema = Arc::new(build_remote_schema(&mut prepared)?);

Prepared implements ResultSetMetadata and AsStatementRef, so column metadata is available directly after prepare — no execute or cursor needed.

@lewiszlw lewiszlw merged commit c9f2c98 into master Jun 22, 2026
@lewiszlw lewiszlw deleted the refactor/mdb-infer-schema-safe-prepare branch June 22, 2026 03:26
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.

1 participant