1. 15 Jan, 2001 2 commits
    • Tom Lane's avatar
      Fix problems with parentheses around sub-SELECT --- for the last time, · 3db4056e
      Tom Lane authored
      I hope.  I finally realized that we were going at it backwards: when
      there are excess parentheses, they need to be treated as part of the
      sub-SELECT, not as part of the surrounding expression.  Although either
      choice yields an unambiguous grammar, only this way produces a grammar
      that is LALR(1).  With the old approach we were guaranteed to fail on
      either 'SELECT (((SELECT 2)) + 3)' or
      'SELECT (((SELECT 2)) UNION SELECT 2)' depending on which way we
      resolve the initial shift/reduce conflict.  With the new way, the same
      reduction track can be followed in both cases until we have advanced
      far enough to know whether we are done with the sub-SELECT or not.
      3db4056e
    • Tom Lane's avatar
      Tweak heap_update/delete so that we do not hold the buffer context lock · efd6cade
      Tom Lane authored
      on the old tuple's page while we are doing TOAST pushups.
      efd6cade
  2. 14 Jan, 2001 6 commits
  3. 13 Jan, 2001 16 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
    • Peter Eisentraut's avatar
      New shell for the to be written CHECKPOINT documentation, so the summary · 2a6c0822
      Peter Eisentraut authored
      shows up in psql now.
      2a6c0822
    • Marc G. Fournier's avatar
      · 1fc331bb
      Marc G. Fournier authored
      ignore his too
      1fc331bb
    • Marc G. Fournier's avatar
      · 3c085b1b
      Marc G. Fournier authored
      and this time?
      3c085b1b
    • Marc G. Fournier's avatar
      · d5e66044
      Marc G. Fournier authored
      try this again ...
      d5e66044
    • Peter Eisentraut's avatar
      Clean up garbage. · 16cc90cc
      Peter Eisentraut authored
      16cc90cc
    • Peter Eisentraut's avatar
      Surely one README file is enough. · bc615509
      Peter Eisentraut authored
      bc615509
    • Bruce Momjian's avatar
    • Marc G. Fournier's avatar
      · 3f8ea178
      Marc G. Fournier authored
      okay, this appears to work ...
      
      onlly changes aer adding some white space ...
      3f8ea178
  4. 12 Jan, 2001 14 commits
    • Peter Eisentraut's avatar
      daa78233
    • Peter Eisentraut's avatar
      a32542a1
    • Tom Lane's avatar
      Add more critical-section calls: all code sections that hold spinlocks · 6162432d
      Tom Lane authored
      are now critical sections, so as to ensure die() won't interrupt us while
      we are munging shared-memory data structures.  Avoid insecure intermediate
      states in some code that proc_exit will call, like palloc/pfree.  Rename
      START/END_CRIT_CODE to START/END_CRIT_SECTION, since that seems to be
      what people tend to call them anyway, and make them be called with () like
      a function call, in hopes of not confusing pg_indent.
      I doubt that this is sufficient to make SIGTERM safe anywhere; there's
      just too much code that could get invoked during proc_exit().
      6162432d
    • Bruce Momjian's avatar
      Update TODO list. · be8477bc
      Bruce Momjian authored
      be8477bc
    • Bruce Momjian's avatar
      Update TODO list. · ab1c71d0
      Bruce Momjian authored
      ab1c71d0
    • Philip Warner's avatar
      d63e41e9
    • Bruce Momjian's avatar
      Add to DROP todo. · ed7f37b7
      Bruce Momjian authored
      ed7f37b7
    • Bruce Momjian's avatar
      Update TODO list. · 3fbd4d4b
      Bruce Momjian authored
      3fbd4d4b
    • Bruce Momjian's avatar
      Update TODO list. · 1c7d7528
      Bruce Momjian authored
      1c7d7528
    • Tom Lane's avatar
      Bring CREATE TABLE syntax synopsis into line with reality; update a · 359459a4
      Tom Lane authored
      bunch of old or poorly-worded documentation.
      359459a4
    • Philip Warner's avatar
      - Check ntuples == 1 for various SELECT statements. · 06ef1ef2
      Philip Warner authored
      - Fix handling of --tables=* (multiple tables never worked properly, AFAICT)
      - strdup() the current user in DB routines
      - Check results of IO routines more carefully.
      - Check results of PQ routines more carefully.
      
      Have not fixed index output yet.
      06ef1ef2
    • Tom Lane's avatar
      Preserve constraints and column defaults during CLUSTER. · 565639cd
      Tom Lane authored
      Wish they were all this easy ...
      565639cd
    • Marc G. Fournier's avatar
      · 1db943b3
      Marc G. Fournier authored
      commit Oleg and Teodor's RD-tree implementation ... this provides the
      regression tests for the GiST changes ... this should be integrated into
      the regular regression tests similar to Vadim's SPI contrib stuff ...
      1db943b3
    • Marc G. Fournier's avatar
      · 0ad7db4b
      Marc G. Fournier authored
      New feature:
         1. Support of variable size keys - new algorithm of insertion to tree
            (GLI - gist layrered insertion). Previous algorithm was implemented
            as described in paper by Joseph M. Hellerstein et.al
            "Generalized Search Trees for Database Systems".  This (old)
            algorithm was not suitable for variable size keys and could be
            not effective ( walking up-down ) in case of multiple levels split
      Bug fixed:
         1. fixed bug in gistPageAddItem - key values were written to disk
            uncompressed. This caused failure if decompression function
            does real job.
         2. NULLs handling - we keep NULLs in tree. Right way is to remove them,
            but we don't know how to inform vacuum about index statistics. This is
            just cosmetic warning message (like in case with R-Tree),
            but I'm not sure how to recognize real problem if we remove NULLs
            and suppress this warning as Tom suggested.
         3. various memory leaks
      
      This work was done by Teodor Sigaev (teodor@stack.net) and
      Oleg Bartunov (oleg@sai.msu.su).
      0ad7db4b
  5. 11 Jan, 2001 2 commits