1. 10 1月, 2008 2 次提交
    • T
      Fix CREATE INDEX CONCURRENTLY to not deadlock against an automatic or manual · ceb93600
      Tom Lane 提交于
      VACUUM that is blocked waiting to get lock on the table being indexed.
      Per report and fix suggestion from Greg Stark.
      ceb93600
    • T
      Fix some planner issues found while investigating Kevin Grittner's report · 6a652252
      Tom Lane 提交于
      of poorer planning in 8.3 than 8.2:
      
      1. After pushing a constant across an outer join --- ie, given
      "a LEFT JOIN b ON (a.x = b.y) WHERE a.x = 42", we can deduce that b.y is
      sort of equal to 42, in the sense that we needn't fetch any b rows where
      it isn't 42 --- loop to see if any additional deductions can be made.
      Previous releases did that by recursing, but I had mistakenly thought that
      this was no longer necessary given the EquivalenceClass machinery.
      
      2. Allow pushing constants across outer join conditions even if the
      condition is outerjoin_delayed due to a lower outer join.  This is safe
      as long as the condition is strict and we re-test it at the upper join.
      
      3. Keep the outer-join clause even if we successfully push a constant
      across it.  This is *necessary* in the outerjoin_delayed case, but
      even in the simple case, it seems better to do this to ensure that the
      join search order heuristics will consider the join as reasonable to
      make.  Mark such a clause as having selectivity 1.0, though, since it's
      not going to eliminate very many rows after application of the constant
      condition.
      
      4. Tweak have_relevant_eclass_joinclause to report that two relations
      are joinable when they have vars that are equated to the same constant.
      We won't actually generate any joinclause from such an EquivalenceClass,
      but again it seems that in such a case it's a good idea to consider
      the join as worth costing out.
      
      5. Fix a bug in select_mergejoin_clauses that was exposed by these
      changes: we have to reject candidate mergejoin clauses if either side was
      equated to a constant, because we can't construct a canonical pathkey list
      for such a clause.  This is an implementation restriction that might be
      worth fixing someday, but it doesn't seem critical to get it done for 8.3.
      6a652252
  2. 09 1月, 2008 6 次提交
  3. 08 1月, 2008 4 次提交
  4. 06 1月, 2008 1 次提交
  5. 05 1月, 2008 1 次提交
  6. 04 1月, 2008 7 次提交
    • B
      Add URL for: · 88a79c1d
      Bruce Momjian 提交于
      * Allow AS in "SELECT col AS label" to be optional (not wanted)
      
      >   http://archives.postgresql.org/pgsql-hackers/2003-04/msg00436.php
      88a79c1d
    • T
      Stamp release 8.3RC1. · 2bf121e4
      Tom Lane 提交于
      Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067, CVE-2007-6600, CVE-2007-6601
      2bf121e4
    • T
      Update release notes for security releases. · 019fac77
      Tom Lane 提交于
      Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067, CVE-2007-6600, CVE-2007-6601
      019fac77
    • T
      The original patch to disallow non-passworded connections to non-superusers · 919c9f6c
      Tom Lane 提交于
      failed to cover all the ways in which a connection can be initiated in dblink.
      Plug the remaining holes.  Also, disallow transient connections in functions
      for which that feature makes no sense (because they are only sensible as
      part of a sequence of operations on the same connection).  Joe Conway
      
      Security: CVE-2007-6601
      919c9f6c
    • T
      Make standard maintenance operations (including VACUUM, ANALYZE, REINDEX, · eedb068c
      Tom Lane 提交于
      and CLUSTER) execute as the table owner rather than the calling user, using
      the same privilege-switching mechanism already used for SECURITY DEFINER
      functions.  The purpose of this change is to ensure that user-defined
      functions used in index definitions cannot acquire the privileges of a
      superuser account that is performing routine maintenance.  While a function
      used in an index is supposed to be IMMUTABLE and thus not able to do anything
      very interesting, there are several easy ways around that restriction; and
      even if we could plug them all, there would remain a risk of reading sensitive
      information and broadcasting it through a covert channel such as CPU usage.
      
      To prevent bypassing this security measure, execution of SET SESSION
      AUTHORIZATION and SET ROLE is now forbidden within a SECURITY DEFINER context.
      
      Thanks to Itagaki Takahiro for reporting this vulnerability.
      
      Security: CVE-2007-6600
      eedb068c
    • T
      Fix assorted security-grade bugs in the regex engine. All of these problems · 98f27aae
      Tom Lane 提交于
      are shared with Tcl, since it's their code to begin with, and the patches
      have been copied from Tcl 8.5.0.  Problems:
      
      CVE-2007-4769: Inadequate check on the range of backref numbers allows
      crash due to out-of-bounds read.
      CVE-2007-4772: Infinite loop in regex optimizer for pattern '($|^)*'.
      CVE-2007-6067: Very slow optimizer cleanup for regex with a large NFA
      representation, as well as crash if we encounter an out-of-memory condition
      during NFA construction.
      
      Part of the response to CVE-2007-6067 is to put a limit on the number of
      states in the NFA representation of a regex.  This seems needed even though
      the within-the-code problems have been corrected, since otherwise the code
      could try to use very large amounts of memory for a suitably-crafted regex,
      leading to potential DOS by driving the system into swap, activating a kernel
      OOM killer, etc.
      
      Although there are certainly plenty of ways to drive the system into effective
      DOS with poorly-written SQL queries, these problems seem worth treating as
      security issues because many applications might accept regex search patterns
      from untrustworthy sources.
      
      Thanks to Will Drewry of Google for reporting these problems.  Patches by Will
      Drewry and Tom Lane.
      
      Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067
      98f27aae
    • B
      Add: · 8af31d56
      Bruce Momjian 提交于
      > * Allow multiple identical NOTIFY events to always be communicated to the
      >   client, rather than sent as a single notification to the listener
      8af31d56
  7. 03 1月, 2008 3 次提交
  8. 02 1月, 2008 8 次提交
  9. 01 1月, 2008 3 次提交
  10. 31 12月, 2007 2 次提交
  11. 30 12月, 2007 3 次提交
    • A
    • B
      Update TODO list based on 8.3 completed items: · a225bf05
      Bruce Momjian 提交于
      < * Allow major upgrades without dump/reload, perhaps using pg_upgrade
      <   [pg_upgrade]
      < * Check for unreferenced table files created by transactions that were
      <   in-progress when the server terminated abruptly
      <
      <   http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php
      <
      > * Check for unreferenced table files created by transactions that were
      >   in-progress when the server terminated abruptly
      >
      >   http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php
      >
      < * Support table partitioning that allows a single table to be stored
      <   in subtables that are partitioned based on the primary key or a WHERE
      <   clause
      <   creation of rules for INSERT/UPDATE/DELETE, and constraints for
      <   rapid partition selection.  Options could include range and hash
      >   creation of triggers or rules for INSERT/UPDATE/DELETE, and constraints
      >   for rapid partition selection.  Options could include range and hash
      <
      < * Improve replication solutions
      <
      < 	o Load balancing
      <
      < 	  You can use any of the master/slave replication servers to use a
      < 	  standby server for data warehousing. To allow read/write queries to
      < 	  multiple servers, you need multi-master replication like pgcluster.
      <
      < 	o Allow replication over unreliable or non-persistent links
      <
      <
      < 	o Mark change-on-restart-only values in postgresql.conf
      < 	  All objects in the default database tablespace must have default
      < 	  tablespace specifications. This is because new databases are
      < 	  created by copying directories. If you mix default tablespace
      < 	  tables and tablespace-specified tables in the same directory,
      < 	  creating a new database from such a mixed directory would create a
      < 	  new database with tables that had incorrect explicit tablespaces.
      < 	  To fix this would require modifying pg_class in the newly copied
      < 	  database, which we don't currently do.
      > 	  Currently all objects in the default database tablespace must
      > 	  have default tablespace specifications. This is because new
      > 	  databases are created by copying directories. If you mix default
      > 	  tablespace tables and tablespace-specified tables in the same
      > 	  directory, creating a new database from such a mixed directory
      > 	  would create a new database with tables that had incorrect
      > 	  explicit tablespaces.  To fix this would require modifying
      > 	  pg_class in the newly copied database, which we don't currently
      > 	  do.
      <
      < 	  o Allow recovery.conf to allow the same syntax as
      > 	  o Allow recovery.conf to support the same syntax as
      < * Allow user-defined types to specify a type modifier at table creation
      <   time
      < * Allow all data types to cast to and from TEXT
      <
      <   http://archives.postgresql.org/pgsql-hackers/2007-04/msg00017.php
      <
      <
      < 		o Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
      < 		o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS
      < 		  INTERVAL MONTH), and this should return '12 months'
      > 		o Add support for year-month syntax, INTERVAL '50-6' YEAR
      > 		  TO MONTH
      > 		o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1
      > 		  year' AS INTERVAL MONTH), and this should return '12 months'
      < 	* Allow MONEY to be cast to/from other numeric data types
      > 	* Allow MONEY to be easily cast to/from other numeric data types
      >
      < * Allow functions to have a schema search path specified at creation time
      < * Fix cases where invalid byte encodings are accepted by the database,
      <   but throw an error on SELECT
      <
      <   http://archives.postgresql.org/pgsql-hackers/2007-03/msg00767.php
      < * Improve logging of prepared statements recovered during startup
      > * Improve logging of prepared transactions recovered during startup
      < * Make standard_conforming_strings the default in 8.4?
      > * Make standard_conforming_strings the default in 8.5?
      < * Allow the count returned by SELECT, etc to be to represent as an int64
      > * Allow the count returned by SELECT, etc to be represented as an int64
      < 	o Use more reliable method for CREATE DATABASE to get a consistent
      < 	  copy of db?
      < 	o Fix transaction restriction checks for CREATE DATABASE and
      < 	  other commands
      <
      < 	  http://archives.postgresql.org/pgsql-hackers/2007-01/msg00133.php
      < 	  currently allowed.
      > 	  currently allowed.  This currently is done if the table is
      > 	  created inside the same transaction block as the COPY because
      > 	  no other backends can see the table.
      < 	o Add SET PATH for schemas?
      <
      < 	  This is basically the same as SET search_path.
      < 	o Enforce referential integrity for system tables
      < 		o Add Oracle-style packages  (Pavel)
      <
      < 		  A package would be a schema with session-local variables,
      < 		  public/private functions, and initialization functions.  It
      < 		  is also possible to implement these capabilities
      < 		  in all schemas and not use a separate "packages"
      < 		  syntax at all.
      <
      < 		  http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php
      <
      < 		o Add single-step debugging of functions
      < 		o Allow RETURN to return row or record functions
      <
      < 		  http://archives.postgresql.org/pgsql-patches/2005-11/msg00045.php
      < 		  http://archives.postgresql.org/pgsql-patches/2006-08/msg00397.php
      < 		  http://archives.postgresql.org/pgsql-hackers/2006-09/msg00388.php
      <
      < 		o Fix problems with RETURN NEXT on tables with
      < 		  dropped/added columns after function creation
      <
      < 		  http://archives.postgresql.org/pgsql-patches/2006-02/msg00165.php
      <
      < * Make consistent use of long/short command options --- pg_ctl needs
      <   long ones, pg_config doesn't have short ones, postgres doesn't have
      <   enough long ones, etc.
      <
      <
      <
      < 	o Consider parsing the -c string into individual queries so each
      < 	  is run in its own transaction
      <
      < 	  http://archives.postgresql.org/pgsql-hackers/2007-01/msg00291.php
      <
      <
      < 	o Remove unnecessary function pointer abstractions in pg_dump source
      < 	  code
      > 	o Remove unnecessary function pointer abstractions in pg_dump source
      > 	  code
      <
      <
      < 	o Fix SSL retry to avoid useless repeated connection attempts and
      < 	  ensuing misleading error messages
      >
      <
      <   This is difficult because it requires datatype-specific knowledge.
      <
      < * Improve commit_delay handling to reduce fsync()
      < * %Add an option to sync() before fsync()'ing checkpoint files
      >
      < * Reduce lock time during VACUUM FULL by moving tuples with read lock,
      <   then write lock and truncate table
      <
      <   Moved tuples are invisible to other backends so they don't require a
      <   write lock. However, the read lock promotion to write lock could lead
      <   to deadlock situations.
      <
      < * Prevent long-lived temporary tables from causing frozen-xid advancement
      <    starvation
      <
      <    The problem is that autovacuum cannot vacuum them to set frozen xids;
      <    only the session that created them can do that.
      <
      <
      <
      < 	o Use free-space map information to guide refilling
      < 	o Consider logging activity either to the logs or a system view
      > 	  The problem is that autovacuum cannot vacuum them to set frozen xids;
      > 	  only the session that created them can do that.
      < * Add connection pooling
      <
      <   It is unclear if this should be done inside the backend code or done
      <   by something external like pgpool. The passing of file descriptors to
      <   existing backends is one of the difficulties with a backend approach.
      <
      < * Consider reducing memory used for shared buffer reference count
      <
      <   http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php
      <
      < * %Remove memory/file descriptor freeing before ereport(ERROR)
      < * %Promote debug_query_string into a server-side function current_query()
      < * Allow ecpg to work with MSVC and BCC
      < * Add xpath_array() to /contrib/xml2 to return results as an array
      < * Allow building in directories containing spaces
      <
      <   This is probably not possible because 'gmake' and other compiler tools
      <   do not fully support quoting of paths with spaces.
      <
      < * Fix sgmltools so PDFs can be generated with bookmarks
      < * Split out libpq pgpass and environment documentation sections to make
      <   it easier for non-developers to find
      < * Use strlcpy() rather than our StrNCpy() macro
      <
      <   http://archives.postgresql.org/pgsql-hackers/2006-09/msg02108.php
      <
      < 	o Re-enable timezone output on log_line_prefix '%t' when a
      < 	  shorter timezone string is available
      < * Allow statements across databases or servers with transaction
      <   semantics
      <
      <   This can be done using dblink and two-phase commit.
      > * Add Oracle-style packages  (Pavel)
      < * Add the features of packages
      > 	  A package would be a schema with session-local variables,
      > 	  public/private functions, and initialization functions.  It
      > 	  is also possible to implement these capabilities
      > 	  in any schema and not use a separate "packages"
      > 	  syntax at all.
      < 	o  Make private objects accessible only to objects in the same schema
      < 	o  Allow current_schema.objname to access current schema objects
      < 	o  Add session variables
      < 	o  Allow nested schemas
      > 	  http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php
      a225bf05
    • B
      Remove TODO.detil for pg_upgrade. · 835a51c6
      Bruce Momjian 提交于
      835a51c6