
#######
History
#######


======================================
Changes in 1.9.3 (released 08/08/2006)
======================================

  * Fixed a bug in oramerge.py.


======================================
Changes in 1.9.2 (released 08/04/2006)
======================================

  * Fixed a bug in TableDefinition.iterdefinitions.


======================================
Changes in 1.9.1 (released 08/02/2006)
======================================

  * Fixed a bug in oracreate.py.


====================================
Changes in 1.9 (released 07/24/2006)
====================================

  * Dependencies involving MaterializedViewDefinitions and
    IndexDefinitions generated by constraints work properly now, so
    that iterating all definitions in create order really results in a
    working SQL script.
  * A method table has been added to PKDefinition, FKDefinition,
    UniqueDefinition and IndexDefinition. This method returns the
    TableDefinition to object belongs to.
  * A method pk has been added to FKDefinition. It returns the primary
    key that this foreign key references.
  * Indexes and constraints belonging to skipped tables are now skipped
    too in oracreate.py.
  * Arguments other than sys.argv[1:] can now be passed to the
    oracreate.py and oradrop.py main functions.


======================================
Changes in 1.8.1 (released 07/17/2006)
======================================

  * ll.orasql can now handle objects name that are not in uppercase.


====================================
Changes in 1.8 (released 07/14/2006)
====================================

  * Connection.iterobjects has been renamed to iterdefinitions.
  * Each Definition subclass has a new classmethod iterdefinitions that
    iterates through all definitions of this type in a schema (or all
    schemas).
  * Each Definition subclass has new methods iterreferences and
    iterreferencedby that iterate through related definitions. The
    methods iterreferencesall and iterreferencedbyall do this
    recursively. The method iterdependent is gone now.
  * The method iterschema of Connection now has an additional parameter
    schema. Passing "all" for schema will give you statistics for the
    complete database not just one schema.
  * A new definition class MaterializedViewDefinition has been added
    that handles materialized views. Handling of create options is
    rudimentary though. Patches are welcome.
  * TableDefinition has a three new methods: ismview returns whether
    the table is a materialized view; itercomments iterates through
    comments and iterconstraints iterates through primary keys, foreign
    keys and unique constraints.
  * The method getcursor will now raise a TypeError if it can't get a
    cursor.


======================================
Changes in 1.7.2 (released 07/05/2006)
======================================

  * RAW fields in tables are now output properly in
    TableDefinition.createddl.
  * A class PackageBodyDefinition has been added. oracreate.py will
    output package body definitions and oradrop.py will drop them.


======================================
Changes in 1.7.1 (released 07/04/2006)
======================================

  * Duplicate code in the scripts has been removed.
  * Fixed a bug in oramerge.py: If the source to be diffed was long
    enough the call to diff3 deadlocked.


====================================
Changes in 1.7 (released 06/29/2006)
====================================

  * The method iterobjects has been moved from Cursor to Connection.
  * The method itercolumns has been moved from Cursor to
    TableDefinition.
  * LLProc now recognizes the c_out parameter used by ll.toxic 0.8.
  * Support for positional arguments has been added for Proc and
    LLProc. Error messages for calling procedures have been enhanced.
  * SequenceDefinition now has a new method createddlcopy that returns
    code that copies the sequence value. oracreate.py has a new option
    -s/--seqcopy that uses this feature.
  * setuptools is now supported for installation.


====================================
Changes in 1.6 (released 04/26/2006)
====================================

  * Added a SessionPool (a subclass of cx_Oracles SessionPool) whose
    acquire method returns ll.orasql.Connection objects.


====================================
Changes in 1.5 (released 04/05/2006)
====================================

  * Added a class IndexDefinition for indexes. oracreate.py will now
    issue create statements for indexes.


======================================
Changes in 1.4.3 (released 12/07/2005)
======================================

  * Fixed a bug with empty lines in procedure sources.
  * Remove spurious spaces at the start of procedure and function
    definitions.


======================================
Changes in 1.4.2 (released 12/07/2005)
======================================

  * Fixed a bug that the DDL output of Java source.
  * Trailing whitespace in each line of procedures, functions etc. is
    now stripped.


======================================
Changes in 1.4.1 (released 12/06/2005)
======================================

  * Fixed a bug that resulted in omitted field lengths.


