You are not logged in Log in Join
You are here: Home » Members » matt » DCOracle2 » CHANGELOG » View File

Log in
Name

Password

 

CHANGELOG

File details
Size
15 K
File type
text/plain

File contents

CHANGELOG:

0.1		August 02, 2000 First tarball released 

Alpha 1		Jan 2001
		February 05, 2001 Added SQLT_AFC handler

		February 11, 2001 -- SPARC fixes (describe still does not
		get schema or object name, though)

Alpha 2		Bug fixes (tweaks only)

Alpha 3		March 05, 2001 (mostly tweaks)
		Change ZOracleDA to not use method calls to connect()
		Stored functions are marginally testable, stored procs
		are still not working 

Alpha 4		March 14, 2001
		Stored procedures!  IN and OUT have been tested, and
		IN OUT should work as well, although my test procedure
		doesnt do anything interesting.  Still untested is
		returning REF CURSOR.

		Also changed is DCOracle's executemany() to use the
		BindingArray.  While this works -- it is flakey with
		more than 8-10 elements.  This seems to be in Oracle,
		as the problem shifts and I cannot see it in the
		trace log or by pausing with gdb and examining the inputs
		directly -- however, Oracle will pickup NULL inputs for
		random values.  An 8 element array bind will be about
		three times faster than 8 single inserts by my testing.

		Still not properly working -- number precision does not
		seem to be reported over SQL*NET -- always comes back 0.
		Is this a bug with SQL*NET?  Local db has precision.

Alpha 5		March 21, 2001
		Stored procedure fixes
		Debugging enhancements via DCO2TRACELOG, DCO2TRACEDUMP,
		DCO2TRACESIZE, DCO2TRACEFLAGS environment variables.
		Added SQLT_LNG and SQLT_BIN handlers.
		Andreas Jung is also assisting with the testing.

Alpha 6		April 6, 2001
	     o 	Moved the Cursor describe function out of _execute
		so it can be called by type conversion for result cursors.
	     o  Changed execute() to NoticeOCIError on OCI_SUCCESS_WITH_INFO
		but continue as if OCI_SUCCESS.
	     o 	Nested tables work e.g. SELECT ENAME, CURSOR(SELECT ENAME
		FROM EMP WHERE MGR=7908) FROM EMP WHERE EMPNO=7908), each
		CURSOR returned is a new DCOracle2 cursor from the existing
		service context.
	     o  None is represented to Oracle as a NULL SQLT_STR variable.
	     o	Added standard error hierarchy for API2 to dco2 and DCOracle2
	     o  Added type objects for type comparison
	     o  Added date & time coersion objects
	     o  Added trim() function to LobLocators

	        April 10, 2001
	     o  Wrap LOB objects in ZOracleDA so permissions work properly in
	        Zope 2.2+

	        May 13, 2001
             o  Fix messages on fetch after execute with no result set to
	        be more meaningful (Oracle error does not suggest
		proper action).  Also, describe after execute w/o results will
		be None rather than [].
	     o  dco2 prepare and execute will return the statement type code,
	        e.g. 1 for select, 4 for insert, etc.  DCOracle2 will return the
		type code after execute() and excutemany().  [Docs not yet
		updated]

Beta 1		June 4, 2001
	     o  Single element stored procedure input works
	     o  Cleaned up cycle in stored procedures
	     o  Change cursor.fetchone() to return None on end of results
	        rather than raise IndexError
	     o  Changed python-level type coercion to use TypeCoercion()
	     o  Various bugfixes
	     o  Added __doc__ strings to stored procedure objects
	     o  Took out OCI_ERROR messages to stdout on context creation
	     o  Added setStatic to BindingArray objects, set as default for
	        cursor.executemany()
 	     o  Batch results in cursor.executemany()
	     o  Added backward compat mode to execute()
	     o  Added backward compat dbiRaw (no backward compat dbiDate)
	     
Beta 2     	June 7, 2001
	     o  Fix ZOracleDA to not retrieve results on non-select
	     o  Add Cursor.close() to dco2 and fix DCOracle2 to call to
	        break resultset/cursor cycle on cursor close.  Implicit
		cursor close still has refcount loop.
	     o  Change dco2 Cursor_fetch to deallocate results at end of
	        fetch rather than at beginning of next fetch, helping to
		prevent result/cursor cycle requiring explicit Cursor.close()
	     o  Defer connection implicit cursor creation to avoid causing
	     	connection/cursor cycle (and thus requiring explicit
		connection.close())
	     o  Make 'procedure' object allocation lazy to defer
	        cursor/procedure cycle (thus requiring explicit close() to
		break the cycle)
	     o  cursor.fetchmany() and cursor.fetchall() will return None
	        instead of [] if no results remain.
	     o  SPARC byteorder & size fixes for stored procedure (dco2 schema
		describe tables)

Beta 3		June 11, 2001
	     o  Fixed IN OUT bind widths (reset to max width for OUT)
	     o  Added ORACLE8i define to NT build for SP support
	     o  Added Z Oracle Stored Procedures to ZOracleDA
	     o  Added In/Out bind conversion hooks in DCOracle2
	     o  Added In/out bind conversion for SQLT_NUM (converts to
	        string on input, converts to float, long, or int on output)
	     o  Set __allow_access_to_unprotected_subobjects__ on Cursor
	        object in DCOracle2 to allow Zope to manipulate returned
		curors.  (Will wrap in cursors in ZOracleDA in the future).
	     o  IN / OUT cursor binds will create a new cursor if the input
	        isn't an instance type (assist for ZOracleDA)

Beta 4	        June xx, 2001 (released source only)
	     o  SPARC precision detection change
	     o  Backwards compatible DCOracle prepare() 
	     o  Number conversion correction
	     o  Defer creation of connction cursor, remove class default of
	        None for the connection cursor (getObjects now will succeed
		if no internal cursor exists)
	     o  Bind Long integer inputs as strings vs ints, works
	        properly for both Python 1.5.2 and 2.1 with conditional
		compilation
	     o  Included modified DCOracleStorage

Beta 5	        August 7, 2001
	     o  Added TM/transaction awareness to SP.py re: Monty Taylor
	     o  Changed numeric conversion for stored procedures -- SP's
	        will now properly submit numeric fields as SQLT_STR, and 
		convert back to python int/float/long upon return.
	     o  Merged in a LONG correction off-by-one and initializer bug
	        re: J. Cone
	     o  Reordered deallocation of LOB constructs to release LOB
	        locator before forgetting the service context.
	     o  Changed packaging to be solitary package with pre-built
	        binaries for different platforms in the "binaries" directory.

Release 1	October 25, 2001
	     o  Added name-awareness to ZOracleDA so it will work as either
	     	ZOracleDA or DCO2 for co-existence with DCOracle
	     o  Set prefetch for all statements, default 200 rows & 1MB storage
	     o  Change default fetch size from 1 row to 200 rows (internal 
	        communication between DCOracle2 and dco2)
	     o  rowcount attribute is set after execute() and fetch(), although
	        for fetch operations, it means rows RETRIEVED by the C layer,
		not total available rows.
	     o  Fix non-package procedure definitions (where procedure or
	        function name is doubled up).
	     o  Fix a STUPID duplicate object allocation in ResultSet_alloc
	        which causes a memory leak
	     o  Change default tracing to disable tracing, which substantially
	        speeds up the code.  Tracing is enabled if any trace environment
		variable is set.
	     o  Perform explicit cursor/connection destruction in db.py for
	        ZOracleDA
	     o  Added isOpen() methods to DCOracle2 Connection and Cursor
	        objects (which check internal state only, not the actual
		database availablility)
	     o  Changed ZOracleDA to promote OracleDate objects to DateTime
	        objects in Zope (based on string representation).
	     o  Fixed some NULL handling bugs reported by Chistopher Jenkins
	        which showed up with date ops -- a subsequent BIND (rexecuting
		a previously prepared statement) with a None/NULL would have
		been bound to a string type (dty 5) now will preserve prior dty.
		Also, DCOracle2 executemany() scans for NULL columns and forces
		reprepares when a column contains all NULLs to flush out cached
		bind types (and sets the statement for a reprepare NEXT time
		through as well since the NULLs will snap to dty 5 on prepare,
		which is wrong when the real type comes around).  Also skips
		None for type determination.
	     o  Fixed a bug in DCOracleStorage reported by Rob Foster due
	        to a conversion artifact from the DCOracle to DCOracle2
		conversion.  UndoLog was not being called properly, and
		was raising a __getitem__ attribute error.
	     o  Added skip= parameters to cursor fetchone, fetchmany, and
	     	fetchall.  The skip parameter determines how many rows to
		be discarded before returning results.  This is significantly
		faster than converting unwanted records into python object for
		later discarding.
	     o  Added Version() information on DCOracle2 connection objects
	        to return a dictionary of version strings.
	     o  Extended ZOracleDA debug panel on connection to include
	        connection Version() identification and not raise an error
		if debug tracing is not active.
	     o  Corrected case where cursor execute() did not release the
	        Python interpreter lock.
	     o  Added buildDefs to dco2 module dictionary to see the defines
	        detected by the testora script.  Detection of Oracle9i
		also implies Oracle8i.
	     o  Added LOB length to wrapped ZOracleDA LOB objects (whoops!)
	        Thanks to Peter Brandstrom for pointing that out.  Peter
		also pointed out that the ZOracleDA lob documentation is
		nonexistant.

Release 1.1	
 	     o  Return None on ALL result fetches if they are 0 length,
	        regardless of the type (may be bad).  Uwe Hoffmann found
		a definate problem with DATEs, and INTs seem to be suffering
		as well.
	     o  Added thread logging
	     o  Added per-cursor and per-LOB error handles, so routines
	        don't get the wrong error message because they used the
		connection's error handle
	     o  Tweaked binary installer to only care about minor level
	        of python 2.1
	     o  Fixed tracing bug where a trace entry could dereference a
	        NULL pointer.
	     o  Initialize connection in Object mode
	     o  Made TABLE OF support work with stored procs, input and
	        output
	     o  Made SYNONYMs work with stored procedures for Mike Hewiett
	     o  Made isdst flag for creation of OracleDates default to 
	        unknown, rather than no DST
	     o  Gave OracleDates a __cmp__ method so they can be compared
Release 1.2
	     o  Fix named binds to be reprepared on every statement so
	        you can slip NULLS in on non-string columns (Uwe Hoffman)
		Collector # 46
	     o  Make LobLocator.read() of a zero length lob return a zero
		length string without actually calling OCILobRead
		(Peter Brandstrom) Collector # 45
	     o  Better handling of default arguments to stored procedures.
	        Default args passed in positionally as None (or omitted if
		at end of argument list) will be skipped, and parameter
		construction will shift to named parameter style (parm => value)
		syntax rather than positional for procedure invocation for
		all subsequent parameters.  NOTE:  This change introduces
		an ambiguity for None/NULL for stored procedure invocation.
		If the stored proc argument has a default, None means the
		default in this case rather than NULL. Passing in the
		None argument by name rather than positionally to the stored
		procedure will use NULL always e.g. proc(None) vs
		proc(name=None) where name has a default. Collector # 48
	     o  Change Z Oracle Stored Procedures so that arguments to
	        stored procedures can be acquired automatically from
		REQUEST, or REQUEST and the context.  The acquiring argument
		mode is manageable via the Edit tab on the procedure.  The
		default mode is "Never" which is the old behavior, and requires
		arguments to be explicitly passed. Collector # 47
	     o  Add code to support CLOB and BLOB OUT variables from stored
	        procedures.  Collector # 40
	     o  Make Z Oracle Stored Procedure results go thru the same LOB/Date
	        conversion for ZSQL methods in ZOracleDA
	     o  Don't recreate DatabaseError or ProgrammingError objects in
	        C code, so that when Zope reloads the module they don't get
		recreated (causes problems with error handling, because the
		IDs of the error classes change)
	     o  Add a user-level procedure browser to stored procedure
	        edit screen.
	     o 	Change ROWID support -- ROWIDs much better supported now.
	        ROWID comparison test is broken though (all ROWIDs compare
		equal).  The following will now work: selecting a ROWID from
		a table, and then selecting all values where the ROWID is 
		the rowid returned from the first select.
	     o  Make stored procedures returning a REF_CURSOR perform a 
	        describe() on the cursor
	     o  Added Transaction ID support [preliminary, don't use!]
	     o  Added public synonym enablement for the Describe call
	        thanks to Uwe Hoffman (Collector #58)
	     o  Change CONVERTOUTF(SQLT_DAT) to use unsigned char for
	        data manipulation (Collector #59)
	     o  Cast LONGs to string for executemany() (Collector #64)
	        so they do not overflow the BindingArray buffer.
Post 1.2 CVS
	     o  Add Uwe Hoffman's long fetch status code patch
	     o  Fix LOB copy routine to set the indicator to 0, because
	        it was allocated as -1 (NULL) and that turns lobs into
		temporary LOBs (Collector #72)
	     o  Fix Date creation routine to take all arguments, rather
	        than just timestamps; only simple error checking is done
		on date ranges, negative dates are not allowed, month and
		day must be 1-12 and 1-31 if year is > 0 etc.  Computation
		of "valid" dates (ie leap year, end of month computation)
		is not done. (Collector #74)
	     o  Add __iter__ and next() support on cursors, from Gene Cash.
	        Raises a IndexError on pythons under 2.2 when next() is called
		and no more results are in the result set.
             o  Fix coerce function in OracleDates to Py_INCREF arg 2 when
	        successful coercion occurs, arg 2 is otherwise untouched.
	     o  Date conversion to int will use time only for dates with
	        a year of zero (presumed to be just times)
	     o  Pad binding arrays with an extra record, just to be safe
	     o  Change SP.py to use its own version of TM instead of
	        Shared.DC.ZRDB.TM, because the other version stores volatile
		attributes in nonvolatile names.
             o  Change numeric conversion to use OCINumber calls vs strings
	        The define NATIVE_NUMERIC controls use of the OCI numeric
		calls.
	     o  Change scaling for cases when scale and precision are 0
	        or scale = 0 and precision = 38.  In these two cases, the
		result is presumed to be an INT.  The STRICT_SCALE define
		controls this behavior (if STRICT_SCALE is 1, then the
		old behavior of scale=0 precision=0 will use floats, and
		scale=0 precision=38 will use longs).
	     o  Add BFILE and CFILE support to LOBs, with getFileName and
	        setFileName functions to associate external lobs, and
		fileExists() to determine if the LOB external file exists.
	     o  Make the Date output conversion appropriately bias for local
	     	time for doing its integer computation.  Note that the
		function DateFromTicks() presumes that ticks is in GMT; as
		such, the date generated will NOT match local time (well
		except in the UK, half the year).
	     o  Add NativeNumeric detection for LOB parameter binding of
	        type SQLT_NUM on OUT parameters; make it use SQLT_VNU for
		new native numeric support if its available.
		

Desired Features Not Yet Implemented:

	     o  Named parameters to executemany()
	     o  General cleanup of the python-level code 
	     o  Run time trace control?  (Easy enough to implement)
	     o  Convert to new-style product initialization