1. 19 12月, 2008 3 次提交
  2. 17 12月, 2008 3 次提交
    • H
      Don't reset pg_class.reltuples and relpages in VACUUM, if any pages were · dcf84099
      Heikki Linnakangas 提交于
      skipped. We could update relpages anyway, but it seems better to only
      update it together with reltuples, because we use the reltuples/relpages
      ratio in the planner. Also don't update n_live_tuples in pgstat.
      
      ANALYZE in VACUUM ANALYZE now needs to update pg_class, if the
      VACUUM-phase didn't do so. Added some boolean-passing to let analyze_rel
      know if it should update pg_class or not.
      
      I also moved the relcache invalidation (to update rd_targblock) from
      vac_update_relstats to where RelationTruncate is called, because
      vac_update_relstats is not called for partial vacuums anymore. It's more
      obvious to send the invalidation close to the truncation that requires it.
      
      Per report by Ned T. Crigler.
      dcf84099
    • B
      The attached patch contains a couple of fixes in the existing probes and · 5a90bc1f
      Bruce Momjian 提交于
      includes a few new ones.
      
      - Fixed compilation errors on OS X for probes that use typedefs
      - Fixed a number of probes to pass ForkNumber per the relation forks
      patch
      - The new probes are those that were taken out from the previous
      submitted patch and required simple fixes. Will submit the other probes
      that may require more discussion in a separate patch.
      
      Robert Lor
      5a90bc1f
    • T
      Make heap_update() set newtup->t_tableOid correctly, for consistency with · fc3297d8
      Tom Lane 提交于
      the other major heapam.c functions.  The only known consequence of this
      omission is that UPDATE RETURNING failed to return the correct value for
      "tableoid", as per report from KaiGai Kohei.
      
      Back-patch to 8.2.  Arguably it's wrong all the way back; but without
      evidence of visible breakage before RETURNING was added, I'll desist from
      patching the older branches.
      fc3297d8
  3. 16 12月, 2008 3 次提交
  4. 15 12月, 2008 4 次提交
    • T
      Reduce the scaling factor for attstattarget to number-of-lexemes from 100 · 301194f8
      Tom Lane 提交于
      to 10, to compensate for the recent change in default statistics target.
      The original number was pulled out of the air anyway :-(, but it was picked
      in the context of the old default, so holding the default size of the
      MCELEM array constant seems the best thing.  Per discussion.
      301194f8
    • T
      Remove our dependencies on MB_CUR_MAX in favor of believing that · b4d64a6d
      Tom Lane 提交于
      pg_database_encoding_max_length() predicts the maximum character length
      returned by wchar2char().  Per Hiroshi Inoue, MB_CUR_MAX isn't usable on
      Windows because we allow encoding = UTF8 when the locale says differently;
      and getting rid of it seems a good idea on general principles because it
      narrows our dependence on libc's locale API just a little bit more.
      
      Also install a check for overflow of the buffer size computation.
      b4d64a6d
    • T
      Restore enforce_generic_type_consistency's pre-8.3 behavior of allowing an · a9d5f30b
      Tom Lane 提交于
      actual argument type of ANYARRAY to match an argument declared ANYARRAY,
      so long as ANYELEMENT etc aren't used.  I had overlooked the fact that this
      is a possible case while fixing bug #3852; but it is possible because
      pg_statistic contains columns declared ANYARRAY.  Per gripe from Corey Horton.
      a9d5f30b
    • M
      Replace both send and receive BIO routines in the SSL code with our own, · b8753e59
      Magnus Hagander 提交于
      calling recv() and send(). This makes the calls go through the socket
      emulation code on Win32, making them for example properly interruptible.
      b8753e59
  5. 14 12月, 2008 1 次提交
  6. 13 12月, 2008 2 次提交
    • T
      Remove pg_plan_queries()'s now-useless needSnapshot parameter. It's useless · b69bde77
      Tom Lane 提交于
      in 8.3, too, but I'm not back-patching this change since it would break any
      extension modules that might be calling that function.
      b69bde77
    • T
      Fix failure to ensure that a snapshot is available to datatype input functions · c98a9237
      Tom Lane 提交于
      when they are invoked by the parser.  We had been setting up a snapshot at
      plan time but really it needs to be done earlier, before parse analysis.
      Per report from Dmitry Koterov.
      
      Also fix two related problems discovered while poking at this one:
      exec_bind_message called datatype input functions without establishing a
      snapshot, and SET CONSTRAINTS IMMEDIATE could call trigger functions without
      establishing a snapshot.
      
      Backpatch to 8.2.  The underlying problem goes much further back, but it is
      masked in 8.1 and before because we didn't attempt to invoke domain check
      constraints within datatype input.  It would only be exposed if a C-language
      datatype input function used the snapshot; which evidently none do, or we'd
      have heard complaints sooner.  Since this code has changed a lot over time,
      a back-patch is hardly risk-free, and so I'm disinclined to patch further
      than absolutely necessary.
      c98a9237
  7. 12 12月, 2008 1 次提交
  8. 11 12月, 2008 3 次提交
  9. 09 12月, 2008 2 次提交
  10. 08 12月, 2008 2 次提交
  11. 07 12月, 2008 2 次提交
  12. 05 12月, 2008 2 次提交
  13. 04 12月, 2008 4 次提交
    • A
      Fix a couple of snapshot management bugs in the new ResourceOwner world: · 7b640b03
      Alvaro Herrera 提交于
      non-writable large objects need to have their snapshots registered on the
      transaction resowner, not the current portal's, because it must persist until
      the large object is closed (which the portal does not).  Also, ensure that the
      serializable snapshot is recorded by the transaction resource owner too, even
      when a subtransaction has changed the current resource owner before
      serializable is taken.
      
      Per bug reports from Pavan Deolasee.
      7b640b03
    • H
      Utilize the visibility map in autovacuum, too. There was an oversight in · 7537f52a
      Heikki Linnakangas 提交于
      the visibility map patch that because autovacuum always sets
      VacuumStmt->freeze_min_age, visibility map was never used for autovacuum,
      only for manually launched vacuums. This patch introduces a new scan_all
      field to VacuumStmt, indicating explicitly whether the visibility map
      should be used, or the whole relation should be scanned, to advance
      relfrozenxid. Anti-wraparound vacuums still need to scan all pages.
      7537f52a
    • T
      69b3383c
    • M
      Properly unregister OpenSSL callbacks when libpq is done with · 4e816286
      Magnus Hagander 提交于
      it's connection. This is required for applications that unload
      the libpq library (such as PHP) in which case we'd otherwise
      have pointers to these functions when they no longer exist.
      
      This needs a bit more testing before we can consider a backpatch,
      so not doing that yet.
      
      In passing, remove unused functions in backend/libpq.
      
      Bruce Momjian and Magnus Hagander, per report and analysis
      by Russell Smith.
      4e816286
  14. 03 12月, 2008 3 次提交
    • H
      Introduce visibility map. The visibility map is a bitmap with one bit per · 608195a3
      Heikki Linnakangas 提交于
      heap page, where a set bit indicates that all tuples on the page are
      visible to all transactions, and the page therefore doesn't need
      vacuuming. It is stored in a new relation fork.
      
      Lazy vacuum uses the visibility map to skip pages that don't need
      vacuuming. Vacuum is also responsible for setting the bits in the map.
      In the future, this can hopefully be used to implement index-only-scans,
      but we can't currently guarantee that the visibility map is always 100%
      up-to-date.
      
      In addition to the visibility map, there's a new PD_ALL_VISIBLE flag on
      each heap page, also indicating that all tuples on the page are visible to
      all transactions. It's important that this flag is kept up-to-date. It
      is also used to skip visibility tests in sequential scans, which gives a
      small performance gain on seqscans.
      608195a3
    • H
      Small comment fixes. · 011fa366
      Heikki Linnakangas 提交于
      011fa366
    • H
      If pg_stop_backup() is called just after switching to a new xlog file, · b457b2a2
      Heikki Linnakangas 提交于
      wait for the previous instead of the new file to be archived.
      
      Based on patch by Simon Riggs.
      b457b2a2
  15. 02 12月, 2008 5 次提交
    • H
      Use PG_GETARG_TEXT_PP instead of PG_GETARG_TEXT_P in the new · b64d966d
      Heikki Linnakangas 提交于
      gin_cmp_tslexeme and gin_cmp_prefix functions. Should shave off a few
      cycles from GIN operations.
      b64d966d
    • A
      Minor code embellishments. · c98c9114
      Alvaro Herrera 提交于
      c98c9114
    • T
      Fix an oversight in the code that makes transitive-equality deductions from · a1feb90e
      Tom Lane 提交于
      outer join clauses.  Given, say,
      	... from a left join b on a.a1 = b.b1 where a.a1 = 42;
      we'll deduce a clause b.b1 = 42 and then mark the original join clause
      redundant (we can't remove it completely for reasons I don't feel like
      squeezing into this log entry).  However the original implementation of
      that wasn't bulletproof, because clause_selectivity() wouldn't honor
      this_selec if given nonzero varRelid --- which in practice meant that
      it worked as desired *except* when considering index scan quals.  Which
      resulted in bogus underestimation of the size of the indexscan result for
      an inner indexscan in an outer join, and consequently a possibly bad
      choice of indexscan vs. bitmap scan.  Fix by introducing an explicit test
      into clause_selectivity().  Also, to make sure we don't trigger that test
      in corner cases, change the convention to be that this_selec > 1, not
      this_selec = 1, means it's been marked redundant.  Per trouble report from
      Scara Maccai.
      
      Back-patch to 8.2, where the problem was introduced.
      a1feb90e
    • H
      Modify the new to_timestamp implementation so that end-of-format-string · 7fb27531
      Heikki Linnakangas 提交于
      is treated like a non-digit separator. This fixes the inconsistency in
      examples like:
      
      to_timestamp('2008-01-2', 'YYYY-MM-DD') -- didn't work
      
      and
      
      to_timestamp('2008-1-02', 'YYYY-MM-DD') -- did work
      7fb27531
    • T
      Ensure that the contents of a holdable cursor don't depend on out-of-line · ec543db7
      Tom Lane 提交于
      toasted values, since those could get dropped once the cursor's transaction
      is over.  Per bug #4553 from Andrew Gierth.
      
      Back-patch as far as 8.1.  The bug actually exists back to 7.4 when holdable
      cursors were introduced, but this patch won't work before 8.1 without
      significant adjustments.  Given the lack of field complaints, it doesn't seem
      worth the work (and risk of introducing new bugs) to try to make a patch for
      the older branches.
      ec543db7