Version 0.5-9

* Trivial changes to make "R CMD check" happy.

Version 0.5-7

* Remove install.R (to be deprecated as of R 2.3.0).

* Allow empty username/passwords, as per ProC/C++ convention, fixed a 
  memory leak when extracting char data, and added a workaround for the
  incorrect Oracle 9.2 sgls() that reports no select on the first query
  (thanks to David Hinds for all these patches).  

* Modified the configure.in to define the C macro RS_ORA_SQLGLS_WORKAROUND
  when the Oracle version is 9* (should we restirict it to 9i and >9.2?).
  If the macro is defined, we use David Hinds' patch to guess whether the 
  SQL statement being prepared is a select or not.

* Yet another Pro C/C++ bug workaround.  Added --enable-prefetch=1 to the 
  configure script to allow a workaround to the ProC/C++ bug when building 
  on an Oracle 8i but connecting to a Oracle 9i server (thanks to Marco Kienzle 
  for the very informative Pro C/C++ bug report).
  
* Trivial changes to Makefile.win to create windows binaries for 2.2.1.

* Fixed documentation typos.

Version 0.5-6

* After trial and error (under Linux, older Oracle 8), the size for the
  internal dynamic statment (RS_ORA_STATEMENT_LEN) was increased to 20000 
  characters (the Oracle documentation is apparently silent on how big 
  the statement string can be).  This should allow exporting data.frames 
  up to ~255 columns.  Your mileage may vary.

* Include a workaround in oraQuickSQL() to the Pro C/C++ 9.2 bug or 
  "feature" that causes sqlgls() to return the wrong SQL function code 
  (we rely on the value 04 to identify SELECT statements).  See the 
  Pro C/C++ Readme file.

* Thanks to Sunny Ho's painstaking detective work, ROracle now includes 
  SQLCA.H and SQLDA.H (all uppercase) to avoid the nasty PostgreSQL/Oracle 
  co-existance problem (at least) on Red Hat linux systems.  For details, 
  see Sunny's 2004-11-23 posting to R-help "ROracle: fetch return zero rows 
  or empty dataset (a workaround)".

* Fixed the problem of leaving connections open upon disconnection (thanks
  to Rebeca Steffan for the hint.)

* Fixed bug where the indicator variables for prepared statements
  were not re-initialized (thanks to David Hinds for the patch).

* Fixed typo in oraRollbackback().

* Fixed bug in dbReadTable's method that incorrectly processed the default
  for detecting row names.

Version 0.5-5

* Fixed documentation typos.

Version 0.5-4

* Fixed a bug in configure.in that was statically linking 
  by default when it should have been dynamically linking
  and ignoring --enable-static=no.  I also changed the default
  to static linking (this avoids having to set the LD_LIBRARY_PATH).

* Added the configure arg --enable-extralibs (-lsqlplus by default)
  to append oracle libraries to PKG_LIBS.  This, of course, should
  never be needed, but on some Linux Oracle 9 systems the libcnltsh.so 
  library apparently does not include the sqlca symbol.  This argument
  works around this problem.  For details see the file README.Oracle9.

* added the missing PACKAGE= argument to a couple .Call invocations.
Version 0.5-3

* Yet many more changes to the documentation structure (not the
  contents) due to changes in the R help system.

Version 0.5-2 

* Ported to Windows 2000 (see src/Makefile.win for details).

* Fixed a bug in RS_Ora_cpyOraToDataFrame that manifest (apparently)
  only in 64-bit version of R *and* Oracle when copying integers from
  Oracle's buffers to the output data.frame (thanks to Joerg Shaber
  for helping identifying this one).

* Added  --enable-oracle32=[default|yes|no] to the configure script
  to allow R 32-bit binaries to access Oracle's 64-lib installations
  (thanks to Don MacQueen for finding the right incantation).
  See the file INSTALL for more details.  

* Added a patch to work around a bug in (what I think) is in the
  Oracle 9 Pro C/C++ sqlgls() function.  See the file README.Oracle9.

Version 0.5-1

* Fixed a bug in oraQuickSQL() that would incorrectly return an
  OraPrepareStatement object instead of plain OraResult with
  select statements.

* Fixed a typo in dbExistsTable().

* Fixed a bug where an invalid connection string of the form 
  "user@password" (instead of the correct "user/password[@dbname]") 
  would cause a crash.

Version 0.5-0

