1. 18 Jan, 2001 13 commits
    • Peter Mount's avatar
      af8630f2
    • Peter Mount's avatar
      Thu Jan 18 17:37:00 GMT 2001 peter@retep.org.uk · 8bc9f001
      Peter Mount authored
              - Added new error message into errors.properties "postgresql.notsensitive"
                This is used by jdbc2.ResultSet when a method is called that should
                fetch the current value of a row from the database refreshRow() for
                example.
              - These methods no longer throw the not implemented but the new noupdate
                error. This is in preparation for the Updateable ResultSet support
                which will overide these methods by extending the existing class to
                implement that functionality, but needed to show something other than
                notimplemented:
                  moveToCurrentRow()
                  moveToInsertRow()
                  rowDeleted()
                  rowInserted()
                  all update*() methods, except those that took the column as a String
                  as they were already implemented to convert the String to an int.
              - getFetchDirection() and setFetchDirection() now throws
                "postgresql.notimp" as we only support one direction.
                The CursorResultSet will overide this when its implemented.
              - Created a new class under jdbc2 UpdateableResultSet which extends
                ResultSet and overides the relevent update methods.
                This allows us to implement them easily at a later date.
              - In jdbc2.Connection, the following methods are now implemented:
                  createStatement(type,concurrency);
                  getTypeMap();
                  setTypeMap(Map);
              - The JDBC2 type mapping scheme almost complete, just needs SQLInput &
                SQLOutput to be implemented.
              - Removed some Statement methods that somehow appeared in Connection.
              - In jdbc2.Statement()
                  getResultSetConcurrency()
                  getResultSetType()
                  setResultSetConcurrency()
                  setResultSetType()
              - Finally removed the old 6.5.x driver.
      8bc9f001
    • Peter Mount's avatar
      Thu Jan 18 12:24:00 GMT 2001 peter@retep.org.uk · 45b5d792
      Peter Mount authored
              - These methods in org.postgresql.jdbc2.ResultSet are now implemented:
                  getBigDecimal(int) ie: without a scale (why did this get missed?)
                  getBlob(int)
                  getCharacterStream(int)
                  getConcurrency()
                  getDate(int,Calendar)
                  getFetchDirection()
                  getFetchSize()
                  getTime(int,Calendar)
                  getTimestamp(int,Calendar)
                  getType()
                NB: Where int represents the column name, the associated version
                    taking a String were already implemented by calling the int
                    version.
              - These methods no longer throw the not implemented but the new noupdate
                error. This is in preparation for the Updateable ResultSet support
                which will overide these methods by extending the existing class to
                implement that functionality, but needed to show something other than
                notimplemented:
                  cancelRowUpdates()
                  deleteRow()
              - Added new error message into errors.properties "postgresql.noupdate"
                This is used by jdbc2.ResultSet when an update method is called and
                the ResultSet is not updateable. A new method notUpdateable() has been
                added to that class to throw this exception, keeping the binary size
                down.
              - Added new error message into errors.properties "postgresql.psqlnotimp"
                This is used instead of unimplemented when it's a feature in the
                backend that is preventing this method from being implemented.
              - Removed getKeysetSize() as its not part of the ResultSet API
      
      Thu Jan 18 09:46:00 GMT 2001 peter@retep.org.uk
              - Applied modified patch from Richard Bullington-McGuire
                <rbulling@microstate.com>. I had to modify it as some of the code
                patched now exists in different classes, and some of it actually
                patched obsolete code.
      
      Wed Jan 17 10:19:00 GMT 2001 peter@retep.org.uk
              - Updated Implementation to include both ANT & JBuilder
              - Updated README to reflect the changes since 7.0
      	- Created jdbc.jpr file which allows JBuilder to be used to edit the
                source. JBuilder _CAN_NOT_ be used to compile. You must use ANT for
                that. It's only to allow JBuilders syntax checking to improve the
                drivers source. Refer to Implementation for more details
      45b5d792
    • Hiroshi Inoue's avatar
      Fix some leaks(was my fault). · 89ac6439
      Hiroshi Inoue authored
      89ac6439
    • Thomas G. Lockhart's avatar
      Fix up "Postgres-style" time interval representation when fields have · 6acdebbd
      Thomas G. Lockhart authored
       mixed-signs. Previous effort left way too many minus signs, and was at
       least as broken as the one before that :(
      Clean up "ISO-style" time interval representation to omit zero fields if
       there is at least one non-zero field. Supress some leading plus signs
       when not necessary for clarity.
      Replace every #ifdef __CYGWIN__ block with a cleaner TIMEZONE_GLOBAL macro
       defined in datetime.h.
      6acdebbd
    • Thomas G. Lockhart's avatar
      6439de17
    • Thomas G. Lockhart's avatar
    • Tom Lane's avatar
      Fix performance issue with qualifications on VIEWs: outer query should · b06fbc7a
      Tom Lane authored
      try to push restrictions on the view down into the view subquery,
      so that they can become indexscan quals or what-have-you rather than
      being applied at the top level of the subquery.  7.0 and before were
      able to do this, though in a much klugier way, and I'd hate to have
      anyone complaining that 7.1 is stupider than 7.0 ...
      b06fbc7a
    • Thomas G. Lockhart's avatar
      7705581e
    • Bruce Momjian's avatar
      Add "OK, OK, Hiroshi's right" thread. · 78765435
      Bruce Momjian authored
      78765435
    • Hiroshi Inoue's avatar
      Change LockClassinfoForUpdate() to retry mark4update() in case · 53ebb228
      Hiroshi Inoue authored
      the tuple is already uodated. (If LockClassinfoForUpdate() is
      thought to be useful).
      53ebb228
    • Bruce Momjian's avatar
      Update TODO list. · 5322bf46
      Bruce Momjian authored
      5322bf46
    • Bruce Momjian's avatar
      Update TODO list. · 56e10b0e
      Bruce Momjian authored
      56e10b0e
  2. 17 Jan, 2001 6 commits
    • Bruce Momjian's avatar
      Functions -> Function's · 392793b1
      Bruce Momjian authored
      392793b1
    • Bruce Momjian's avatar
      attached is a patch that makes SysV semaphore emulation · 978c03f9
      Bruce Momjian authored
      using POSIX semaphores more robust on Darwin 1.2/Mac OS X
      Public Beta.  this is for the version of 7.1 available
      via anon cvs as of Jan 14 2001 14:00 PST.
      
      since the semaphores and shared memory created by this
      emulator are shared with the backends via fork(), their
      persistent names are not necessary.  removing their
      names with shm_unlink() and sem_unlink() after creation
      obviates the need for any "ipcclean" function.  further,
      without these changes, the shared memory (and, therefore,
      the semaphores) will not be re-initialized/re-created after
      the first execution of the postmaster, until reboot
      or until some (non-existent) ipcclean function is executed.
      
      this patch does the following:
      
         1) if the shared memory segment "SysV_Sem_Info" already
            existed, it is cleaned up.  it shouldn't be there anyways.
      
         2) the real indicator for whether the shared memory/semaphore
            emulator has been initialized is if "SemInfo" has been
            initialized.  the shared memory and semaphores must be
            initialized regardless of whether there was a garbage shared
            memory segment lying around.
      
         3) the shared memory segment "SysV_Sem_Info" is created with "O_EXCL"
            to catch the case where two postmasters might be starting
            simultaneously, so they don't both end up with the same shared
            memory (one will fail).  note that this can't be done with the
            semaphores because Darwin 1.2 has a bug where attempting to
            open an existing semaphore with "O_EXCL" set will ruin the
            semaphore until the next reboot.
      
         4) the shared memory segment "SysV_Sem_Info" is unlinked after
            it is created.  it will then exist without a name until the
            postmaster and all backend children exit.
         5) all semaphores are unlinked after they are created.  they'll
            then exist without names until the postmaster and all backend
            children exit.
      
      -michael thornburgh, zenomt@armory.com
      978c03f9
    • Bruce Momjian's avatar
      5088f074
    • Thomas G. Lockhart's avatar
      Change comparisons of tm->tm_isdst from "nonzero" to "greater than zero". · 8e984038
      Thomas G. Lockhart authored
       Not sure why some were this way, and others were already correct, but it
       seems to have been like this for several years.
      This caused problems on a few damaged platforms like AIX and IRIX which do
       not support DST calculations for years before 1970.
      Thanks to Andreas Zeugswetter <ZeugswetterA@wien.spardat.at> for finding
       the problem.
      8e984038
    • Bruce Momjian's avatar
      There are misprints in postgres doc., in : · 9a342d20
      Bruce Momjian authored
      Chapter 10. PL/pgSQL - SQL Procedural Language (c40914117.htm)
      
      Statements
      ...
      (resulting in a PL/pgSQL internal SELECT).
      But there are cases where someone isn't interested int
      -----------------------------------------(have to be)-->
      But there are cases where someone isn't interested in
           the functions result.
      
       RAISE level format''
      --(have to be)-->
       RAISE level 'format'
      9a342d20
    • Bruce Momjian's avatar
      Move structure comments from the top block down to the line entries for · 26e03211
      Bruce Momjian authored
      this file to match all the other files, and to be clearer.
      26e03211
  3. 16 Jan, 2001 3 commits
  4. 15 Jan, 2001 4 commits
  5. 14 Jan, 2001 6 commits
  6. 13 Jan, 2001 8 commits
    • Peter Eisentraut's avatar
    • Bruce Momjian's avatar
      Backed out: · 0651a579
      Bruce Momjian authored
      ---------------------------------------------------------------------------
      
      Attached is a set of patches for a couple of bugs dealing with
      timestamps in JDBC.
      
      Bug#1) Incorrect timestamp stored in DB if client timezone different
      than DB.
      0651a579
    • Peter Eisentraut's avatar
      Add information about bit types. Adjust some other things to promote · 526427f6
      Peter Eisentraut authored
      SQL type names over internal type names.
      526427f6
    • Bruce Momjian's avatar
      Attached is a set of patches for a couple of bugs dealing with · 475c1452
      Bruce Momjian authored
      timestamps in JDBC.
      
      Bug#1) Incorrect timestamp stored in DB if client timezone different
      than DB.
      
      The buggy implementation of setTimestamp() in PreparedStatement simply
      used the toString() method of the java.sql.Timestamp object to convert
      to a string to send to the database.  The format of this is yyyy-MM-dd
      hh:mm:ss.SSS which doesn't include any timezone information.  Therefore
      the DB assumes its timezone since none is specified.  That is OK if the
      timezone of the client and server are the same, however if they are
      different the wrong timestamp is received by the server.  For example if
      the client is running in timezone GMT and wants to send the timestamp
      for noon to a server running in PST (GMT-8 hours), then the server will
      receive 2000-01-12 12:00:00.0 and interprete it as 2000-01-12
      12:00:00-08 which is 2000-01-12 04:00:00 in GMT.  The fix is to send a
      format to the server that includes the timezone offset.  For simplicity
      sake the fix uses a SimpleDateFormat object with its timezone set to GMT
      so that '+00' can be used as the timezone for postgresql.  This is done
      as SimpleDateFormat doesn't support formating timezones in the way
      postgresql expects.
      
      Bug#2) Incorrect handling of partial seconds in getting timestamps from
      the DB
      
      When the SimpleDateFormat object parses a string with a format like
      yyyy-MM-dd hh:mm:ss.SS it expects the fractional seconds to be three
      decimal places (time precision in java is miliseconds = three decimal
      places).  This seems like a bug in java to me, but it is unlikely to be
      fixed anytime soon, so the postgresql code needed modification to
      support the java behaviour.  So for example a string of '2000-01-12
      12:00:00.12-08' coming from the database was being converted to a
      timestamp object with a value of 2000-01-12 12:00:00.012GMT-08:00.  The
      fix was to check for a '.' in the string and if one is found append on
      an extra zero to the fractional seconds part.
      
      Bug#3) Performance problems
      
      In fixing the above two bugs, I noticed some things that could be
      improved.  In PreparedStatement.setTimestamp(),
      PreparedStatement.setDate(), ResultSet.getTimestamp(), and
      ResultSet.getDate() these methods were creating a new SimpleDateFormat
      object everytime they were called.  To avoid this unnecessary object
      creation overhead, I changed the code to use static variables for
      keeping a single instance of the needed formating objects.
      Also the code used the + operator for string concatenation.  As everyone
      should know this is very inefficient and the use of StringBuffers is
      prefered.
      
      I also did some cleanup in ResultSet.getTimestamp().  This method has
      had multiple patches applied some of which resulted in code that was no
      longer needed.  For example the ISO timestamp format that postgresql
      uses specifies the timezone as an offset like '-08'.  Code was added at
      one point to convert the postgresql format to the java one which is
      GMT-08:00, however the old code was left around which did nothing.  So
      there was code that looked for yyyy-MM-dd hh:mm:sszzzzzzzzz and
      yyyy-MM-dd hh:mm:sszzz.  This second format would never be encountered
      because zzz (i.e. -08) would be converted into the former (also note
      that the SimpleDateFormat object treats zzzzzzzzz and zzz the same, the
      number of z's does not matter).
      
      
      There was another problem/fix mentioned on the email lists today by
      mcannon@internet.com which is also fixed by this patch:
      
      Bug#4) Fractional seconds lost when getting timestamp from the DB
      A patch by Jan Thomea handled the case of yyyy-MM-dd hh:mm:sszzzzzzzzz
      but not the fractional seconds version yyyy-MM-dd hh:mm:ss.SSzzzzzzzzz.
      
      The code is fixed to handle this case as well.
      
      Barry Lind
      475c1452
    • Bruce Momjian's avatar
      More cleanup. · 20dfd50c
      Bruce Momjian authored
      20dfd50c
    • Tom Lane's avatar
      Relax test on typmod matching between a table and its proposed ON SELECT · 160675ec
      Tom Lane authored
      rule.  Needed to avoid failure when reloading a 7.0 pg_dump of a view
      that has a NUMERIC column.
      160675ec
    • Peter Eisentraut's avatar
      Windows wants shared libraries in PATH. · f8bdef07
      Peter Eisentraut authored
      f8bdef07
    • Marc G. Fournier's avatar
      · 25c0ffb9
      Marc G. Fournier authored
      check one last time for any erros ...
      25c0ffb9