1. 11 Jan, 2010 2 commits
    • Tom Lane's avatar
      Improve ExecEvalVar's handling of whole-row variables in cases where the · 292176a1
      Tom Lane authored
      rowtype contains dropped columns.  Sometimes the input tuple will be formed
      from a select targetlist in which dropped columns are filled with a NULL
      of an arbitrary type (the planner typically uses INT4, since it can't tell
      what type the dropped column really was).  So we need to relax the rowtype
      compatibility check to not insist on physical compatibility if the actual
      column value is NULL.
      
      In principle we might need to do this for functions returning composite
      types, too (see tupledesc_match()).  In practice there doesn't seem to be
      a bug there, probably because the function will be using the same cached
      rowtype descriptor as the caller.  Fixing that code path would require
      significant rearrangement, so I left it alone for now.
      
      Per complaint from Filip Rembialkowski.
      292176a1
    • Andrew Dunstan's avatar
  2. 10 Jan, 2010 10 commits
    • Tom Lane's avatar
      6164b4bc
    • Tom Lane's avatar
      Remove unnecessary use of temp file. Tim Bunce · 3f7a5183
      Tom Lane authored
      3f7a5183
    • Tom Lane's avatar
      Improve plpgsql parsing to report "foo is not a known variable", rather than a · 2d7f136f
      Tom Lane authored
      generic syntax error, when seeing "foo := something" and foo isn't recognized.
      This buys back most of the helpfulness discarded in my previous patch by not
      throwing errors when a qualified name appears to match a row variable but the
      last component doesn't match any field of the row.  It covers other cases
      where our error messages left something to be desired, too.
      2d7f136f
    • Tom Lane's avatar
      Improve plpgsql's handling of record field references by forcing all potential · 01f7d299
      Tom Lane authored
      field references in SQL expressions to have RECFIELD datum-array entries at
      parse time.  If it turns out that the reference is actually to a SQL column,
      the RECFIELD entry is useless, but it costs little.  This allows us to get rid
      of the previous use of FieldSelect applied to a whole-row Param for the record
      variable; which was not only slower than a direct RECFIELD reference, but
      failed for references to system columns of a trigger's NEW or OLD record.
      Per report and fix suggestion from Dean Rasheed.
      01f7d299
    • Simon Riggs's avatar
      Docs for behaviour change of drop database during Hot Standby · f537e7df
      Simon Riggs authored
      Adding missing docs for previous Hot Standby patch.
      f537e7df
    • Magnus Hagander's avatar
      Update Windows installation notes. · 48eaa34d
      Magnus Hagander authored
      pginstaller isn't used anymore, in favor of the one-click installers.
      Make it clear that we support Windows 2000 and newer with the native
      port, instead of first saying we support NT4 and then saying we don't.
      48eaa34d
    • Simon Riggs's avatar
      During Hot Standby, fix drop database when sessions idle. · 3bfcccc2
      Simon Riggs authored
      Previously we only cancelled sessions that were in-transaction.
      
      Simple fix is to just cancel all sessions without waiting. Doing
      it this way avoids complicating common code paths, which would
      not be worth the trouble to cover this rare case.
      
      Problem report and fix by Andres Freund, edited somewhat by me
      3bfcccc2
    • Magnus Hagander's avatar
      Create typedef pgsocket for storing socket descriptors. · 87091cb1
      Magnus Hagander authored
      This silences some warnings on Win64. Not using the proper SOCKET datatype
      was actually wrong on Win32 as well, but didn't cause any warnings there.
      
      Also create define PGINVALID_SOCKET to indicate an invalid/non-existing
      socket, instead of using a hardcoded -1 value.
      87091cb1
    • Robert Haas's avatar
      Remove partial, broken support for NULL pointers when fetching attributes. · 84b6d5f3
      Robert Haas authored
      Previously, fastgetattr() and heap_getattr() tested their fourth argument
      against a null pointer, but any attempt to use them with a literal-NULL
      fourth argument evaluated to *(void *)0, resulting in a compiler error.
      Remove these NULL tests to avoid leading future readers of this code to
      believe that this has a chance of working.  Also clean up related legacy
      code in nocachegetattr(), heap_getsysattr(), and nocache_index_getattr().
      
      The new coding standard is that any code which calls a getattr-type
      function or macro which takes an isnull argument MUST pass a valid
      boolean pointer.  Per discussion with Bruce Momjian, Tom Lane, Alvaro
      Herrera.
      84b6d5f3
    • Robert Haas's avatar
      Document pg_tablespace.spcoptions. · 8b9fa7a9
      Robert Haas authored
      This should have been part of the original tablespace-options patch, but I
      overlooked the need to update this portion of the documentation.
      8b9fa7a9
  3. 09 Jan, 2010 6 commits
    • Tom Lane's avatar
      Make ExecEvalFieldSelect throw a more intelligible error if it's asked to · 85113bcf
      Tom Lane authored
      extract a system column, and remove a couple of lines that are useless
      in light of the fact that we aren't ever going to support this case.  There
      isn't much point in trying to make this work because a tuple Datum does
      not carry many of the system columns.  Per experimentation with a case
      reported by Dean Rasheed; we'll have to fix his problem somewhere else.
      85113bcf
    • Simon Riggs's avatar
      During Hot Standby, set DatabasePath correctly during relcache init file · 42edbd16
      Simon Riggs authored
      deletion, so that we attempt to unlink the correct filepath. unlink()
      errors are ignorable there, so lack of a DatabasePath initialization step
      did not cause visible problems until a related bug showed up on Solaris.
      
      Code refactored from xact_redo_commit() to
      ProcessCommittedInvalidationMessages() in inval.c. Recovery may replay
      shared invalidation messages for many databases, so we cannot
      SetDatabasePath() once as we do in normal backends. Read the databaseid
      from the shared invalidation messages, then set DatabasePath
      temporarily before calling RelationCacheInitFileInvalidate().
      
      Problem report by Robert Treat, analysis and fix by me.
      42edbd16
    • Andrew Dunstan's avatar
      Provide regression testing for plperlu, and for plperl+plperlu interaction. · 510f3502
      Andrew Dunstan authored
      The latter are only run if the platform can run both interpreters in the
      same backend.
      510f3502
    • Andrew Dunstan's avatar
      Build perlchunks.h for plperl on MSVC · 0346442b
      Andrew Dunstan authored
      0346442b
    • Tom Lane's avatar
      Fix makefile so it works for VPATH case. · c79640ef
      Tom Lane authored
      c79640ef
    • Andrew Dunstan's avatar
      Tidy up and refactor plperl.c. · a2b34b16
      Andrew Dunstan authored
      - Changed MULTIPLICITY check from runtime to compiletime.
          No loads the large Config module.
      - Changed plperl_init_interp() to return new interp
          and not alter the global interp_state
      - Moved plperl_safe_init() call into check_interp().
      - Removed plperl_safe_init_done state variable
          as interp_state now covers that role.
      - Changed plperl_create_sub() to take a plperl_proc_desc argument.
      - Simplified return value handling in plperl_create_sub.
      - Changed perl.com link in the docs to perl.org and tweaked
          wording to clarify that require, not use, is what's blocked.
      - Moved perl code in large multi-line C string literal macros
          out to plc_*.pl files.
      - Added a test2macro.pl utility to convert the plc_*.pl files to
          macros in a perlchunks.h file which is #included
      - Simplifed plperl_safe_init() slightly
      - Optimized pg_verifymbstr calls to avoid unneeded strlen()s.
      
      Patch from Tim Bunce, with minor editing from me.
      a2b34b16
  4. 08 Jan, 2010 4 commits
    • Michael Meskes's avatar
      Also update ChangerLog file. · 369494e4
      Michael Meskes authored
      369494e4
    • Tom Lane's avatar
      Fix oversight in EvalPlanQualFetch: after failing to lock a tuple because · 217dc525
      Tom Lane authored
      someone else has just updated it, we have to set priorXmax to that tuple's
      xmax (ie, the XID of the other xact that updated it) before looping back to
      examine the next tuple.  Obviously, the next tuple in the update chain should
      have that XID as its xmin, not the same xmin as the preceding tuple that we
      had been trying to lock.  The mismatch would cause the EvalPlanQual logic to
      decide that the tuple chain ended in a deletion, when actually there was a
      live tuple that should have been found.
      
      I inserted this error when recently adding logic to EvalPlanQual to make it
      lock tuples before returning them (as opposed to the old method in which the
      lock would occur much later, causing a great deal of work to be wasted if we
      only then discover someone else updated it).  Sigh.  Per today's report from
      Takahiro Itagaki of inconsistent results during pgbench runs.
      217dc525
    • Itagaki Takahiro's avatar
    • Itagaki Takahiro's avatar
      Add buffer access counters to pg_stat_statements. · 8964dbd5
      Itagaki Takahiro authored
      This uses the same infrastructure with EXPLAIN BUFFERS to support
      {shared|local}_blks_{hit|read|written} andtemp_blks_{read|written}
      columns in the pg_stat_statements view. The dumped file format
      also updated.
      
      Thanks to Robert Haas for the review.
      8964dbd5
  5. 07 Jan, 2010 14 commits
  6. 06 Jan, 2010 4 commits