1. 22 Apr, 2008 2 commits
  2. 21 Apr, 2008 9 commits
    • Tom Lane's avatar
      Fix convert_IN_to_join to properly handle the case where the subselect's · ff673f55
      Tom Lane authored
      output is not of the same type that's needed for the IN comparison (ie,
      where the parser inserted an implicit coercion above the subselect result).
      We should record the coerced expression, not just a raw Var referencing
      the subselect output, as the quantity that needs to be unique-ified if
      we choose to implement the IN as Unique followed by a plain join.
      
      As of 8.3 this error was causing crashes, as seen in bug #4113 from Javier
      Hernandez, because the executor was being told to hash or sort the raw
      subselect output column using operators appropriate to the coerced type.
      
      In prior versions there was no crash because the executor chose the
      hash or sort operators for itself based on the column type it saw.
      However, that's still not really right, because what's unique for one data
      type might not be unique for another.  In corner cases we could get multiple
      outputs of a row that should appear only once, as demonstrated by the
      regression test case included in this commit.
      
      However, this patch doesn't apply cleanly to 8.2 or before, and the code
      involved has shifted enough over time that I'm hesitant to try to back-patch.
      Given the lack of complaints from the field about such corner cases, I think
      the bug may not be important enough to risk breaking other things with a
      back-patch.
      ff673f55
    • Magnus Hagander's avatar
      Clean up float4byval and float8byval handling by dealing with them completely · a31b03ba
      Magnus Hagander authored
      from inside the build script.
      a31b03ba
    • Magnus Hagander's avatar
      Fix typo, noted by Stefan Kaltenbrunner. · be9ab113
      Magnus Hagander authored
      be9ab113
    • Magnus Hagander's avatar
      de6e4c9d
    • Magnus Hagander's avatar
      Add link to major version release notes at the top of the minor · 3bb6d101
      Magnus Hagander authored
      version ones, to make it clear to users just browsing the notes
      that there are a lot more changes available from whatever version
      they are at than what's in the minor version release notes.
      3bb6d101
    • Tom Lane's avatar
      Fix a couple of places in execMain that erroneously assumed that SELECT FOR · f593f623
      Tom Lane authored
      UPDATE/SHARE couldn't occur as a subquery in a query with a non-SELECT
      top-level operation.  Symptoms included outright failure (as in report from
      Mark Mielke) and silently neglecting to take the requested row locks.
      
      Back-patch to 8.3, because the visible failure in the INSERT ... SELECT case
      is a regression from 8.2.  I'm a bit hesitant to back-patch further given the
      lack of field complaints.
      f593f623
    • Tom Lane's avatar
      Add FLOAT4PASSBYVAL/FLOAT8PASSBYVAL to pg_config.h.win32, as a stopgap · 819b49a6
      Tom Lane authored
      measure to get the Windows buildfarm members working again.  I don't
      know if it's worth exposing these as configurables, or exactly how to
      do it in the MSVC build system ...
      819b49a6
    • Tom Lane's avatar
      Make earthdistance use version-0 calling convention if not USE_FLOAT8_BYVAL, · 3d1588cd
      Tom Lane authored
      and version-1 if USE_FLOAT8_BYVAL.  This might seem a bit pointless, but the
      idea is to have at least one regression test that will fail if we ever
      accidentally break version-0 functions that return float8.  However, they're
      already broken, or at least hopelessly unportable, in the USE_FLOAT8_BYVAL
      case.
      
      Per a recent suggestion from Greg Stark.
      3d1588cd
    • Tom Lane's avatar
      Allow float8, int8, and related datatypes to be passed by value on machines · 8472bf7a
      Tom Lane authored
      where Datum is 8 bytes wide.  Since this will break old-style C functions
      (those still using version 0 calling convention) that have arguments or
      results of these types, provide a configure option to disable it and retain
      the old pass-by-reference behavior.  Likewise, provide a configure option
      to disable the recently-committed float4 pass-by-value change.
      
      Zoltan Boszormenyi, plus configurability stuff by me.
      8472bf7a
  3. 20 Apr, 2008 2 commits
  4. 19 Apr, 2008 7 commits
  5. 18 Apr, 2008 6 commits
    • Alvaro Herrera's avatar
      Change the float4-returning functions in contrib/seg to fmgr v1 calling · 05ace733
      Alvaro Herrera authored
      conventions.
      
      I also changed seg_in and seg_out, which was probably unnecessary, but
      it can't harm.
      05ace733
    • Tom Lane's avatar
      Fix typo. · 41de1d15
      Tom Lane authored
      41de1d15
    • Alvaro Herrera's avatar
      Modify the float4 datatype to be pass-by-val. Along the way, remove the last · 7861d72e
      Alvaro Herrera authored
      uses of the long-deprecated float32 in contrib/seg; the definitions themselves
      are still there, but no longer used.  fmgr/README updated to match.
      
      I added a CREATE FUNCTION to account for existing seg_center() code in seg.c
      too, and some tests for it and the neighbor functions.  At the same time,
      remove checks for NULL which are not needed (because the functions are declared
      STRICT).
      
      I had to do some adjustments to contrib's btree_gist too.  The choices for
      representation there are not ideal for changing the underlying types :-(
      
      Original patch by Zoltan Boszormenyi, with some adjustments by me.
      7861d72e
    • Tom Lane's avatar
      Fix rmtree() so that it keeps going after failure to remove any individual · b8e5581d
      Tom Lane authored
      file; the idea is that we should clean up as much as we can, even if there's
      some problem removing one file.  Make the error messages a bit less misleading,
      too.  In passing, const-ify function arguments.
      b8e5581d
    • Heikki Linnakangas's avatar
      Fix two race conditions between the pending unlink mechanism that was put in · 9cb91f90
      Heikki Linnakangas authored
      place to prevent reusing relation OIDs before next checkpoint, and DROP
      DATABASE. First, if a database was dropped, bgwriter would still try to unlink
      the files that the rmtree() call by the DROP DATABASE command has already
      deleted, or is just about to delete. Second, if a database is dropped, and
      another database is created with the same OID, bgwriter would in the worst
      case delete a relation in the new database that happened to get the same OID
      as a dropped relation in the old database.
      
      To fix these race conditions:
      - make rmtree() ignore ENOENT errors. This fixes the 1st race condition.
      - make ForgetDatabaseFsyncRequests forget unlink requests as well.
      - force checkpoint on in dropdb on all platforms
      
      Since ForgetDatabaseFsyncRequests() is asynchronous, the 2nd change isn't
      enough on its own to fix the problem of dropping and creating a database with
      same OID, but forcing a checkpoint on DROP DATABASE makes it sufficient.
      
      Per Tom Lane's bug report and proposal. Backpatch to 8.3.
      9cb91f90
    • Tom Lane's avatar
      Cause EXPLAIN's VERBOSE option to print the target list (output column list) · 87a2f050
      Tom Lane authored
      of each plan node, instead of its former behavior of dumping the internal
      representation of the plan tree.  The latter display is still available for
      those who really want it (see debug_print_plan), but uses for it are certainly
      few and and far between.  Per discussion.
      
      This patch also removes the explain_pretty_print GUC, which is obsoleted
      by the change.
      87a2f050
  6. 17 Apr, 2008 5 commits
    • Alvaro Herrera's avatar
      Clean up a few places where Datums were being treated as pointers (and vice · 2f0f7b4b
      Alvaro Herrera authored
      versa) without going through DatumGetPointer.
      
      Gavin Sherry, with Feng Tian.
      2f0f7b4b
    • Tom Lane's avatar
      Fix a couple of oversights associated with the "physical tlist" optimization: · 25e46a50
      Tom Lane authored
      we had several code paths where a physical tlist could be used for the input
      to a Sort node, which is a dumb idea because any unneeded table columns will
      increase the volume of data the sort has to push around.
      
      (Unfortunately the easy-looking fix of calling disuse_physical_tlist during
      make_sort_xxx doesn't work because in most cases we're already committed to
      the current input tlist --- it's been marked with sort column numbers, or
      we've built grouping column numbers using it, etc.  The tlist has to be
      selected properly at the calling level before we start constructing sort-col
      information.  This is easy enough to do, we were just failing to take the
      point into consideration.)
      
      Back-patch to 8.3.  I believe the problem probably exists clear back to 7.4
      when the physical tlist optimization was added, but I'm afraid to back-patch
      further than 8.3 without a great deal more study than I want to put into it.
      The code in this area has drifted a lot over time.  The real-world importance
      of these code paths is uncertain anyway --- I think in many cases we'd
      probably prefer hash-based methods.
      25e46a50
    • Bruce Momjian's avatar
      TODO Done: · c5c7ba1b
      Bruce Momjian authored
      > * -Allow administrators to safely terminate individual sessions
      c5c7ba1b
    • Bruce Momjian's avatar
    • Tom Lane's avatar
      Add some code to EXPLAIN to show the targetlist (ie, output columns) · c5e4e91a
      Tom Lane authored
      of each plan node.  For the moment this is debug support only and is
      not enabled unless EXPLAIN_PRINT_TLISTS is defined at build time.
      Later I'll see about the idea of letting EXPLAIN VERBOSE do it.
      c5e4e91a
  7. 16 Apr, 2008 9 commits