Commit Graph

228 Commits

Author SHA1 Message Date
Anthony Tuininga 3af5e46b4b Correct parsing of connect string so that the last @ symbol is searched for
instead of the first @ symbol; otherwise, passwords containing an @ symbol will
result in the incorrect DSN being extracted
(https://github.com/oracle/python-cx_Oracle/issues/290).
2019-03-28 10:46:15 -06:00
Anthony Tuininga c112af35cb Revert changes to return decimal numbers when the numeric precision was too
great to be returned accurately as a floating point number. This change had too
great an impact on existing functionality and an output type handler can be
used to return decimal numbers where that is desirable
(https://github.com/oracle/python-cx_Oracle/issues/279).
2019-03-12 09:31:38 -06:00
Anthony Tuininga 0ae5b9e715 Added test cases for session tagging. 2019-03-07 17:00:14 -07:00
Anthony Tuininga fb445815f2 Use random password instead of hard coded password as a security measure. 2019-01-31 10:18:43 -07:00
Anthony Tuininga 4ed95aad94 Reworked test suite to eliminate the use of default passwords and to make the
individual test modules directly runnable (instead of using execfile() within
test.py).
2019-01-31 10:18:04 -07:00
Anthony Tuininga 4097a37ff2 Bump copyright notice into 2019 for changed files. 2019-01-22 16:00:29 -07:00
Anthony Tuininga ba0d41412f Added test cases for inserting and fetching XMLType objects as strings. 2019-01-22 14:28:25 -07:00
Anthony Tuininga b13c998999 Timed waits for acquiring a session from a session pool is only available in
Oracle 12.2 and higher.
2019-01-22 14:22:39 -07:00
Anthony Tuininga 1860fdb05b Ensure that values that exceed sizeof(long) for Python 2 on Windows when using
the Oracle type NATIVE_INT are not silently truncated
(https://github.com/oracle/python-cx_Oracle/issues/257).
2019-01-21 20:49:08 -07:00
Anthony Tuininga 43a485042f Add additional check for calling setinputsizes() with an empty dictionary in
order to avoid the error "cx_Oracle.ProgrammingError: positional and named
binds cannot be intermixed"
(https://github.com/oracle/python-cx_Oracle/issues/199).
2019-01-08 14:41:01 -07:00
Anthony Tuininga b340771c37 Rework handling of numbers so that, unless using the NATIVE_INT,
NATIVE_FLOAT or NATIVE_DOUBLE types, all numbers are converted to strings and
passed through to ODPI-C in all Python versions; improved error message when
a value cannot be represented by an Oracle number value; improved test suite to
verify that calling executemany() with integers, floats and decimal values
intermixed with each other works as expected
(https://github.com/oracle/python-cx_Oracle/issues/241).
2018-12-07 19:16:33 -07:00
Anthony Tuininga 4c12b47573 Update ODPI-C to support fetching XMLType as strings
(https://github.com/oracle/python-cx_Oracle/issues/14).
2018-12-03 10:20:14 -07:00
Anthony Tuininga ef036cbefc Ensure that all references to TestTempTable use the column names instead of
assuming the number of columns (in preparation for adding additional nullable
columns for other tests).
2018-12-03 10:19:22 -07:00
Anthony Tuininga 8fbc43ac08 Added additional SODA test cases. 2018-11-29 17:21:36 -07:00
Anthony Tuininga 00de5ea10f Handle case when first call to cursor.executemany() has one or more columns
that are always null and a subsequent call to cursor.executemany() has a value
other than None in the same column
(https://github.com/oracle/python-cx_Oracle/issues/236).
2018-11-29 17:19:39 -07:00
Anthony Tuininga e4cef63804 Add comment which is displayed during the test run. 2018-11-29 17:19:20 -07:00
Anthony Tuininga 1be0461174 Be clearer about the syntax used for connecting to the database as sys. 2018-11-05 09:53:39 -07:00
Anthony Tuininga ae8b4f84aa Entries can remain in v$sql_monitor for a period of time so only look at the
executing one.
2018-11-02 15:45:09 -06:00
Anthony Tuininga 851c9a4650 Add support for getting/setting raw attributes of objects, as requested
(https://github.com/oracle/odpi/issues/72).
2018-11-02 15:44:49 -06:00
Anthony Tuininga 548440016e Add support for passing an object type (such as those created by the method
connection.gettype()) as the first parameter to cursor.var(), as requested
(https://github.com/oracle/python-cx_Oracle/issues/231).
2018-10-30 16:32:05 -06:00
Anthony Tuininga 4fd6c35436 Allow the type name to be None, as requested
(https://github.com/oracle/python-cx_Oracle/issues/231).
2018-10-30 16:31:47 -06:00
Anthony Tuininga 74d9d71484 Use cx_Oracle.connect() in preference to cx_Oracle.Connection() in samples and
tests. Although the two are aliases of one another, it makes sense to be
consistent and to use the one that the DB API prefers as well.
2018-09-21 11:05:40 -06:00
Anthony Tuininga bc69e784f8 Adjust copyright notices to match requirements of Oracle Legal. 2018-09-10 11:39:51 -06:00
Anthony Tuininga 64f65050a2 Add support (as preview) for SODA. 2018-09-10 11:37:53 -06:00
Anthony Tuininga b611246a7b Add support for getting the contents of a collection as a dictionary where the
keys are the indexes of the collection and the values are elements of the
collection.
2018-09-03 10:19:26 -06:00
Anthony Tuininga dc2601729a Remove __future__ attributes for functionality which is now enabled permanently
in cx_Oracle 7: connections as context managers now close the connection and
variables in DML returning statements now return an array.
2018-07-12 10:45:40 -06:00
Anthony Tuininga fee92abe5a If cursor.setinputsizes() is called without any parameters, do not set the flag
indicating that bind variables should be returned since otherwise binding with
named arguments will raise the error "cx_Oracle.ProgrammingError: positional
and named binds cannot be intermixed"
(https://github.com/oracle/python-cx_Oracle/issues/199).
2018-07-03 13:36:10 -06:00
Anthony Tuininga fb249f5944 Ensure that the row count for queries is reset to zero when the statement is
executed (https://github.com/oracle/python-cx_Oracle/issues/193).
2018-06-25 15:57:19 -06:00
Anthony Tuininga a8751e91f4 Added support for using the cursor as a context manager
(https://github.com/oracle/python-cx_Oracle/issues/190).
2018-06-21 11:29:11 -06:00
Anthony Tuininga e6d5153e43 Added additional test cases for heterogeneous pools. 2018-06-19 11:10:26 -06:00
Anthony Tuininga 85a0ad3ee3 Use the built-in type SYS_REFCURSOR instead of creating a new one. 2018-05-29 21:55:45 -06:00
Anthony Tuininga c31eef50de Correct handling of statements and rowids in DML returning statements. 2018-05-29 21:55:26 -06:00
Anthony Tuininga 9781810b8e Added support for binding decimal.Decimal values to cx_Oracle.NATIVE_FLOAT as
requested in issue 184
(https://github.com/oracle/python-cx_Oracle/issues/184).
2018-05-24 16:36:58 -06:00
Anthony Tuininga 8cc7b893f2 Ensure that binding a boolean value outside of PL/SQL simply binds the integer
0 or 1 (https://github.com/oracle/python-cx_Oracle/issues/181).
2018-05-19 21:35:37 -06:00
Anthony Tuininga 005a00c03d Added additional test cases and corrected test case for ltxid when
using 11.2 client.
2018-05-09 19:36:13 -06:00
Anthony Tuininga 756442ee24 Added checks on passing invalid parameters to cursor.var(),
cursor.arrayvar(), cursor.callfunc() and cursor.setinputsizes().
2018-05-09 19:35:49 -06:00
Anthony Tuininga 2272af1563 Add support for specifying an integer for the parameters argument to
cursor.executemany(). This allows for batch execution when no parameters are
required or when parameters have previously been bound. This replaces
cursor.executemanyprepared() which is now deprecated and will be removed in
cx_Oracle 7.
2018-05-09 19:35:00 -06:00
Anthony Tuininga d9c50574f5 Added test cases for AQ transformations and trimming collections. 2018-05-09 19:34:21 -06:00
Anthony Tuininga 355d7f34aa Added additional test to verify case when a DML returning statement returns
multiple rows during one execute but in the subsequent execute it returns no
rows.
2018-05-04 21:35:37 -06:00
Anthony Tuininga f39ebf8da8 Ensure that the behavior in cx_Oracle 6.3 with __future__.dml_ret_array_val not
set or False is the same as the behavior in cx_Oracle 6.2
(https://github.com/oracle/python-cx_Oracle/issues/176).
2018-05-01 15:27:18 -06:00
Anthony Tuininga e763419b59 Ensure that decreasing number of rows returned from a DML returning statement
is detected properly.
2018-04-19 14:21:26 -06:00
Anthony Tuininga c61973c28f Added support for DML returning of multiple rows using cursor.executemany(). 2018-03-28 16:24:41 -06:00
Anthony Tuininga e15851220b Correct the handling of ANSI types REAL and DOUBLE PRECISION as implemented by
Oracle. These types are just subtypes of NUMBER and are not actually stored as
native floating point numbers. Native floating point numbers are used with
Oracle types BINARY_FLOAT and BINARY_DOUBLE
(https://github.com/oracle/python-cx_Oracle/issues/163).
2018-03-21 11:46:17 -06:00
Anthony Tuininga 48571852ca Add test demonstrating that binding of long data using cursor.executemany()
works as expected.
2018-03-19 10:55:26 -06:00
Anthony Tuininga 813728ab72 Add support for binding integers and floats as cx_Oracle.NATIVE_FLOAT. 2018-03-07 16:19:01 -07:00
Anthony Tuininga 1bd8e95807 Added support for closing the connection when reaching the end of a code block
controlled by the connection as a context manager, but in a backwards
compatible way (https://github.com/oracle/python-cx_Oracle/issues/113).
2018-02-27 16:58:01 -07:00
Anthony Tuininga 07b3b93da1 Add additional test cases. 2018-02-27 16:57:01 -07:00
Anthony Tuininga 46e3aff3fa Ensure that the number of elements in the array is not lost when the buffer
size is increased to accommodate larger strings.
2018-02-16 16:23:09 -07:00
Anthony Tuininga 9b1ce308b1 Added support for creating a temporary LOB directly. 2018-02-16 16:21:32 -07:00
Anthony Tuininga d9cf469167 Correct binding of LOB values. 2018-02-16 16:20:50 -07:00
Anthony Tuininga 54dcf8642b Added test cases for recent ODPI-C bug fixes. 2018-02-15 11:18:15 -07:00
Anthony Tuininga 99c019d6c5 Restore support for binding a date value to datetime variable. 2018-02-02 15:44:45 -07:00
Anthony Tuininga 65580226cd Added test cases for AQ visibility and delivery modes. 2018-01-30 15:25:56 -07:00
Anthony Tuininga 6a998604ce The attribute connection.dbop is only valid with Oracle 12.1 and higher. 2018-01-11 16:24:42 -07:00
Anthony Tuininga ef60884570 Additional test cases to improve code coverage. 2018-01-11 16:24:08 -07:00
Anthony Tuininga ab4cde01b7 Use "wait" mode for acquiring connections from the pool in order to avoid
potential errors under certain circumstances.
2017-12-12 12:09:32 -07:00
Anthony Tuininga 0b408253f6 Added test for creating a connection using an existing connection's handle. 2017-12-07 15:55:13 -07:00
Anthony Tuininga a8d9b74c3a Added preliminary test cases for subscriptions. 2017-12-07 15:54:11 -07:00
Anthony Tuininga 1fe14c66dc Use safer queries for verifying connection properties. 2017-12-07 15:52:34 -07:00
Anthony Tuininga fb71f1126b Additional test cases for AQ. 2017-11-27 10:38:27 -07:00
Anthony Tuininga 011e062aa1 Added test cases for autocommit, changing passwords and the end-to-end tracing
attributes.
2017-11-27 10:37:46 -07:00
Anthony Tuininga 9377175715 Added test cases for validating object types and for preventing an attempt to
set a LOB variable at an array position that doesn't exist.
2017-11-14 11:03:11 -07:00
Anthony Tuininga 02c5f5eb5d Correct test suite when CHAR encoding is not capable of handling unicode data. 2017-11-14 11:02:41 -07:00
Anthony Tuininga d4b13eb584 Added test cases for rowids. 2017-10-24 22:03:47 -06:00
Anthony Tuininga ef201bde74 Added additional LOB function tests; skip supplemental characters test if
database character set is not AL32UTF8.
2017-10-13 19:13:42 -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 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 d1b5428879 Add information on how to run the test suite
(https://github.com/oracle/python-cx_Oracle/issues/33).
2017-08-08 15:40:05 -06:00
Anthony Tuininga 3e2dd725ad Change default connectstring to localhost/orclpdb to be consistent with the
default value used in the Oracle Database installer.
2017-08-08 15:39:02 -06:00
Anthony Tuininga 16bc500c73 All cursors and LOBs must be closed before a connection can be closed
explicitly.
2017-07-31 21:20:30 -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 8cc4d8607f Remove unnecessary Unicode specific tests for Python 2.7 since Python 3 now
also supports the "u" prefix; merge them instead into the main tests.
2017-07-21 15:16:24 -06:00
Anthony Tuininga 340dcb7195 Rework test suite and samples so that they are independent of each other and
so that the SQL scripts used to create/drop schemas are easily adjusted to
use different schema names, if desired. Improve documentation for test suite
and samples.
2017-07-14 16:50:41 -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 c1005ddcac Added test cases for AQ enqueue/dequeue options and message properties
(https://github.com/oracle/odpi/issues/16).
2017-07-13 13:57:29 -06:00
Anthony Tuininga 1d768706ab Python 2.7 requires the "u" prefix. 2017-07-08 21:23:27 -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 888fd89fce Update DB API test stub to match latest version of test suite and cx_Oracle. 2017-07-05 13:19:07 -06:00
Anthony Tuininga f555a10f36 Add support for Python 3 in DB API test suite stub. 2017-07-05 13:17:50 -06:00
Anthony Tuininga d008553dc1 Add script for dropping the test schemas; add copyright and information on how
to execute to the SetupTest.sql script.
2017-06-16 16:48:15 -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 fa4faa2718 Update ODPI-C which has added an optimization to reduce buffer size when both
the client and server character sets are identical and corrected support for
BFILE LOBs.
2017-06-16 16:43:41 -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 f4009ebabd Add tests for specifying only the encoding or only the nencoding. 2017-06-10 11:32:25 -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 2e240bc154 Prevent attempts from binding the cursor being executed to itself. 2017-05-16 13:23:20 -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 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
Anthony Tuininga c946e86384 Correct support for executemany() when strings that are found later in the
array are larger than strings found earlier in the array.
2017-04-26 17:11:58 -06:00
Anthony Tuininga 8d7c828b89 Use an object type that is supported in both 11.2 and 12.1. 2017-04-18 13:04:23 -06:00
Anthony Tuininga b429041a3e Add support for getting an empty list from an empty collection instead of the
error "OCI-22166: collection is empty".
2017-04-17 10:34:14 -06:00
Anthony Tuininga 3bc9bd2303 Added sample and test case to demonstrate use of universal rowids. 2017-04-11 16:12:06 -06:00