1. 21 12月, 2016 1 次提交
    • A
      Add tablespace OID to gp_relation_node and its index. · 8fe321af
      Ashwin Agrawal 提交于
      Relfilenode is only unique within a tablespace. Across tablespaces same
      relfilenode may be allocated within a database. Currently, gp_relation_node only
      stores relfilenode and segment_num and has unique index using only those fields
      without tablespace. So, it breaks for situations where same relfilenode gets
      allocated to table within database.
      8fe321af
  2. 14 11月, 2016 1 次提交
    • Y
      Remaining part of extension framework · 758d72aa
      Yandong Yao 提交于
      - continue to merge the remaining part of extension framework,
      include alter extension, extension view, extension upgrade,
      psql support.
      - Make plpgsql available as an extension.
      - Support dump for extension.
      - Use new oid dispatch method to for extension oid
      
      commit d9572c4e
      Author: Tom Lane <tgl@sss.pgh.pa.us>
      Date:   Tue Feb 8 16:08:41 2011 -0500
      
          Core support for "extensions", which are packages of SQL objects.
      
          This patch adds the server infrastructure to support extensions.
          There is still one significant loose end, namely how to make it play nice
          with pg_upgrade, so I am not yet committing the changes that would make
          all the contrib modules depend on this feature.
      
          In passing, fix a disturbingly large amount of breakage in
          AlterObjectNamespace() and callers.
      
          Dimitri Fontaine, reviewed by Anssi Kääriäinen,
          Itagaki Takahiro, Tom Lane, and numerous others
      
      commit 5bc178b8
      Author: Tom Lane <tgl@sss.pgh.pa.us>
      Date:   Wed Feb 9 11:55:32 2011 -0500
      
          Implement "ALTER EXTENSION ADD object".
      
          This is an essential component of making the extension feature usable;
          first because it's needed in the process of converting an existing
          installation containing "loose" objects of an old contrib module into
          the extension-based world, and second because we'll have to use it
          in pg_dump --binary-upgrade, as per recent discussion.
      
          Loosely based on part of Dimitri Fontaine's ALTER EXTENSION UPGRADE
          patch.
      
      commit 01467d3e
      Author: Tom Lane <tgl@sss.pgh.pa.us>
      Date:   Thu Feb 10 17:36:44 2011 -0500
      
          Extend "ALTER EXTENSION ADD object" to permit "DROP object" as well.
      
          Per discussion, this is something we should have sooner rather than later,
          and it doesn't take much additional code to support it.
      
      commit 12147499
      Author: Tom Lane <tgl@sss.pgh.pa.us>
      Date:   Fri Feb 11 21:25:20 2011 -0500
      
          Add support for multiple versions of an extension and ALTER EXTENSION UPDATE.
      
          This follows recent discussions, so it's quite a bit different from
          Dimitri's original.  There will probably be more changes once we get a bit
          of experience with it, but let's get it in and start playing with it.
      
          This is still just core code.  I'll start converting contrib modules
          shortly.
      
          Dimitri Fontaine and Tom Lane
      758d72aa
  3. 16 8月, 2016 1 次提交
  4. 19 5月, 2016 1 次提交
  5. 28 10月, 2015 1 次提交
  6. 02 1月, 2008 1 次提交
  7. 16 11月, 2007 1 次提交
  8. 27 8月, 2007 1 次提交
    • T
      Fix a couple of misbehaviors rooted in the fact that the default creation · 862861ee
      Tom Lane 提交于
      namespace isn't necessarily first in the search path (there could be implicit
      schemas ahead of it).  Examples are
      
      test=# set search_path TO s1;
      
      test=# create view pg_timezone_names as select * from pg_timezone_names();
      ERROR:  "pg_timezone_names" is already a view
      
      test=# create table pg_class (f1 int primary key);
      ERROR:  permission denied: "pg_class" is a system catalog
      
      You'd expect these commands to create the requested objects in s1, since
      names beginning with pg_ aren't supposed to be reserved anymore.  What is
      happening is that we create the requested base table and then execute
      additional commands (here, CREATE RULE or CREATE INDEX), and that code is
      passed the same RangeVar that was in the original command.  Since that
      RangeVar has schemaname = NULL, the secondary commands think they should do a
      path search, and that means they find system catalogs that are implicitly in
      front of s1 in the search path.
      
      This is perilously close to being a security hole: if the secondary command
      failed to apply a permission check then it'd be possible for unprivileged
      users to make schema modifications to system catalogs.  But as far as I can
      find, there is no code path in which a check doesn't occur.  Which makes it
      just a weird corner-case bug for people who are silly enough to want to
      name their tables the same as a system catalog.
      
      The relevant code has changed quite a bit since 8.2, which means this patch
      wouldn't work as-is in the back branches.  Since it's a corner case no one
      has reported from the field, I'm not going to bother trying to back-patch.
      862861ee
  9. 24 6月, 2007 1 次提交
    • T
      Separate parse-analysis for utility commands out of parser/analyze.c · 46379d6e
      Tom Lane 提交于
      (which now deals only in optimizable statements), and put that code
      into a new file parser/parse_utilcmd.c.  This helps clarify and enforce
      the design rule that utility statements shouldn't be processed during
      the regular parse analysis phase; all interpretation of their meaning
      should happen after they are given to ProcessUtility to execute.
      (We need this because we don't retain any locks for a utility statement
      that's in a plan cache, nor have any way to detect that it's stale.)
      
      We are also able to simplify the API for parse_analyze() and related
      routines, because they will now always return exactly one Query structure.
      
      In passing, fix bug #3403 concerning trying to add a serial column to
      an existing temp table (this is largely Heikki's work, but we needed
      all that restructuring to make it safe).
      46379d6e
  10. 28 4月, 2007 1 次提交
    • T
      Modify processing of DECLARE CURSOR and EXPLAIN so that they can resolve the · bbbe825f
      Tom Lane 提交于
      types of unspecified parameters when submitted via extended query protocol.
      This worked in 8.2 but I had broken it during plancache changes.  DECLARE
      CURSOR is now treated almost exactly like a plain SELECT through parse
      analysis, rewrite, and planning; only just before sending to the executor
      do we divert it away to ProcessUtility.  This requires a special-case check
      in a number of places, but practically all of them were already special-casing
      SELECT INTO, so it's not too ugly.  (Maybe it would be a good idea to merge
      the two by treating IntoClause as a form of utility statement?  Not going to
      worry about that now, though.)  That approach doesn't work for EXPLAIN,
      however, so for that I punted and used a klugy solution of running parse
      analysis an extra time if under extended query protocol.
      bbbe825f
  11. 20 3月, 2007 1 次提交
    • J
      Changes pg_trigger and extend pg_rewrite in order to allow triggers and · 0fe16500
      Jan Wieck 提交于
      rules to be defined with different, per session controllable, behaviors
      for replication purposes.
      
      This will allow replication systems like Slony-I and, as has been stated
      on pgsql-hackers, other products to control the firing mechanism of
      triggers and rewrite rules without modifying the system catalog directly.
      
      The firing mechanisms are controlled by a new superuser-only GUC
      variable, session_replication_role, together with a change to
      pg_trigger.tgenabled and a new column pg_rewrite.ev_enabled. Both
      columns are a single char data type now (tgenabled was a bool before).
      The possible values in these attributes are:
      
           'O' - Trigger/Rule fires when session_replication_role is "origin"
                 (default) or "local". This is the default behavior.
      
           'D' - Trigger/Rule is disabled and fires never
      
           'A' - Trigger/Rule fires always regardless of the setting of
                 session_replication_role
      
           'R' - Trigger/Rule fires when session_replication_role is "replica"
      
      The GUC variable can only be changed as long as the system does not have
      any cached query plans. This will prevent changing the session role and
      accidentally executing stored procedures or functions that have plans
      cached that expand to the wrong query set due to differences in the rule
      firing semantics.
      
      The SQL syntax for changing a triggers/rules firing semantics is
      
           ALTER TABLE <tabname> <when> TRIGGER|RULE <name>;
      
           <when> ::= ENABLE | ENABLE ALWAYS | ENABLE REPLICA | DISABLE
      
      psql's \d command as well as pg_dump are extended in a backward
      compatible fashion.
      
      Jan
      0fe16500
  12. 13 3月, 2007 1 次提交
    • T
      First phase of plan-invalidation project: create a plan cache management · b9527e98
      Tom Lane 提交于
      module and teach PREPARE and protocol-level prepared statements to use it.
      In service of this, rearrange utility-statement processing so that parse
      analysis does not assume table schemas can't change before execution for
      utility statements (necessary because we don't attempt to re-acquire locks
      for utility statements when reusing a stored plan).  This requires some
      refactoring of the ProcessUtility API, but it ends up cleaner anyway,
      for instance we can get rid of the QueryContext global.
      
      Still to do: fix up SPI and related code to use the plan cache; I'm tempted to
      try to make SQL functions use it too.  Also, there are at least some aspects
      of system state that we want to ensure remain the same during a replan as in
      the original processing; search_path certainly ought to behave that way for
      instance, and perhaps there are others.
      b9527e98
  13. 02 2月, 2007 1 次提交
    • B
      Wording cleanup for error messages. Also change can't -> cannot. · 8b4ff8b6
      Bruce Momjian 提交于
      Standard English uses "may", "can", and "might" in different ways:
      
              may - permission, "You may borrow my rake."
      
              can - ability, "I can lift that log."
      
              might - possibility, "It might rain today."
      
      Unfortunately, in conversational English, their use is often mixed, as
      in, "You may use this variable to do X", when in fact, "can" is a better
      choice.  Similarly, "It may crash" is better stated, "It might crash".
      8b4ff8b6
  14. 06 1月, 2007 1 次提交
  15. 04 10月, 2006 1 次提交
  16. 06 9月, 2006 1 次提交
    • T
      Get rid of the separate RULE privilege for tables: now only a table's owner · 7bae5a28
      Tom Lane 提交于
      can create or modify rules for the table.  Do setRuleCheckAsUser() while
      loading rules into the relcache, rather than when defining a rule.  This
      ensures that permission checks for tables referenced in a rule are done with
      respect to the current owner of the rule's table, whereas formerly ALTER TABLE
      OWNER would fail to update the permission checking for associated rules.
      Removal of separate RULE privilege is needed to prevent various scenarios
      in which a grantee of RULE privilege could effectively have any privilege
      of the table owner.  For backwards compatibility, GRANT/REVOKE RULE is still
      accepted, but it doesn't do anything.  Per discussion here:
      http://archives.postgresql.org/pgsql-hackers/2006-04/msg01138.php
      7bae5a28
  17. 03 9月, 2006 1 次提交
    • T
      Apply a simple solution to the problem of making INSERT/UPDATE/DELETE · 917bbebf
      Tom Lane 提交于
      RETURNING play nice with views/rules.  To wit, have the rule rewriter
      rewrite any RETURNING clause found in a rule to produce what the rule's
      triggering query asked for in its RETURNING clause, in particular drop
      the RETURNING clause if no RETURNING in the triggering query.  This
      leaves the responsibility for knowing how to produce the view's output
      columns on the rule author, without requiring any fundamental changes
      in rule semantics such as adding new rule event types would do.  The
      initial implementation constrains things to ensure that there is
      exactly one, unconditionally invoked RETURNING clause among the rules
      for an event --- later we might be able to relax that, but for a post
      feature freeze fix it seems better to minimize how much invention we do.
      Per gripe from Jaime Casanova.
      917bbebf
  18. 13 8月, 2006 1 次提交
    • T
      Tweak SPI_cursor_open to allow INSERT/UPDATE/DELETE RETURNING; this was · 3f8db37c
      Tom Lane 提交于
      merely a matter of fixing the error check, since the underlying Portal
      infrastructure already handles it.  This in turn allows these statements
      to be used in some existing plpgsql and plperl contexts, such as a
      plpgsql FOR loop.  Also, do some marginal code cleanup in places that
      were being sloppy about distinguishing SELECT from SELECT INTO.
      3f8db37c
  19. 19 7月, 2006 1 次提交
  20. 14 7月, 2006 1 次提交
  21. 05 3月, 2006 1 次提交
  22. 23 11月, 2005 1 次提交
  23. 18 10月, 2005 1 次提交
  24. 15 10月, 2005 1 次提交
  25. 28 6月, 2005 1 次提交
    • T
      Replace pg_shadow and pg_group by new role-capable catalogs pg_authid · 7762619e
      Tom Lane 提交于
      and pg_auth_members.  There are still many loose ends to finish in this
      patch (no documentation, no regression tests, no pg_dump support for
      instance).  But I'm going to commit it now anyway so that Alvaro can
      make some progress on shared dependencies.  The catalog changes should
      be pretty much done.
      7762619e
  26. 15 4月, 2005 1 次提交
    • T
      Completion of project to use fixed OIDs for all system catalogs and · 162bd08b
      Tom Lane 提交于
      indexes.  Replace all heap_openr and index_openr calls by heap_open
      and index_open.  Remove runtime lookups of catalog OID numbers in
      various places.  Remove relcache's support for looking up system
      catalogs by name.  Bulky but mostly very boring patch ...
      162bd08b
  27. 14 4月, 2005 1 次提交
    • T
      First phase of project to use fixed OIDs for all system catalogs and · 7c13781e
      Tom Lane 提交于
      indexes.  Extend the macros in include/catalog/*.h to carry the info
      about hand-assigned OIDs, and adjust the genbki script and bootstrap
      code to make the relations actually get those OIDs.  Remove the small
      number of RelOid_pg_foo macros that we had in favor of a complete
      set named like the catname.h and indexing.h macros.  Next phase will
      get rid of internal use of names for looking up catalogs and indexes;
      but this completes the changes forcing an initdb, so it looks like a
      good place to commit.
      Along the way, I made the shared relations (pg_database etc) not be
      'bootstrap' relations any more, so as to reduce the number of hardwired
      entries and simplify changing those relations in future.  I'm not
      sure whether they ever really needed to be handled as bootstrap
      relations, but it seems to work fine to not do so now.
      7c13781e
  28. 07 4月, 2005 1 次提交
    • T
      Merge Resdom nodes into TargetEntry nodes to simplify code and save a · ad161bcc
      Tom Lane 提交于
      few palloc's.  I also chose to eliminate the restype and restypmod fields
      entirely, since they are redundant with information stored in the node's
      contained expression; re-examining the expression at need seems simpler
      and more reliable than trying to keep restype/restypmod up to date.
      
      initdb forced due to change in contents of stored rules.
      ad161bcc
  29. 28 1月, 2005 1 次提交
  30. 11 1月, 2005 1 次提交
  31. 01 1月, 2005 1 次提交
    • P
      · 2ff50159
      PostgreSQL Daemon 提交于
      Tag appropriate files for rc3
      
      Also performed an initial run through of upgrading our Copyright date to
      extend to 2005 ... first run here was very simple ... change everything
      where: grep 1996-2004 && the word 'Copyright' ... scanned through the
      generated list with 'less' first, and after, to make sure that I only
      picked up the right entries ...
      2ff50159
  32. 29 8月, 2004 2 次提交
  33. 31 5月, 2004 1 次提交
  34. 26 5月, 2004 1 次提交
    • N
      Reimplement the linked list data structure used throughout the backend. · d0b4399d
      Neil Conway 提交于
      In the past, we used a 'Lispy' linked list implementation: a "list" was
      merely a pointer to the head node of the list. The problem with that
      design is that it makes lappend() and length() linear time. This patch
      fixes that problem (and others) by maintaining a count of the list
      length and a pointer to the tail node along with each head node pointer.
      A "list" is now a pointer to a structure containing some meta-data
      about the list; the head and tail pointers in that structure refer
      to ListCell structures that maintain the actual linked list of nodes.
      
      The function names of the list API have also been changed to, I hope,
      be more logically consistent. By default, the old function names are
      still available; they will be disabled-by-default once the rest of
      the tree has been updated to use the new API names.
      d0b4399d
  35. 19 5月, 2004 1 次提交
  36. 10 2月, 2004 1 次提交
    • T
      Restructure smgr API as per recent proposal. smgr no longer depends on · 87bd9563
      Tom Lane 提交于
      the relcache, and so the notion of 'blind write' is gone.  This should
      improve efficiency in bgwriter and background checkpoint processes.
      Internal restructuring in md.c to remove the not-very-useful array of
      MdfdVec objects --- might as well just use pointers.
      Also remove the long-dead 'persistent main memory' storage manager (mm.c),
      since it seems quite unlikely to ever get resurrected.
      87bd9563
  37. 15 1月, 2004 1 次提交
    • T
      Fix permission-checking bug reported by Tim Burgess 10-Feb-03 (this time · cfd7fb7e
      Tom Lane 提交于
      for sure...).  Rather than relying on the query context of a rangetable
      entry to identify what permissions it wants checked, store a full AclMode
      mask in each RTE, and check exactly those bits.  This allows an RTE
      specifying, say, INSERT privilege on a view to be copied into a derived
      UPDATE query without changing meaning.  Per recent discussion thread.
      initdb forced due to change of stored rule representation.
      cfd7fb7e
  38. 30 11月, 2003 1 次提交
    • P
      · 969685ad
      PostgreSQL Daemon 提交于
      $Header: -> $PostgreSQL Changes ...
      969685ad
  39. 29 9月, 2003 1 次提交