Skip to content

Fetching DF segfaults when outputtypehandler is present #486

Open
@mauropagano

Description

@mauropagano
  1. What versions are you using?
    3.1.0, repro in python 3.9 and 3.12, issue is on client side I think, DB version is irrelevant

  2. Is it an error or a hang or a crash?
    Hard crash, segfault

  3. What error(s) or behavior you are seeing?
    Segmentation fault

  4. Does your application call init_oracle_client()?
    Reproduces both in thin and thick mode

  5. Include a runnable Python script that shows the problem.

import oracledb

# this is copy&paste from doc                                                                                                                                                                                                                                                                                                                                                                
def output_type_handler(cursor, metadata):
    def out_converter(d):
        if isinstance(d, str):
            return f"{d} was a string"
        else:
            return f"{d} was not a string"

    if metadata.type_code is oracledb.DB_TYPE_NUMBER:
        return cursor.var(
            oracledb.DB_TYPE_VARCHAR,
            arraysize=cursor.arraysize,
            outconverter=out_converter,
        )


conn = oracledb.connect("...")
# comment out the line below and the issue goes away
conn.outputtypehandler = output_type_handler
sql = "select 1 n from dual"
t = conn.fetch_df_all(sql)
print(t)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions