Infinity numbers in oracle database produce an exception in cx_oracle.py (_detect_decimal)

Issue #4064 resolved
Oleg Talalov created an issue

Customer's database contains BINARY_FLOAT_INFINITY value in one column in few rows.

During requsting rows in fetch, function _detect_decimal called with value '~' and raise exception: ValueError: invalid literal for int() with base 10: '~'

I use cx_orcale 5.3 and 6.0

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

Comments (4)

  1. Mike Bayer repo owner
    • changed milestone to 1.1.x

    I don't have a quick fix for this right now, I am working on Oracle numerics in 1.2 and will take this into account. As for a backport to 1.1, I'll have to see what's possible. I am hoping you can work around this on the query side for now, e.g. use a CAST to String or something similar so you can get the data from this table back.

  2. Mike Bayer repo owner
    • changed milestone to 1.2

    I can get this in 1.2 as I am needing to rewrite the entire numeric support to accommodate for cx_Oracle 6. Getting it into 1.1 would require significant changes to the existing numeric system that are too risky for how far 1.1 is along. I'm hoping you're able to work around your issue for the moment with a CAST to string.

  3. Mike Bayer repo owner

    Refactor for cx_Oracle version 6

    Drops support for cx_Oracle prior to version 5.x, reworks numeric and binary support.

    Fixes: #4064

    Change-Id: Ib9ae9aba430c15cd2a6eeb4e5e3fd8e97b5fe480

    → <<cset 31f80b9eaeb3>>

  4. Log in to comment