SQLJ RUNTIME PACKAGES RELEASE NOTES

This document logs changes made to the SQLJ runtime and profile APIs
between versions. Note that the version numbers are in terms of the
reference implementation release version, and not any vendor-specific
version.  Please consult javadoc generated documentation for further
details on modified classes and methods.

-------------------------------------------------------------------------------
*******************************************************************************
Changes made to version 0722 (??/??/??) since version 0711 (03/06/98)
*******************************************************************************
-------------------------------------------------------------------------------

Change Overview:

- All message strings produced by utilies in package
  sqlj.runtime.profile.util have been made internationalizable.  
- SET TRANSACTION statement support improved
- multiple side-channel result support added
- SELECT..INTO variable names stored in the profile as non-null
- most connection context constructors now require autocommit parameter
- support for with-clause added (sensitivity, holdability, etc)
- support for untyped iterators removed (now Oracle-only feature)
- support for iterator conversion statement removed (now Oracle-only feature)
- JAR and IDE support added to profile CustomizerHarness utility

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime
-------------------------------------------------------------------------------

*** ExecutionContext ***

- added method execute
- added method getNextResultSet

-------------------------------------------------------------------------------

*** ConnectionnContext ***

- overview of generated connection context updated

-------------------------------------------------------------------------------

*** ResultSetIterator ***

- "sensitivity" constants added

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile
-------------------------------------------------------------------------------

*** SetTransactionDescriptor ***

- class added

-------------------------------------------------------------------------------

*** EntryInfo ***

- add constant role SET_TRANSACTION
- add method getTransactionDescriptor
- removed role constants TRANSACTION_ISOLATION and TRANSACTION_READ_ONLY
- removed result set type constant DYNAMIC_RESULT
- removed role constant ITERATOR_CONVERSION

-------------------------------------------------------------------------------

*** RTResultSet ***

- findColumn definition clarified

-------------------------------------------------------------------------------

*** RTStatement ***

- method getRTResultSet replaced with getResultSet returning JDBC ResultSet

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.ref
-------------------------------------------------------------------------------

*** ConnectionContextImpl ***

- updated most constructors to require explicit auto-commit param

-------------------------------------------------------------------------------

*** DefaultContext ***

- updated most constructors to require explicit auto-commit param

-------------------------------------------------------------------------------

*** IterConvertProfile ***

- class removed

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile.ref
-------------------------------------------------------------------------------

*** RTStatementJDBCBase ***

- method getRTResultSet replaced with getResultSet returning JDBC ResultSet

-------------------------------------------------------------------------------

*** RTStatementWrapper ***

- method getRTResultSet replaced with getResultSet returning JDBC ResultSet

-------------------------------------------------------------------------------

*** LocalStatement ***

- class added 
- now used by IterConvertProfile, PositionedProfile, TransactionControlProfile

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile.util
-------------------------------------------------------------------------------

*** ProfileIOContext ***

- class added

-------------------------------------------------------------------------------

*** CustomizerHarness ***

- customizeProfile method rewritten in terms of ProfileIOContext
- JAR file customization capability implemented

-------------------------------------------------------------------------------

** ProfilePrinter ***

- now implements ProfileCustomizer

-------------------------------------------------------------------------------

*** AuditedProfile ***

- method getRTResultSet replaced with getResultSet returning JDBC ResultSet

-------------------------------------------------------------------------------

*** SerProfileToClass ***

- bug fixed when profile part of package.

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.error
-------------------------------------------------------------------------------

*** Errors ***

- added constants defining common SQLJ runtime SQLState values.
- raiseXXX methods require SQLState value to be passed.

-------------------------------------------------------------------------------
*******************************************************************************
Changes made to version 0711 (03/06/98) since version 0611 (12/15/97)
*******************************************************************************
-------------------------------------------------------------------------------

Change Overview:

- profile debugging information added, including source file name and line
  numbers
