1. 14 Feb, 2011 2 commits
    • Tom Lane's avatar
      Support replacing MODULE_PATHNAME during extension script file execution. · e693e97d
      Tom Lane authored
      This avoids the need to find a way to make PGXS' .sql.in-to-.sql rule
      insert the right thing.  We'll just deprecate use of that hack for
      extensions.
      e693e97d
    • Tom Lane's avatar
      Change the naming convention for extension files to use double dashes. · 27d5d7ab
      Tom Lane authored
      This allows us to have an unambiguous rule for deconstructing the names
      of script files and secondary control files, without having to forbid
      extension and version names from containing any dashes.  We do have to
      forbid them from containing double dashes or leading/trailing dashes,
      but neither restriction is likely to bother anyone in practice.
      Per discussion, this seems like a better solution overall than the
      original design.
      27d5d7ab
  2. 13 Feb, 2011 3 commits
  3. 12 Feb, 2011 6 commits
    • Tom Lane's avatar
      Refactor ALTER EXTENSION UPDATE to have cleaner multi-step semantics. · 6c2e734f
      Tom Lane authored
      This change causes a multi-step update sequence to behave exactly as if the
      updates had been commanded one at a time, including updating the "requires"
      dependencies afresh at each step.  The initial implementation took the
      shortcut of examining only the final target version's "requires" and
      changing the catalog entry but once.  But on reflection that's a bad idea,
      since it could lead to executing old update scripts under conditions
      different than they were designed/tested for.  Better to expend a few extra
      cycles and avoid any surprises.
      
      In the same spirit, if a CREATE EXTENSION FROM operation involves applying
      a series of update files, it will act as though the CREATE had first been
      done using the initial script's target version and then the additional
      scripts were invoked with ALTER EXTENSION UPDATE.
      
      I also removed the restriction about not changing encoding in secondary
      control files.  The new rule is that a script is assumed to be in whatever
      encoding the control file(s) specify for its target version.  Since this
      reimplementation causes us to read each intermediate version's control
      file, there's no longer any uncertainty about which encoding setting would
      get applied.
      6c2e734f
    • Bruce Momjian's avatar
      Properly handle Win32 paths of 'E:abc', which can be either absolute or · 0de0cc15
      Bruce Momjian authored
      relative, by creating a function path_is_relative_and_below_cwd() to
      check for specific requirements.  It is unclear if this fixes a security
      problem or not but the new code is more robust.
      0de0cc15
    • Peter Eisentraut's avatar
      DDL support for collations · b313bca0
      Peter Eisentraut authored
      - collowner field
      - CREATE COLLATION
      - ALTER COLLATION
      - DROP COLLATION
      - COMMENT ON COLLATION
      - integration with extensions
      - pg_dump support for the above
      - dependency management
      - psql tab completion
      - psql \dO command
      b313bca0
    • Robert Haas's avatar
      Teach ALTER TABLE .. SET DATA TYPE to avoid some table rewrites. · d31e2a49
      Robert Haas authored
      When the old type is binary coercible to the new type and the using
      clause does not change the column contents, we can avoid a full table
      rewrite, though any indexes on the affected columns will still need
      to be rebuilt.  This applies, for example, when changing a varchar
      column to be of type text.
      
      The prior coding assumed that the set of operations that force a
      rewrite is identical to the set of operations that must be propagated
      to tables making use of the affected table's rowtype.  This is
      no longer true: even though the tuples in those tables wouldn't
      need to be modified, the data type change invalidate indexes built
      using those composite type columns.  Indexes on the table we're
      actually modifying can be invalidated too, of course, but the
      existing machinery is sufficient to handle that case.
      
      Along the way, add some debugging messages that make it possible
      to understand what operations ALTER TABLE is actually performing
      in these cases.
      
      Noah Misch and Robert Haas
      d31e2a49
    • Tom Lane's avatar
      Clean up installation directory choices for extensions. · 24d1280c
      Tom Lane authored
      Arrange for the control files to be in $SHAREDIR/extension not
      $SHAREDIR/contrib, since we're generally trying to deprecate the term
      "contrib" and this is a once-in-many-moons opportunity to get rid of it in
      install paths.  Fix PGXS to install the $EXTENSION file into that directory
      no matter what MODULEDIR is set to; a nondefault MODULEDIR should only
      affect the script and secondary extension files.  Fix the control file
      directory parameter to be interpreted relative to $SHAREDIR, to avoid a
      surprising disconnect between how you specify that and what you set
      MODULEDIR to.
      
      Per discussion with David Wheeler.
      24d1280c
    • Tom Lane's avatar
      Add support for multiple versions of an extension and ALTER EXTENSION UPDATE. · 12147499
      Tom Lane authored
      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
      12147499
  4. 11 Feb, 2011 4 commits
  5. 10 Feb, 2011 14 commits
  6. 09 Feb, 2011 7 commits
  7. 08 Feb, 2011 4 commits
    • Tom Lane's avatar
      Suppress some compiler warnings in recent commits. · 375e5b0a
      Tom Lane authored
      Older versions of gcc tend to throw "variable might be clobbered by
      `longjmp' or `vfork'" warnings whenever a variable is assigned in more than
      one place and then used after the end of a PG_TRY block.  That's reasonably
      easy to work around in execute_extension_script, and the overhead of
      unconditionally saving/restoring the GUC variables seems unlikely to be a
      serious concern.
      
      Also clean up logic in ATExecValidateConstraint to make it easier to read
      and less likely to provoke "variable might be used uninitialized in this
      function" warnings.
      375e5b0a
    • Tom Lane's avatar
      Fix merge conflict. · 0bc0bd07
      Tom Lane authored
      0bc0bd07
    • Tom Lane's avatar
      Core support for "extensions", which are packages of SQL objects. · d9572c4e
      Tom Lane authored
      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
      d9572c4e
    • Peter Eisentraut's avatar
      Per-column collation support · 414c5a2e
      Peter Eisentraut authored
      This adds collation support for columns and domains, a COLLATE clause
      to override it per expression, and B-tree index support.
      
      Peter Eisentraut
      reviewed by Pavel Stehule, Itagaki Takahiro, Robert Haas, Noah Misch
      414c5a2e