<section><title>Changes in 1.7.1 (released 07/04/2006)</title>
<ulist>
<item>Duplicate code in the scripts has been removed.</item>
<item>Fixed a bug in <filename>oramerge.py</filename>: If the source
to be diffed was long enough the call to <filename>diff3</filename> deadlocked.</item>
</ulist>
</section>


<section><title>Changes in 1.7 (released 06/29/2006)</title>
<ulist>
<item>The method <method>iterobjects</method> has been moved from
<class>Cursor</class> to <class>Connection</class>.</item>
<item>The method <method>itercolumns</method> has been moved from
<class>Cursor</class> to <class>TableDefinition</class>.</item>
<item><class>LLProc</class> now recognizes the <lit>c_out</lit>
parameter used by <module>ll.toxic</module> 0.8.</item>
<item>Support for positional arguments has been added for <class>Proc</class>
and <class>LLProc</class>. Error messages for calling procedures
have been enhanced.</item>
<item><class>SequenceDefinition</class> now has a new method
<method>createddlcopy</method> that returns code that copies the
sequence value. <filename>oracreate.py</filename> has a new
option <option>-s</option>/<option>--seqcopy</option> that
uses this feature.</item>
<item><module>setuptools</module> is now supported for installation.</item>
</ulist>
</section>


<section><title>Changes in 1.6 (released 04/26/2006)</title>
<ulist>
<item>Added a <class>SessionPool</class> (a subclass of <module>cx_Oracle</module>s
<class>SessionPool</class>) whose <method>acquire</method> method
returns <module>ll.orasql.Connection</module> objects.</item>
</ulist>
</section>


<section><title>Changes in 1.5 (released 04/05/2006)</title>
<ulist>
<item>Added a class <class>IndexDefinition</class> for indexes.
<filename>oracreate.py</filename> will now issue create statements
for indexes.</item>
</ulist>
</section>


<section><title>Changes in 1.4.3 (released 12/07/2005)</title>
<ulist>
<item>Fixed a bug with empty lines in procedure sources.</item>
<item>Remove spurious spaces at the start of procedure and function
definitions.</item>
</ulist>
</section>


<section><title>Changes in 1.4.2 (released 12/07/2005)</title>
<ulist>
<item>Fixed a bug that the DDL output of Java source.</item>
<item>Trailing whitespace in each line of procedures, functions etc.
is now stripped.</item>
</ulist>
</section>


<section><title>Changes in 1.4.1 (released 12/06/2005)</title>
<ulist>
<item>Fixed a bug that resulted in omitted field lengths.</item>
</ulist>
</section>


<section><title>Changes in 1.4 (released 12/05/2005)</title>
<ulist>
<item>The option <option>-m</option>/<option>--mode</option> has been dropped
from the script <filename>oramerge.py</filename>.</item>
<item>A new class <class>ColumnDefinition</class> has been added to
<module>ll.orasql</module>. The <class>Cursor</class> class has a new method
<method>itercolumns</method> that iterates the <class>ColumnDefinition</class>s
of a table.</item>
<item><filename>oramerge.py</filename> now doesn't output a merged
<lit>create table</lit> statement, but the appropriate <lit>alter table</lit>
statements.</item>
</ulist>
</section>


<section><title>Changes in 1.3 (released 11/24/2005)</title>
<ulist>
<item>Added an option <option>-i</option> to <filename>oracreate.py</filename>
and <filename>oradrop.py</filename> to ignore errors.</item>
<item>The argument <arg>all</arg> of the cursor method <method>iterobjects</method>
is now named <arg>schema</arg> and may have three values: <lit>"own"</lit>,
<lit>"dep"</lit> and <lit>"all"</lit>.</item>
<item>Added an script <filename>oramerge.py</filename> that does a three
way merge of three database schemas and outputs the resulting script.</item>
<item>DB links are now copied over in <class>SynonymDefinition</class>s.</item>
</ulist>
</section>


<section><title>Changes in 1.2 (released 10/24/2005)</title>
<ulist>
<item>Added a argument to <method>createddl</method> and <method>dropddl</method>
to specify if terminated or unterminated DDL is wanted (i.e. add <lit>;</lit> or
<lit>/</lit> or not).</item>

<item><class>CommentsDefinition</class> has been renamed to <class>CommentDefinition</class>
and holds the comment for one field only.</item>

<item><class>JavaSourceDefinition</class> has been added.</item>

