Changes from 2.4 to 2.5 1) Use exception classes rather than string exceptions everywhere. 2) Added support for specifying "as sysdba" and "as sysoper" in the connection string and set the necessary privileges when connecting. 3) Added support for getting constant representations for binary data, CLOB and BLOB values. 4) Added support for Oracle context objects. 5) Fixed support for interval data types. 6) In cx_OracleParser, added a simple SQL parser and used that to replace the module cx_SQL. 7) In cx_OracleParser, added support for additional SQL statements or options on existing statements. 8) In cx_OracleObject, constraints on objects that have been dropped are now ignored. 9) In cx_OracleObject, trailing lines are no longer stripped from the source that is returned from dba_source as wrapped code sometimes requires the blank line in Oracle 10g as reported by Robert Ritchie. 10) In cx_OracleObject, added support for option --name-file which is the same as --name except that the names are listed in the specified file, one per line; roles can also be included if the names refer to roles. 11) In cx_OracleObject, always set the owner when an object is exported so that referenced constraints are prefixed with connect statements as needed. 12) In cx_OracleObject, added support when describing views to include the column names in the SQL for the view. 13) In cx_OracleObject, added support for domain indexes. 14) In cx_OracleObject, added support for Oracle 11.2. 15) In cx_OracleObject, added support for using flashback queries when performing describes, either by timestamp or by SCN. 16) In cx_OracleEx, added method for getting the current date from the database. 17) In cx_OracleEx, added methods for performing simple insert, update and delete statements based on the data passed into those methods. 18) In cx_OracleEx, show the number of rows successfully processed before an error occurs as requested by Gordon den Otter. 19) In cx_OracleEx, added method that can be used as an output type handler for cx_Oracle that returns all strings as Unicode strings. 20) Added module cx_PatchCommands which enables the use of the simple SQL parser for processing SQL statements and reporting more useful information than is reported by SQL*Plus. 21) Dropped module cx_RecordSet which has been replaced by more advanced code in the ceDatabase module in the cx_PyGenLib project. 22) Dropped module cx_CursorCache which is not used and only contained a few lines of code anyway. Changes from 2.3 to 2.4 1) In cx_ExportData and cx_ImportData, use cx_Logging to output messages rather than write directly to stderr. 2) In cx_ImportData, added phrase "(n% of file)" to the reporting message when possible as requested by Don Reid. 3) In cx_ImportData, replaced use of executemanyprepared() with executemany() and bind arrays instead of dictionaries which actually improves performance by about 20-25% in some cases. 4) In cx_OracleDebugger, fixed case of message attribute. 5) In cx_OracleObject, added support for describing comments on tables and columns. 6) In cx_OracleObject, eliminate identical grants from the output. 7) In cx_OracleObject, export the roles before the users as the reason the roles are included is because they are administered by the users and the grants will by definition fail. 8) In cx_OracleObject, create the directory before any exporting actually takes place in order to handle the situation when no objects end up being exported, as requested by Micah Friesen. 9) In cx_OracleParser, added support for a select for update statement without a where clause. 10) In cx_OracleUtils, ignore invalid objects of type "UNDEFINED" which will fail to compile anyway. 11) In cx_SQL, added support for compiling comment statements. 12) In cx_SQL, added additional case statement to handle the modify constraint clause. 13) cx_Oracle 4.2 is now required. 14) Added new module cx_OracleEx which supports logging of Oracle statements and has a few additional convenient methods. 15) Removed module cx_DumpData which was only used by DumpData in the cx_OracleTools project. Changes from 2.2 to 2.3 1) Added new module cx_OracleDebugger which allows for logging of messages using dbms_pipe which was originally exclusively done in DbDebugger, a part of the cx_OracleTools package. 2) Added support for limiting the number of rows exported and skipping a certain number of rows first in cx_ExportData. 3) Removed special code in cx_ExportData and cx_ImportData for handling dates since they can be pickled directly now. 4) Added support for exporting timestamp columns in cx_ExportData. 5) Improved Oracle SQL and PL/SQL parser in cx_OracleParser. 6) Added ability to enable roles when connecting to a database using the utility function in cx_OracleUtils. 7) Added support for describing index organized tables in cx_OracleObject. 8) Added support for describing compressed keys in indexes in cx_OracleObject. 9) Added support for describing users and roles in cx_OracleObject. 10) Added support for describing trigters which call stored procedures instead of executing PL/SQL blocks in cx_OracleObject. 11) Fixed bug in display of size of unicode columns in cx_OracleObject. 12) Fixed bug in display of integer columns in cx_OracleObject. 13) Fixed bug in cx_OracleObject which was not describing generated primary key and unique constraints. 14) Ensured that the "&" character is not dumped directly in cx_DumpData so that the "set define off" command is not required before running the generated script through SQL*Plus. 15) Fixed messages that were generated by cx_SQL when constraints were enabled or disabled. 16) Fixed some spelling mistakes. Changes from 2.1 to 2.2 1) Added partial support for describing partitioned tables. 2) Added support for describing constraints directly. 3) Added utility function which will prompt for a password when one is missing in a connect string and then return the modified connect string. 4) Added support for case sensitivity when describing objects. 5) Improved the grammar for parsing Oracle code. 6) Added support for exporting CLOB and BLOB columns directly. 7) Do not use the column "table_owner" on dba_synonyms if the value is null. This is a rather rare situation but raises an exception which discovered. 8) Add checking for circular dependencies to avoid infinite loops. Changes for 2.1 1) First introduced to the public.