1. 09 Jun, 2009 7 commits
    • Tom Lane's avatar
      Mark internal_in as not strict, so that the construct "null::internal" · e343eaaf
      Tom Lane authored
      will throw an error, rather than possibly allowing someone to synthesize
      a manual call to an internal-accepting function.  As of CVS HEAD and existing
      releases, all such functions are either STRICT or careful about null inputs,
      so there is no current security issue here.  But it seems like a good idea
      to lock this down to protect against future mistakes.
      
      In passing, similarly lock down trigger_in, language_handler_in, opaque_in,
      and shell_in.  These are not believed to present any security risk, but
      there's still no good reason to allow nulls of these types to be created.
      I left the polymorphic pseudotypes (anyelement etc) alone, since a null
      of one of those types doesn't seem to be a problem --- the worst you can
      say about it is that it doesn't have an underlying non-polymorphic type.
      
      If we were to make this change during normal development, we'd just
      automatically bump catversion for a pg_proc.h change.  But since this doesn't
      create a compatibility risk and isn't believed to be fixing a live bug, it
      seems better not to force a catversion bump in late beta.
      e343eaaf
    • Alvaro Herrera's avatar
      Fix typo, per Tom · e66576e5
      Alvaro Herrera authored
      e66576e5
    • Tom Lane's avatar
      Switch order of tests to avoid possible Assert failure for · 59fb29ca
      Tom Lane authored
      "array_agg_finalfn(null)".  We should modify pg_proc entries to prevent this
      query from being accepted, but let's just make the function itself secure too.
      Per my note of today.
      59fb29ca
    • Tom Lane's avatar
      Restore dblink_current_query() to being a C-language function, so as to not · f3e122fc
      Tom Lane authored
      create an ABI break between 8.3 and 8.4.  It is still just a wrapper around
      the built-in current_query() function, but at a different implementation
      level.  Per my proposal.
      
      Note: this change doesn't break 8.4beta installations, since their
      SQL-language definition of the function still works fine.
      f3e122fc
    • Alvaro Herrera's avatar
      Dynamically set a lower bound on autovacuum nap time so that we don't rebuild · e8f28cb2
      Alvaro Herrera authored
      the database list too often.
      
      Per bug report from Łukasz Jagiełło and ensuing discussion on
      pgsql-performance.
      e8f28cb2
    • Joe Conway's avatar
      Default client encoding to server encoding for dblink connections. Addresses · e5de6012
      Joe Conway authored
      issue raised by Ruzsinszky Attila and confirmed by others.
      
       ----------------------------------------------------------------------
      e5de6012
    • Tom Lane's avatar
      Fix failure to double-quote function argument names when needed, in · adaf6013
      Tom Lane authored
      pg_get_function_arguments() and related functions.  Per report from
      Andreas Nolte.
      adaf6013
  2. 08 Jun, 2009 3 commits
  3. 07 Jun, 2009 1 commit
    • Tom Lane's avatar
      Revert my patch of 2009-04-04 that removed contrib/intarray's definitions of · 156475a5
      Tom Lane authored
      the <@ and @> operators.  These are not in fact equivalent to the built-in
      anyarray operators of the same names, because they have different behavior for
      empty arrays, namely they don't think empty arrays are contained in anything.
      That is mathematically wrong, no doubt, but until we can persuade GIN indexes
      to implement the mathematical definition we should probably not change this.
      Another reason for not changing it now is that we can't yet ensure the
      opclasses will be updated correctly in a dump-and-reload upgrade.  Per
      recent discussions.
      156475a5
  4. 06 Jun, 2009 4 commits
    • Tom Lane's avatar
      Improve the IndexVacuumInfo/IndexBulkDeleteResult API to allow somewhat sane · 32ea2363
      Tom Lane authored
      behavior in cases where we don't know the heap tuple count accurately; in
      particular partial vacuum, but this also makes the API a bit more useful
      for ANALYZE.  This patch adds "estimated_count" flags to both structs so
      that an approximate count can be flagged as such, and adjusts the logic
      so that approximate counts are not used for updating pg_class.reltuples.
      
      This fixes my previous complaint that VACUUM was putting ridiculous values
      into pg_class.reltuples for indexes.  The actual impact of that bug is
      limited, because the planner only pays attention to reltuples for an index
      if the index is partial; which probably explains why beta testers hadn't
      noticed a degradation in plan quality from it.  But it needs to be fixed.
      
      The whole thing is a bit messy and should be redesigned in future, because
      reltuples now has the potential to drift quite far away from reality when
      a long period elapses with no non-partial vacuums.  But this is as good as
      it's going to get for 8.4.
      32ea2363
    • Joe Conway's avatar
      Add support for using SQL/MED compliant FOREIGN DATA WRAPPER, SERVER, · 4334695b
      Joe Conway authored
      and USER MAPPING as method to supply dblink connect parameters. Per
      mailing list and PGCon discussions.
      4334695b
    • Tom Lane's avatar
      Move variable declaration to avoid 'unused variable' warning when the · af98bb2a
      Tom Lane authored
      ifdef doesn't trigger.  Not worth back-patching.  Per buildfarm reports.
      af98bb2a
    • Tom Lane's avatar
      Fix a serious bug introduced into GIN in 8.4: now that MergeItemPointers() · 356eea24
      Tom Lane authored
      is supposed to remove duplicate heap TIDs, we have to be sure to reduce the
      tuple size and posting-item count accordingly in addItemPointersToTuple().
      Failing to do so resulted in the effective injection of garbage TIDs into the
      index contents, ie, whatever happened to be in the memory palloc'd for the
      new tuple.  I'm not sure that this fully explains the index corruption
      reported by Tatsuo Ishii, but the test case I'm using no longer fails.
      356eea24
  5. 05 Jun, 2009 4 commits
  6. 04 Jun, 2009 4 commits
  7. 03 Jun, 2009 7 commits
  8. 02 Jun, 2009 3 commits
  9. 01 Jun, 2009 2 commits
    • Tom Lane's avatar
      Change AdjustIntervalForTypmod to not discard higher-order field values on the · bac2ad38
      Tom Lane authored
      grounds that they don't fit into the specified interval qualifier (typmod).
      This behavior, while of long standing, is clearly wrong per spec --- for
      example the value INTERVAL '999' SECOND means 999 seconds and should not be
      reduced to less than 60 seconds.
      
      In some cases there could be grounds to raise an error if higher-order field
      values are not given as zero; for example '1 year 1 month'::INTERVAL MONTH
      should arguably be taken as an error rather than equivalent to 13 months.
      However our internal representation doesn't allow us to do that in a fashion
      that would consistently reject all and only the cases that a strict reading
      of the spec would suggest.  Also, seeing that for example INTERVAL '13' MONTH
      will print out as '1 year 1 mon', we have to be careful not to create a
      situation where valid data will fail to dump and reload.  The present patch
      therefore takes the attitude of not throwing an error in any such case.
      We might want to revisit that in future but it would take more redesign
      than seems prudent in late beta.
      
      Per a complaint from Sebastien Flaesch and subsequent discussion.  While
      at other times we might have just postponed such an issue to the next
      development cycle, 8.4 already has changed the parsing of interval literals
      quite a bit in an effort to accept all spec-compliant cases correctly.
      This seems like a change that should be part of that rather than coming
      along later.
      bac2ad38
    • Tom Lane's avatar
      Fix DecodeInterval to report an error for multiple occurrences of DAY, WEEK, · b3b89fd1
      Tom Lane authored
      YEAR, DECADE, CENTURY, or MILLENIUM fields, just as it always has done for
      other types of fields.  The previous behavior seems to have been a hack to
      avoid defining bit-positions for all these field types in DTK_M() masks,
      rather than something that was really considered to be desired behavior.
      But there is room in the masks for these, and we really need to tighten up
      at least the behavior of DAY and YEAR fields to avoid unexpected behavior
      associated with the 8.4 changes to interpret ambiguous fields based on the
      interval qualifier (typmod) value.  Per my example and proposed patch.
      b3b89fd1
  10. 31 May, 2009 1 commit
  11. 29 May, 2009 1 commit
  12. 28 May, 2009 2 commits
  13. 27 May, 2009 1 commit