- parameter marker index information added to TypeInfo class
- encoding of POSITIONED profile entries changed
- ResultSetIterator removed rowCount method
- addition of ITERATOR_CONVERSION profile entry role
- addition of result set class name to each profile entry
- addition of ProfileCustomizer and CustomizerHarness classes
- addition of RTStatement, RTResultSet interfaces in place of JDBC
  statement and result set interfaces.

Compatability Notes: 

- This release includes changes to the runtime classes that are
  incompatible with previous versions.  Any existing SQLJ binary
  applications will need to be recompiled.

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime
-------------------------------------------------------------------------------

*** ConnectionContext ***

- class overview documentation updated to reflect constructor change

-------------------------------------------------------------------------------

*** ExecutionContext ***

- registerStatement method updated to create and return RTStatement
- executeQuery returns RTResultSet

-------------------------------------------------------------------------------

*** ResultSetIterator ***

- rowCount method removed

-------------------------------------------------------------------------------

*** PositionedIterator ***

- endFetch method semantics changed to also return true before first row.

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.ref
-------------------------------------------------------------------------------

*** ConnectionContextImpl ***

- constuctor(ConnectionContextImpl) changed to constructor(ConnectionContext)
- remove static getConnectedProfile(ConnectionContext,Object) method

-------------------------------------------------------------------------------

*** DefaultContext ***

- constuctor(DefaultContext) changed to constructor(ConnectionContext)

-------------------------------------------------------------------------------

*** ResultSetIterImpl ***

- reimplemented to use RTResultSets instead of JDBC ResultSets
- rowCount method removed
- endFetch semantics updated

-------------------------------------------------------------------------------

*** RTPreparedStatement ***
*** RTCallableStatement ***
*** RTResultSet ***

- classes removed (replaced by RT* classes in profile package)

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile
-------------------------------------------------------------------------------

*** ProfileData ***

- added method getJavaType(String) similar to getJavaType(TypeInfo)

-------------------------------------------------------------------------------

*** ConnectedProfile ***

- removed prepareCall, prepareStatement methods
- added getStatement method that returns RTStatement

-------------------------------------------------------------------------------

*** RTStatement ***
*** RTResultSet ***

- added new classes that encapsulate JDBC-like behavior

-------------------------------------------------------------------------------

*** PositionedDecsriptor ***

Class removed.  EntryInfo.getDescriptor() for POSITIONED entries now
return Integer indicating cursor parameter.  The cursor text position
can be found with TypeInfo.getMarkerIndex().

-------------------------------------------------------------------------------

*** EntryInfo ***

- method getDescriptor() returns Integer for POSITIONED entries, not
  PositionedDescriptor object.  Integer value indicates cursor parameter
  number.  The cursor text position can be found with 
  TypeInfo.getMarkerIndex().
- add abstract method getLineNumber() returning line number of this
  operation in original source file.
- add abstract method getResultSetName() returning class name of the
  strongly typed result set populated by this entry.
- add new role: ITERATOR_CONVERSION
 
-------------------------------------------------------------------------------

*** ProfileData ***

- add abstract method getSourceFile() returning name of the original
  source file for this profile.

-------------------------------------------------------------------------------

*** TypeInfo ***

- add abstract method getMarkerIndex() returning index of this parameter's
  marker (?) in the SQL string.

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile.ref
-------------------------------------------------------------------------------

*** EntryInfoImpl ***

- implement method getLineNumber() returning line number of this
  operation in original source file.
- implement method getResultSetName()
- constructor updated to take additional line number, result set name
  parameters. 

-------------------------------------------------------------------------------

*** ProfileDataImpl ***

- implement method getSourceFile() returning name of the original
  source file for this profile.
- constructor updated to take additional source file parameter.

-------------------------------------------------------------------------------

*** ProfileImpl ***

- constructor updated to take additional source file parameter.
- getDefaultProfile method no longer creates TypeRegisterProfile
- getDefaultProfile method additionally creates IterConvertProfile

-------------------------------------------------------------------------------