====================================
Changes in 1.4 (released 12/05/2005)
====================================

  * The option -m/--mode has been dropped from the script oramerge.py.
  * A new class ColumnDefinition has been added to ll.orasql. The
    Cursor class has a new method itercolumns that iterates the
    ColumnDefinitions of a table.
  * oramerge.py now doesn't output a merged create table statement, but
    the appropriate alter table statements.


====================================
Changes in 1.3 (released 11/24/2005)
====================================

  * Added an option -i to oracreate.py and oradrop.py to ignore errors.
  * The argument all of the cursor method iterobjects is now named
    schema and may have three values: "own", "dep" and "all".
  * Added an script oramerge.py that does a three way merge of three
    database schemas and outputs the resulting script.
  * DB links are now copied over in SynonymDefinitions.


====================================
Changes in 1.2 (released 10/24/2005)
====================================

  * Added a argument to createddl and dropddl to specify if terminated
    or unterminated DDL is wanted (i.e. add ; or / or not).
  * CommentsDefinition has been renamed to CommentDefinition and holds
    the comment for one field only.
  * JavaSourceDefinition has been added.
  * The scripts oracreate.py, oradrop.py and oradiff.py now skip
    objects with "$" in their name by default. This can be changed with
    the -k option (but this will lead to unexecutable scripts).
  * oradiff.py has a new options -b: This allows you to specify how
    whitespace should be treated.
  * Added an option -x to oracreate.py to make it possible to directly
    execute the DDL in another database.
  * Fixed a bug in SequenceDefinition when the CACHE field was 0.


====================================
Changes in 1.1 (released 10/20/2005)
====================================

  * A script oradiff.py has been added which can be used for diffing
    Oracle schemas.
  * Definition classes now have two new methods cdate and udate that
    give the creation and modification time of the schema object (if
    available).
  * A "flat" iteration mode has been added to Cursor.iterobjects that
    returns objects unordered.
  * Connection has a new method connectstring.
  * A class LibraryDefinition has been added.
  * CommentsDefinition.createddl returns "" instead of "\n" now if
    there are no comments.
  * SQLObjectNotfoundError has been renamed to SQLObjectNotFoundError.


====================================
Changes in 1.0 (released 10/13/2005)
====================================

  * ll.orasql requires version 1.0 of the core package now.
  * A new generator method iterobjects has been added to the Cursor
    class. This generator returns ?definition objects? for all the
    objects in a schema in topological order (i.e. if the name of an
    object (e.g. a table) is generated it will only depend on objects
    whose name has been yielded before). SQL for recreating and
    deleting these SQL objects can be generated from the definition
    objects.
  * Two scripts (oracreate.py and oradrop.py) have been added, that
    create SQL scripts for recreating or deleting the content of an
    Oracle schema.


====================================
Changes in 0.7 (released 08/09/2005)
====================================

  * The commands generated by iterdrop no longer have a terminating ;,
    as this seems to confuse Oracle/cx_Oracle.


====================================
Changes in 0.6 (released 06/20/2005)
====================================

  * Two new functions have been added: iterdrop is a generator that
    yields information about how to clear the schema (i.e. drop all
    table, sequences, etc.). itercreate yields information about how to
    recreate a schema.


====================================
Changes in 0.5 (released 06/07/2005)
====================================

  * Date values are now supported as OUT parameters.


======================================
Changes in 0.4.1 (released 03/22/2005)
======================================

  * Added a note about the package init file to the installation
    documentation.


====================================
Changes in 0.4 (released 01/03/2005)
====================================

  * ll.orasql now requires ll-core.
  * Procedures can now be called with string arguments longer that
    32768 characters. In this case the argument will be converted to a
    variable before the call. The procedure argument must be a CLOB in
    this case.
  * Creating Record instances from database data is now done by the
    class method Record.fromdata. This means it's now possible to use
    any other class as long as it provides this method.


====================================
Changes in 0.3 (released 12/09/2004)
====================================

  * ll.orasql requires cx_Oracle 4.1 now.


======================================
Changes in 0.2.1 (released 09/09/2004)
======================================

  * Fixed a regression bug in Proc._calcrealargs as cursors will now
    always return Record objects.


====================================
Changes in 0.2 (released 09/08/2004)
====================================

  * Now generating Record object is done automatically in a subclass of
    cx_Oracle.Cursor. So now it's possible to use ll.orasql as an
    extended cx_Oracle.


====================================
Changes in 0.1 (released 07/15/2004)
====================================

  * Initial release.
