1. 15 Jun, 2005 8 commits
    • Neil Conway's avatar
      Change the implementation of hash join to attempt to avoid unnecessary · c119c5bd
      Neil Conway authored
      work if either of the join relations are empty. The logic is:
      
      (1) if the inner relation's startup cost is less than the outer
          relation's startup cost and this is not an outer join, read
          a single tuple from the inner relation via ExecHash()
            - if NULL, we're done
      
      (2) read a single tuple from the outer relation
            - if NULL, we're done
      
      (3) build the hash table on the inner relation
            - if hash table is empty and this is not an outer join,
              we're done
      
      (4) otherwise, do hash join as usual
      
      The implementation uses the new MultiExecProcNode API, per a
      suggestion from Tom: invoking ExecHash() now produces the first
      tuple from the Hash node's child node, whereas MultiExecHash()
      builds the hash table.
      
      I had to put in a bit of a kludge to get the row count returned
      for EXPLAIN ANALYZE to be correct: since ExecHash() is invoked to
      return a tuple, and then MultiExecHash() is invoked, we would
      return one too many tuples to EXPLAIN ANALYZE. I hacked around
      this by just manually detecting this situation and subtracting 1
      from the EXPLAIN ANALYZE row count.
      c119c5bd
    • Neil Conway's avatar
      Minor SGML markup cleanup. · 4aaff553
      Neil Conway authored
      4aaff553
    • Bruce Momjian's avatar
      Remove old *.backup files when we do pg_stop_backup(). This · f4d907ca
      Bruce Momjian authored
      prevents a large number of *.backup files from existing in pg_xlog/
      f4d907ca
    • Bruce Momjian's avatar
      Mention we now support BETWEEN SYMMETRIC. · 713507b0
      Bruce Momjian authored
      Christopher Kings-Lynne
      713507b0
    • Bruce Momjian's avatar
      > Here's a patch I added against plperl, originally against beta5, now · d0925244
      Bruce Momjian authored
      > against rc1. It simply checks with GetDatabaseEncoding() if the current
      > database is in UTF-8, and if so, sets the UTF-8 flag on the arguments
      > that are passed to perl. This means that it isn't necessary to
      > utf8::upgrade() every string, as perl has no way of knowing offhand
      > that a string is UTF-8 -- but postgres does, because the database
      > encoding is specified, so it makes sense to turn the flag on. You
      > should also be able to properly manipulate UTF-8 strings now from
      > plperl as opposed to plperlu, because otherwise you'd have to use
      > encoding 'utf8' which was not allowed. It could also eliminate some
      > unexpected bugs if you assume that perl knows the string is unicode.
      It
      > is enabled only for perl 5.6 and higher, so earlier versions will not
      > be affected.
      >
      > I have been assured by crab that the patch is quite harmless and will
      > not break anything. It would be great to see it in 8 final! :-)
      
      David Kamholz
      d0925244
    • Bruce Momjian's avatar
      This patch makes it possible to use the full set of timezones when doing · 0851a6fb
      Bruce Momjian authored
      "AT TIME ZONE", and not just the shorlist previously available. For
      example:
      
      SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London';
      
      works fine now. It will also obey whatever DST rules were in effect at
      just that date, which the previous implementation did not.
      
      It also supports the AT TIME ZONE on the timetz datatype. The whole
      handling of DST is a bit bogus there, so I chose to make it use whatever
      DST rules are in effect at the time of executig the query. not sure if
      anybody is actuallyi *using* timetz though, it seems pretty
      unpredictable just because of this...
      
      Magnus Hagander
      0851a6fb
    • Bruce Momjian's avatar
      Support 3 and 4-byte unicode characters. · 59559458
      Bruce Momjian authored
      John Hansen
      59559458
    • Bruce Momjian's avatar
      >> Do you agree that using a hashtable for it in general is a good idea · f4c4f1ce
      Bruce Momjian authored
      >> assuming this sideeffect is removed, though?
      >
      >I have no problem with the hashtable, only with preloading it with
      >everything.  What I'd like to see is that the table inherited at fork()
      >contains just the data for the default timezone.  (At least in the
      >normal case where that setting hasn't been changed since postmaster
      >start.)
      
      Here's a patch doing this. Changes score_timezone not to use pg_tzset(),
      and thus not loading all the zones in the cache. The actual timezone
      being picked will be set using set_global_timezone() which in turn calls
      pg_tzset() and loads it in the cache.
      
      Magnus Hagander
      f4c4f1ce
  2. 14 Jun, 2005 21 commits
  3. 13 Jun, 2005 4 commits
    • Tom Lane's avatar
      Change the planner to allow indexscan qualification clauses to use · c186c931
      Tom Lane authored
      nonconsecutive columns of a multicolumn index, as per discussion around
      mid-May (pghackers thread "Best way to scan on-disk bitmaps").  This
      turns out to require only minimal changes in btree, and so far as I can
      see none at all in GiST.  btcostestimate did need some work, but its
      original assumption that index selectivity == heap selectivity was
      quite bogus even before this.
      c186c931
    • Neil Conway's avatar
      Per discussion on -hackers, this patch changes psql's "expanded" output · 07781160
      Neil Conway authored
      mode to only affect the presentation of normal query results, not the
      output of psql slash commands. Documentation updated. I also made
      some unrelated minor psql cleanup. Per suggestion from Stuart Cooper.
      07781160
    • Neil Conway's avatar
      SGML cleanup: consistently use "endterm" in <xref>s that link to the · 8c05ca77
      Neil Conway authored
      reference page for SQL commands, so that the link text is italicized.
      8c05ca77
    • Tom Lane's avatar
      Adjust lo_open() so that specifying INV_READ without INV_WRITE creates · a2fb7b8a
      Tom Lane authored
      a descriptor that uses the current transaction snapshot, rather than
      SnapshotNow as it did before (and still does if INV_WRITE is set).
      This means pg_dump will now dump a consistent snapshot of large object
      contents, as it never could do before.  Also, add a lo_create() function
      that is similar to lo_creat() but allows the desired OID of the large
      object to be specified.  This will simplify pg_restore considerably
      (but I'll fix that in a separate commit).
      a2fb7b8a
  4. 12 Jun, 2005 3 commits
  5. 10 Jun, 2005 4 commits