*** TypeInfoImpl ***

- implement method getMarkerIndex() returning index of this parameter's
  marker (?) in the SQL string.
- constructor updated to take marker index as parameter.
- constructor added that defaults mode and marker index for
  type info objects representing result columns.

-------------------------------------------------------------------------------

*** PositionedProfile ***

Reimplemented to reflect removal of PositionedDescriptor, and changes 
to EntryInfo.getDescriptor() and TypeInfo.getMarkerIndex().

- constructor of PositionedProfile.PositionedStatement class takes
  cusrorMarkerIndex and cursorParamNum parameters instead of positioned
  descriptor object.
- implementation updated to use RTStatement

-------------------------------------------------------------------------------

*** PreparedStatementWrapper ***
*** CallableStatementWrapper ***
*** ResultSetWrapper ***

- classes removed (replaced with encapsulated RT*Wrapper classes) 

-------------------------------------------------------------------------------

*** TypeRegisterProfile ***

- class removed (impl moved to JDBCProfile, RTStatementJDBCCallable)

-------------------------------------------------------------------------------

*** RTStatementJDBCBase ***
*** RTStatementJDBCPrepared ***
*** RTStatementJDBCCallable ***
*** RTResultSetJDBC ***

- classes added (implement RTStatement, RTResultSet using JDBC)

-------------------------------------------------------------------------------

*** RTStatementWrapper ***
*** RTResultSetWrapper ***

- classes added

-------------------------------------------------------------------------------

*** DynamicProfile ***

- method prepareCall changed to return RTStatement
- method prepareStatement changed to return RTStatement

-------------------------------------------------------------------------------
 
*** JDBCProfile ***

- updated to create RTStatement (using RT*JDBC* classes above)

-------------------------------------------------------------------------------
 
*** ProfileWrapper ***
*** TransactionControlProfile ***

- updated to use RTStatement

-------------------------------------------------------------------------------

*** IterConvertProfile ***

- class added to handle profile entries with role = ITERATOR_CONVERSION.

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile.util
-------------------------------------------------------------------------------

*** DataCustomizer ***

- add customizeMarkerIndex method.
- method newTypeInfo takes additional marker index parameter.
- add customizeSourceFile method.
- method newProfileData takes additional source file parameter.
- add customizeLineNumber method.
- add customizeResultSetName method.
- method newEntryInfo takes additional line number, result set name parameters.

-------------------------------------------------------------------------------

*** ProfilePrinter ***

- printout includes marker index for each parameter and result type.
- printout includes source file name for profile data.
- printout includes line number for each entry.
- printout includes result set name for each entry.

-------------------------------------------------------------------------------

*** ProfileCustomizer ***

- new interface added 

-------------------------------------------------------------------------------

*** AuditedProfile ***

- updated to audit RTStatement and RTResultSet objects.  
- direct JDBC auditing support removed

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.error
-------------------------------------------------------------------------------

*** RuntimeRefErrors ***

- removed INCOMPATIBLE_TYPE error (moved to profile ref)

-------------------------------------------------------------------------------

*** RuntimeRefErrors ***

- added INCOMPATIBLE_TYPE error (moved from runtime ref)

-------------------------------------------------------------------------------

*** ProfileRefErrors ***

- added EXPECTED_EXECUTE_QUERY error
- added UNEXPECTED_PARAMS error (replaces EXPECTED_NO_PARAMS) 

-------------------------------------------------------------------------------
*******************************************************************************
Changes made to version 0611 (12/15/97) since version 0511 (10/23/97)
*******************************************************************************
-------------------------------------------------------------------------------

base package name jsql changed to sqlj

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime
-------------------------------------------------------------------------------

*** ConnectionContext ***

- removed method setExecutionContext

-------------------------------------------------------------------------------

*** JSQLRuntime ***

- renamed to RuntimeContext 
- all refs to JSQLRuntime changed to RuntimeContext
- PROPERTY_KEY value is sqlj.runtime instead of jsql.runtime

