Skip to content

Please make the initial allocation size in ReadVarColumn configurable #1071

@defransen

Description

@defransen

... as the comment suggests:

// TODO: Make the initial allocation size configurable?

Ideally a configured value of 0 (or -1) would mean: use columnSize * cbElement.

This would help to work around a bug in the Oracle BI ODBC drivers SQLGetData implementation.
The driver expects to get cbAllocated instead of cbAvailable as the 5th parameter in the SQLGetData call. And even worse: it continues to return SQL_SUCCESS_WITH_INFO with a single NULL-byte when it has no more data until the 5th parameter is as big as cbData.
The result is that pyodbc seg-faults after all RAM has been allocated for the buffer.

The only sane way to work around this, without breaking compatibility, is to ensure to never get a SQL_SUCCESS_WITH_INFO return. Which means make the initial buffer as big as the maximum column size.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions