1. 15 1月, 2010 2 次提交
    • H
      Introduce Streaming Replication. · 40f908bd
      Heikki Linnakangas 提交于
      This includes two new kinds of postmaster processes, walsenders and
      walreceiver. Walreceiver is responsible for connecting to the primary server
      and streaming WAL to disk, while walsender runs in the primary server and
      streams WAL from disk to the client.
      
      Documentation still needs work, but the basics are there. We will probably
      pull the replication section to a new chapter later on, as well as the
      sections describing file-based replication. But let's do that as a separate
      patch, so that it's easier to see what has been added/changed. This patch
      also adds a new section to the chapter about FE/BE protocol, documenting the
      protocol used by walsender/walreceivxer.
      
      Bump catalog version because of two new functions,
      pg_last_xlog_receive_location() and pg_last_xlog_replay_location(), for
      monitoring the progress of replication.
      
      Fujii Masao, with additional hacking by me
      40f908bd
    • T
      Add point_ops opclass for GiST. · 4cbe4739
      Teodor Sigaev 提交于
      4cbe4739
  2. 14 1月, 2010 4 次提交
    • S
      First part of refactoring of code for ResolveRecoveryConflict. Purposes · e99767bc
      Simon Riggs 提交于
      of this are to centralise the conflict code to allow further change,
      as well as to allow passing through the full reason for the conflict
      through to the conflicting backends. Backend state alters how we
      can handle different types of conflict so this is now required.
      As originally suggested by Heikki, no longer optional.
      e99767bc
    • T
      Simplify validate_exec() by using access(2) to check file permissions, · 0fba3bef
      Tom Lane 提交于
      rather than trying to implement the equivalent logic by hand.  The motivation
      for the original coding appears to have been to check with the effective uid's
      permissions not the real uid's; but there is no longer any difference, because
      we don't run the postmaster setuid (indeed, main.c enforces that they're the
      same).  Using access() means we will get it right in situations the original
      coding failed to handle, such as ACL-based permissions.  Besides it's a lot
      shorter, cleaner, and more thread-safe.  Per bug #5275 from James Bellinger.
      0fba3bef
    • T
      When loading critical system indexes into the relcache, ensure we lock the · 715120e7
      Tom Lane 提交于
      underlying catalog not only the index itself.  Otherwise, if the cache
      load process touches the catalog (which will happen for many though not
      all of these indexes), we are locking index before parent table, which can
      result in a deadlock against processes that are trying to lock them in the
      normal order.  Per today's failure on buildfarm member gothic_moth; it's
      surprising the problem hadn't been identified before.
      
      Back-patch to 8.2.  Earlier releases didn't have the issue because they
      didn't try to lock these indexes during load (instead assuming that they
      couldn't change schema at all during multiuser operation).
      715120e7
    • T
      Fix bug #5269: ResetPlanCache mustn't invalidate cached utility statements, · dbba3a14
      Tom Lane 提交于
      especially not ROLLBACK.  ROLLBACK might need to be executed in an already
      aborted transaction, when there is no safe way to revalidate the plan.  But
      in general there's no point in marking utility statements invalid, since
      they have no plans in the normal sense of the word; so we might as well
      work a bit harder here to avoid future revalidation cycles.
      
      Back-patch to 8.4, where the bug was introduced.
      dbba3a14
  3. 13 1月, 2010 5 次提交
    • M
      Applied Zoltan's patch to make char the default sqlda type. · b3627d1d
      Michael Meskes 提交于
      Given that undefined types are handled as character strings anyway the type
      translation function can simply return the correcponding ECPGt_char type.
      b3627d1d
    • M
      Fix SQL3 type return value. · cf4d9c47
      Michael Meskes 提交于
      For non-SQL3 types ecpg used to return -Oid. This will break if there are
      enough Oids to fill the namespace. Therefore we play it safe and return 0 if
      there is no Oid->SQL3 tyoe mapping available.
      cf4d9c47
    • T
      Make fixed_paramref_hook behave properly when there are 'unused' slots · 43a9a2fb
      Tom Lane 提交于
      in the parameter array.  Noted while experimenting with an example
      from Pavel.  This wouldn't come up in normal use, but it ought to honor
      the specification that a parameter array can have unused slots.
      43a9a2fb
    • M
      Update MSVC build instructions. · b2aab424
      Magnus Hagander 提交于
      Updated to reflect building with Visual Studio 2008, with just the
      Platform SDK, and for 64-bit Windows.
      b2aab424
    • T
      Fix relcache reload mechanism to be more robust in the face of errors · 491dd4a9
      Tom Lane 提交于
      occurring during a reload, such as query-cancel.  Instead of zeroing out
      an existing relcache entry and rebuilding it in place, build a new relcache
      entry, then swap its contents with the old one, then free the new entry.
      This avoids problems with code believing that a previously obtained pointer
      to a cache entry must still reference a valid entry, as seen in recent
      failures on buildfarm member jaguar.  (jaguar is using CLOBBER_CACHE_ALWAYS
      which raises the probability of failure substantially, but the problem
      could occur in the field without that.)  The previous design was okay
      when it was made, but subtransactions and the ResourceOwner mechanism
      make it unsafe now.
      
      Also, make more use of the already existing rd_isvalid flag, so that we
      remember that the entry requires rebuilding even if the first attempt fails.
      
      Back-patch as far as 8.2.  Prior versions have enough issues around relcache
      reload anyway (due to inadequate locking) that fixing this one doesn't seem
      worthwhile.
      491dd4a9
  4. 12 1月, 2010 5 次提交
  5. 11 1月, 2010 7 次提交
  6. 10 1月, 2010 7 次提交
    • M
      Update Windows installation notes. · 48eaa34d
      Magnus Hagander 提交于
      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
    • S
      During Hot Standby, fix drop database when sessions idle. · 3bfcccc2
      Simon Riggs 提交于
      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
    • M
      Create typedef pgsocket for storing socket descriptors. · 87091cb1
      Magnus Hagander 提交于
      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
    • R
      Remove partial, broken support for NULL pointers when fetching attributes. · 84b6d5f3
      Robert Haas 提交于
      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
    • R
      Document pg_tablespace.spcoptions. · 8b9fa7a9
      Robert Haas 提交于
      This should have been part of the original tablespace-options patch, but I
      overlooked the need to update this portion of the documentation.
      8b9fa7a9
    • T
      Make ExecEvalFieldSelect throw a more intelligible error if it's asked to · 85113bcf
      Tom Lane 提交于
      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
    • S
      During Hot Standby, set DatabasePath correctly during relcache init file · 42edbd16
      Simon Riggs 提交于
      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
  7. 09 1月, 2010 4 次提交
    • A
      Provide regression testing for plperlu, and for plperl+plperlu interaction. · 510f3502
      Andrew Dunstan 提交于
      The latter are only run if the platform can run both interpreters in the
      same backend.
      510f3502
    • A
      Build perlchunks.h for plperl on MSVC · 0346442b
      Andrew Dunstan 提交于
      0346442b
    • T
      Fix makefile so it works for VPATH case. · c79640ef
      Tom Lane 提交于
      c79640ef
    • A
      Tidy up and refactor plperl.c. · a2b34b16
      Andrew Dunstan 提交于
      - 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
  8. 08 1月, 2010 6 次提交