-------------------------------------------------------------------------------

*** ExecutionContext ***

- made concrete class, replacing class sqlj.runtime.ref.ExecutionContextImpl
- removed exception throwing from get/set methods
- added QUERY_COUNT, EXCEPTION_COUNT constants for use with update count
- added methods registerStatement, executeUpdate, executeQuery, and
  releaseStatement 

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.ref
-------------------------------------------------------------------------------

*** ConnectionContextImpl ***

- removed method setExecutionContext
- added static method getConnectedProfile, used by codegen

-------------------------------------------------------------------------------

*** JSQLCallableStatement ***

- renamed to RTCallableStatement
- added method getBigDecimal(int) 
- added method getObject(int, Class)
- renamed method toJSQLPreparedStatement as toRTPreparedStatement

-------------------------------------------------------------------------------

*** JSQLPreparedStatement ***

- renamed to RTPreparedStatement
- constructed with ExecutionContext instance (passed by codegen),
  underlying statement registered with passed execution context
- close method delays close of underlying JDBC statement until all open
  result sets are also closed
- close of a runtime statement causes the statement to be released from
  the associated execution context
- override methods executeUpdate, executeQuery using execution context

-------------------------------------------------------------------------------

*** JSQLResultSet ***

- renamed to RTResultSet
- added method getBigDecimal(int) 
- added method getObject(int, Class)

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile
-------------------------------------------------------------------------------

*** Customizer ***

- renamed as Customization
- all references to this class updated accordingly

-------------------------------------------------------------------------------

*** DefaultLoader ***

- getResourceAsStream method catches SecurityException from underlying
  call, returns null instead of propogating exception.  Added to insure
  uniform behavior with browsers.

-------------------------------------------------------------------------------

*** Profile ***

- method registerCustomizer renamed registerCustomization.
- registerCustomization doc clarification
- add method registerCustomization(new, before)
- add method replaceCustomization(new, old)
- method deregisterCustomizer renamed deregisterCustomization
- deregisterCustomization doc clarification
- method getCustomizer renamed getCustomizations
- added static method instantiate(Loader,InputStream) (previously private)

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile.ref
-------------------------------------------------------------------------------

*** PositionedProfile ***

- override setWrappedProfile method
- made inner PositionedStatement class non-static which uses positioned
  profile instance's dynamic profile

-------------------------------------------------------------------------------

*** ProfileImpl ***

- implement new registerCustomization, replaceCustomization methods
- update implementation of registerCustomization, deregisterCustomization
  methods with exceptions in boundary cases.

-------------------------------------------------------------------------------

*** ProfileWrapper ***

- added method boolean setWrappedProfile

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.profile.util
-------------------------------------------------------------------------------

*** AuditedProfile ***

- override setWrappedProfile method
- audits are done passing wrapped object rather than "this"
- removed Auditor inner class

-------------------------------------------------------------------------------

*** Auditor ***

- made top-level class, moved out of AuditedProfile scope

-------------------------------------------------------------------------------

*** AuditorInstaller ***

- new class serves as utility to install debugging into profiles

-------------------------------------------------------------------------------

*** DataCustomizer ***

- main method operates only on files with .ser extension

-------------------------------------------------------------------------------

*** ProfilePrinter ***

- now operates on files with .ser extension in addition to profile names
  of form x.y.z
- prints each customization stored using toString

-------------------------------------------------------------------------------
PACKAGE sqlj.runtime.error
-------------------------------------------------------------------------------

*** RuntimeErrors ***

- added CONCURRENT_EXEC error (moved from runtime ref)

-------------------------------------------------------------------------------

*** RuntimeRefErrors ***

- removed CONCURRENT_EXEC error (moved to runtime)
- added INCOMPATIBLE_TYPE error
- added NULL_CONN_CTX error
- added NULL_EXEC_CTX error
- remove INVALID_EXEC_CTX error

-------------------------------------------------------------------------------