<item>The scripts <filename>oracreate.py</filename>, <filename>oradrop.py</filename>
and <filename>oradiff.py</filename> now skip objects with <lit>"$"</lit> in their
name by default. This can be changed with the <option>-k</option> option (but
this will lead to unexecutable scripts).</item>

<item><filename>oradiff.py</filename> has a new options <option>-b</option>:
This allows you to specify how whitespace should be treated.</item>

<item>Added an option <option>-x</option> to <filename>oracreate.py</filename> to
make it possible to directly execute the DDL in another database.</item>

<item>Fixed a bug in <class>SequenceDefinition</class> when the <lit>CACHE</lit>
field was <lit>0</lit>.</item>
</ulist>

</section>


<section><title>Changes in 1.1 (released 10/20/2005)</title>
<ulist>
<item>A script <filename>oradiff.py</filename> has been added which can be
used for diffing Oracle schemas.</item>

<item>Definition classes now have two new methods <method>cdate</method> and
<method>udate</method> that give the creation and modification time of the
schema object (if available).</item>

<item>A <lit>"flat"</lit> iteration mode has been added to
<method>Cursor.iterobjects</method> that returns objects unordered.</item>

<item><class>Connection</class> has a new method <method>connectstring</method>.</item>

<item>A class <class>LibraryDefinition</class> has been added.</item>

<item><method>CommentsDefinition.createddl</method> returns <lit>""</lit>
instead of <lit>"\n"</lit> now if there are no comments.</item>

<item><class>SQLObjectNotfoundError</class> has been renamed to
<class>SQLObjectNotFoundError</class>.</item>
</ulist>
</section>


<section><title>Changes in 1.0 (released 10/13/2005)</title>
<ulist>
<item><module>ll.orasql</module> requires version 1.0 of the core package now.</item>

<item>A new generator method <function>iterobjects</function> has been added
to the <class>Cursor</class> class. This generator returns <z>definition objects</z>
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.</item>

<item>Two scripts (<filename>oracreate.py</filename> and
<filename>oradrop.py</filename>) have been added, that create &sql; scripts
for recreating or deleting the content of an Oracle schema.</item>
</ulist>
</section>


<section><title>Changes in 0.7 (released 08/09/2005)</title>
<ulist>
<item>The commands generated by <function>iterdrop</function> no longer have
a terminating <lit>;</lit>, as this seems to confuse Oracle/cx_Oracle.</item>
</ulist>
</section>


<section><title>Changes in 0.6 (released 06/20/2005)</title>
<ulist>
<item>Two new functions have been added: <function>iterdrop</function> is
a generator that yields information about how to clear the schema (i.e. drop
all table, sequences, etc.). <function>itercreate</function> yields information
about how to recreate a schema.</item>
</ulist>
</section>


<section><title>Changes in 0.5 (released 06/07/2005)</title>
<ulist>
<item>Date values are now supported as <lit>OUT</lit> parameters.</item>
</ulist>
</section>


<section><title>Changes in 0.4.1 (released 03/22/2005)</title>
<ulist>
<item>Added a note about the package init file to the installation
documentation.</item>
</ulist>
</section>


<section><title>Changes in 0.4 (released 01/03/2005)</title>
<ulist>
<item><module>ll.orasql</module> now requires <app>ll-core</app>.</item>
<item>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 <lit>CLOB</lit> in this case.</item>
<item>Creating <class>Record</class> instances from database data is now done
by the class method <method>Record.fromdata</method>. This means it's now
possible to use any other class as long as it provides this method.</item>
</ulist>
</section>


<section><title>Changes in 0.3 (released 12/09/2004)</title>
<ulist>
<item><module>ll.orasql</module> requires <app>cx_Oracle 4.1</app> now.</item>
</ulist>
</section>


<section><title>Changes in 0.2.1 (released 09/09/2004)</title>
<ulist>
<item>Fixed a regression bug in <method>Proc._calcrealargs</method> as
cursors will now always return <class>Record</class> objects.</item>
</ulist>
</section>


<section><title>Changes in 0.2 (released 09/08/2004)</title>
<ulist>
<item>Now generating <class>Record</class> object is done automatically
in a subclass of <class>cx_Oracle.Cursor</class>. So now it's possible
to use <module>ll.orasql</module> as an extended <module>cx_Oracle</module>.</item>
</ulist>
</section>


<section><title>Changes in 0.1 (released 07/15/2004)</title>
<ulist>
<item>Initial release.</item>
</ulist>
</section>
