127 Commits

Author SHA1 Message Date
Anthony Tuininga
5171ede9c2 Correct handling of Oracle objects after consolidation of transformations
to/from Python objects.
2018-02-02 15:42:57 -07:00
Anthony Tuininga
e5b6370bd0 Reorganize code to implement the following:
- use a prefix of cxo/CXO for all variables, methods and constants
  - create common include file and use separate compilation units
  - consolidate all transformations to/from Python objects
2018-01-29 18:50:18 -07:00
Anthony Tuininga
fa43311bbc Update ODPI-C; remove error "DPI-1054: connection cannot be closed when open
statements or LOBs exist"
(https://github.com/oracle/python-cx_Oracle/issues/138).
2018-01-26 21:18:16 -07:00
Anthony Tuininga
18b014a19e Correct support in Python 3.x for cursor.parse(). 2018-01-11 14:20:51 -07:00
Anthony Tuininga
8dfd842cfd Revert last change (restriction is deliberate). 2017-12-15 09:00:56 -07:00
Anthony Tuininga
cf19bc7f74 Remove unnecessary type checks since PyFloat_AsDouble() will convert the value
to floating point if possible anyway, and if not, will raise an appropriate
exception.
2017-12-15 08:49:27 -07:00
Anthony Tuininga
9ae0f5dd1c Use the correct designation for the external handle parameter. 2017-12-11 15:41:48 -07:00
Anthony Tuininga
5d728693ca Eliminate compiler warnings on 32-bit Windows. 2017-12-07 15:56:26 -07:00
Anthony Tuininga
864780da2a Use long long instead of just long in order to avoid truncation on Windows
where sizeof(long) != sizeof(void*).
2017-12-07 15:55:46 -07:00
Anthony Tuininga
681c18675e Update ODPI-C (adjust OCI prefetch; added options for authentication with
SYSBACKUP, SYSDG, SYSKM and SYSRAC, as requested
(https://github.com/oracle/python-cx_Oracle/issues/101).
2017-11-27 10:40:19 -07:00
Anthony Tuininga
5625a320c9 Correct reference handling when an invalid keyword parameter is passed to the
cx_Oracle.SessionPool constructor.
2017-11-17 21:39:26 -07:00
Anthony Tuininga
f26fb5157e Ensure that the edition is passed through to ODPI-C when a session pool is
created.
2017-11-17 13:41:49 -07:00
Anthony Tuininga
cb07970d2f Remove unnecessary lines. 2017-11-16 09:43:31 -07:00
Anthony Tuininga
ed7bd281f2
Merge pull request #54 from vnaydionov/pypy-pip-install
Fix build with PyPy 5.9.0-alpha0 in libpython mode
2017-11-16 08:42:24 -08:00
Anthony Tuininga
c122690ac4 Add support for identifying the id of the transaction which spawned the
message, as requested (https://github.com/oracle/odpi/issues/32).
2017-11-08 10:18:18 -08:00
Anthony Tuininga
9bdc5cb5d6 Check variable array size when setting variable values and raise IndexError, as
is already done for getting variable values.
2017-11-03 21:31:02 -06:00
Anthony Tuininga
22b6de785a Update ODPI-C (correct handling of NVARCHAR2 object attributes and collection
elements).
2017-11-03 21:30:27 -06:00
Anthony Tuininga
86564b9df3 Update ODPI-C (replace usage of OCI thread key with thread-safe handle pool). 2017-10-24 22:05:20 -06:00
Anthony Tuininga
bc1f53f213 Use dpiData_setTimestamp() instead of setting the values directly. 2017-10-24 22:03:06 -06:00
Anthony Tuininga
7fc5127aaa Added support for connecting to specific shards of a sharded database by
specifying a shard key.
2017-09-12 13:29:47 -06:00
Anthony Tuininga
0648181afd Correct typo. 2017-09-12 13:27:30 -06:00
Anthony Tuininga
3d8b74e77f Ensure that a call to setinputsizes() with an invalid type prior to a call to
executemany() does not result in a type error, but instead gracefully ignores
the call to setinputsizes() as required by the DB API
(https://github.com/oracle/python-cx_Oracle/issues/75).
2017-09-01 16:21:28 -06:00
Anthony Tuininga
7b484bce70 Eliminate segfault when attempting to reuse a REF cursor that has been closed. 2017-08-30 11:54:33 -06:00
Anthony Tuininga
0111431430 Update ODPI-C (improve performance, correct handling of objects when dynamic
binding is being used).
2017-08-24 21:50:29 -06:00
Anthony Tuininga
c2c8d541bf On Windows, sizeof(long) = 4 which means that integers between 10 and 18 digits
were not converted to Python correctly
(https://github.com/oracle/python-cx_Oracle/issues/70).
2017-08-22 21:40:21 -06:00
Anthony Tuininga
a48fcdfde2 Ensure that fetch indicators are reset, even if the fetch variables themselves
do not need to be created.
2017-08-22 11:51:58 -06:00
Anthony Tuininga
5837e71cd8 Eliminate memory leak when repeatedly executing the same query. 2017-08-21 16:10:11 -06:00
Viacheslav Naydenov
d43b3eee70 Fix build with PyPy 5.9.0-alpha0 in libpython mode
Signed-off-by: Viacheslav Naydenov <vaclav@yandex.ru>
2017-08-21 22:46:21 +03:00
Anthony Tuininga
7b6276f5eb Added missing type check to prevent coercion of decimal to float
(https://github.com/oracle/python-cx_Oracle/issues/68).
2017-08-18 14:15:50 -06:00
Anthony Tuininga
90f571c660 Update ODPI-C to 2.0.1. 2017-08-18 10:59:33 -06:00
Anthony Tuininga
f1f5ead2a4 Update ODPI-C. 2017-08-11 11:13:05 -06:00
Anthony Tuininga
ece92442ab Delay initialization of the ODPI-C library until the first standalone
connection or session pool is created so that manipulation of the environment
variable NLS_LANG can be performed after the module has been imported
(https://github.com/oracle/python-cx_Oracle/issues/36); this also has the added
benefit of reducing the number of errors that can take place when the module is
imported.
2017-07-31 21:21:32 -06:00
Anthony Tuininga
1f917aafbb In certain cases where non-long values follow LOB values in the list of bind
variables, the error "ORA-24816: Expanded non LONG bind data supplied after
actual LONG or LOB column" is raised; this occurs if the length of the supplied
value, when expanded, might exceed 4000 bytes
(https://github.com/oracle/python-cx_Oracle/issues/50).
2017-07-25 12:16:54 -06:00
Anthony Tuininga
852aed3b58 Ensure that the array position passed to var.getvalue() does not exceed the
number of elements allocated in the array!
2017-07-21 15:36:31 -06:00
Anthony Tuininga
1eba9d55be Use dpiData_*() functions to simplify setting data; correct handling of
timestamp with time zone attributes.
2017-07-21 15:35:49 -06:00
Anthony Tuininga
df102db935 Correct handling of CLOB/NCLOB when using different encodings. 2017-07-21 15:34:48 -06:00
Anthony Tuininga
628d1717f5 Corrected support for binding boolean values with Oracle client 11.2. 2017-07-14 11:31:59 -06:00
Anthony Tuininga
49b0afd7a5 Ensure the correct encoding is used for setting variable values. 2017-07-07 07:38:44 -07:00
Anthony Tuininga
18e06bf14a Corrected support for binding decimal values in object attribute values and
collection element values.
2017-07-07 07:38:15 -07:00
Anthony Tuininga
4a1641e9c4 Define exception classes on the connection object to simplify error handling in
multi-connection environments, as specified in the Python DB API.
2017-07-05 13:18:29 -06:00
Anthony Tuininga
b543850f9a The method cursor.setoutputsize() no longer needs to do anything (since ODPI-C
automatically manages buffer sizes of LONG and LONG RAW columns).
2017-06-16 16:47:21 -06:00
Anthony Tuininga
465da44482 Permit use of both string and unicode for Python 2.7 for creating session pools
and for changing passwords
(https://github.com/oracle/python-cx_Oracle/issues/23).
2017-06-10 13:54:10 -06:00
Anthony Tuininga
e783a33926 Handle case when both precision and scale are zero, as occurs when retrieving
numeric expressions (https://github.com/oracle/python-cx_Oracle/issues/34).
2017-06-09 14:21:24 -06:00
Anthony Tuininga
52e1960bfb Correct determination of the names of the bind variables in prepared SQL
tatements (which behaves a little differently from PL/SQL statements).
2017-05-19 21:47:46 -06:00
Anthony Tuininga
999913be35 Ensure reference count of parameters remains the same after call completes! 2017-05-16 14:29:33 -06:00
Anthony Tuininga
ef1fc44f32 Set the fetch array size on a REF cursor prior to it being used by Python. 2017-05-15 13:19:43 -06:00
Anthony Tuininga
5e04a04baa Check for an error while creating the error! 2017-05-15 13:14:37 -06:00
Anthony Tuininga
51f1815167 Added support for getting/setting attributes of objects or element values in
collections that contain LOBs, BINARY_FLOAT values, BINARY_DOUBLE values and
NCHAR and NVARCHAR2 values; improve error message for any other types that are
not supported.
2017-05-09 11:46:30 -06:00
Anthony Tuininga
e5a888520f Correct size as well as buffer size when variable is resized. 2017-05-09 11:44:54 -06:00
Anthony Tuininga
53f8902446 Correct handling of long Python integers that cannot fit inside a 64-bit C
integer (https://github.com/oracle/python-cx_Oracle/issues/18).
2017-05-03 13:31:13 -06:00