* This version has an experimental dynamic SQL binding to data frame
  columns.  SQL statements can be "prepared" (parsed and cached
  for improved performance), and columns of data frames bound to
  them for automatic data transfer).  For details see the help()
  for "Oracle", "dbPrepareStatement" and "dbExecStatement".

  (Note, dbPrepareStatement() and dbExecStatement() are extension to
  the DBI package.)

* Host arrays are now operational. These are buffers used by Oracle's
  internal implementation to reduce network traffic and speed
  up fetches and prepared statements.  Currently fetches use a
  default buffer size (host arrays) of size 500 (previous version
  did no buffering).  **Very preliminary** results suggest performance
  improvements on fetching of about a factor of 2.
  (Note that the maximum size of these buffers is limited to about 
  65K bytes per column.)
 
* dbCommit() and dbRollback() are now explicitly implemented,
  but save points are not (you may code them through dynamic SQL).

* The precompiler ProC/C++ is now used with the option PARSE=none
  to avoid bogus C errors with some compilers and/or platforms
  (e.g., Mac OS X).

Version 0.4-0

* The package is now compliant with the R/S Database interface (DBI), 
  see package DBI 0.1-4.  This means that almost all functions have
  new names, but the functionality is exactly the same as the last version.

* Simplified the underlying (support) functions by deleting more than a few,
  and changing their names to start with "ora" (the previous function and
  their names where a vestige of S3 style methods, which we no longer need).

* No changes to the C code (except for minor changes to RS_DBI.c to
  generate more helpful error messages in case of internal errors).

Version 0.3-3

   NOTE: Next major version will comply with the emerging common
         database interface DBI, if agreed by the R-SIG-DB.  This 
         will probably change the function names, but not the basic 
         functionality.


* Some minor clean up of the RS-DBI C code.

* Updated the use of NAs in strings in the C code, according to the new 
  1.5.0 stricter rules.

* added a PROTECT() when re-setting the length of output data.frame 
  during fetching that could lead to random core dumps (thanks to 
  Don MacQueen for reporting this pesky bug).

* getInfo() on a connection object now also returns the password used
  on the connection (needed, e.g., in assignTable, see below).

* A few fixes to assignTable.OraConnection:

    A bug in the SQL*Loader script that assignTable() creates to
    efficiently transfer data.frames to Oracle (the bug was that NAs in
    the last column caused SQL*Loader to fail);

    assingTable() now also provides the password in the call to SQL*Loader 
    to avoid being prompted for it.

    Added an argument "batch=10000"; this is used to write.table() these
    many rows at a time from the data.frame in order to avoid huge memory 
    build ups.  It's still shamefully slow (due to write.table), but at least
    it won't exhaust memory. [Need to find an efficient alternative to 
    write.table(), perhaps we need to write our own specialized C code?]

* Extended the size of the internal connections parameters (user, password 
  and dbname) to 1024 to allow users to embed the tnsnames.ora string, e.g.,

     con <- dbConnect(Oracle(), 
             "user/passwd@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=foo.misc.de)(PORT=1521))(CONNECT_DATA=(SID=TEST))

  [this seems to be an undocumented "feature" that Oracle gurus use quite
  commonly when they don't have privileges to update the network config
  file $ORALCE_HOME/network/admin/tnsname.ora (thanks to Michael Mader for 
  this trick!]

* ifdef all S4/Splus' idioms if(IS_LIST(x)) x = AS_LIST(x).  I'm not sure
  whether these should be PROTECTED in R, but since the idiom is only
  needed in S4/Splus5+, it's better not to have it in R.

* Fixed a bug in SQLDataType.OraConnection (wrong signature).

* Added dbObject validity checks to a bunch of the meta-data functions.

Version 0.3-2

* Added code to be able to copy data.frames to Oracle, see
  assignTable().

Version 0.3-1

* Note that if you statically link against the Oracle libraries
  you may move the resulting package to systems w.o. Oracle (of
  course, subject to the other system being binary compatible).
  If you do this, you may need to provide additional Oracle
  configuration parameters to ROracle.  See the file "README.client"
  for details.

* Ported to R, added a configure script.  

* Implemented a workaround to the very nasty bug in the linux
  implementation of the ProC/C++ (as of 8.1.[567]) (see the function
  filter_buggy_error() in RS-Oracle.pc) The sign was that Oracle
  would give a "fetch out of order" error when there was no fetching
  going on.

* Modified the documentation to pass R CMD check. Unfortunately we now
  have two separate versions of the help (one for Splus, another for R).

Splus-specific

* It nows does the  #include "S.h" conditionally, for the sake of 
  Splus 6.0 (you need to define the macro SPLUS6 in the makefile).

