1. 12 Jun, 2001 1 commit
    • Tom Lane's avatar
      Clean up various to-do items associated with system indexes: · 1d584f97
      Tom Lane authored
      pg_database now has unique indexes on oid and on datname.
      pg_shadow now has unique indexes on usename and on usesysid.
      pg_am now has unique index on oid.
      pg_opclass now has unique index on oid.
      pg_amproc now has unique index on amid+amopclaid+amprocnum.
      Remove pg_rewrite's unnecessary index on oid, delete unused RULEOID syscache.
      Remove index on pg_listener and associated syscache for performance reasons
      (caching rows that are certain to change before you need 'em again is
      rather pointless).
      Change pg_attrdef's nonunique index on adrelid into a unique index on
      adrelid+adnum.
      
      Fix various incorrect settings of pg_class.relisshared, make that the
      primary reference point for whether a relation is shared or not.
      IsSharedSystemRelationName() is now only consulted to initialize relisshared
      during initial creation of tables and indexes.  In theory we might now
      support shared user relations, though it's not clear how one would get
      entries for them into pg_class &etc of multiple databases.
      
      Fix recently reported bug that pg_attribute rows created for an index all have
      the same OID.  (Proof that non-unique OID doesn't matter unless it's
      actually used to do lookups ;-))
      
      There's no need to treat pg_trigger, pg_attrdef, pg_relcheck as bootstrap
      relations.  Convert them into plain system catalogs without hardwired
      entries in pg_class and friends.
      
      Unify global.bki and template1.bki into a single init script postgres.bki,
      since the alleged distinction between them was misleading and pointless.
      Not to mention that it didn't work for setting up indexes on shared
      system relations.
      
      Rationalize locking of pg_shadow, pg_group, pg_attrdef (no need to use
      AccessExclusiveLock where ExclusiveLock or even RowExclusiveLock will do).
      Also, hold locks until transaction commit where necessary.
      1d584f97
  2. 14 May, 2001 1 commit
  3. 07 May, 2001 1 commit
    • Tom Lane's avatar
      Rewrite of planner statistics-gathering code. ANALYZE is now available as · f905d65e
      Tom Lane authored
      a separate statement (though it can still be invoked as part of VACUUM, too).
      pg_statistic redesigned to be more flexible about what statistics are
      stored.  ANALYZE now collects a list of several of the most common values,
      not just one, plus a histogram (not just the min and max values).  Random
      sampling is used to make the process reasonably fast even on very large
      tables.  The number of values and histogram bins collected is now
      user-settable via an ALTER TABLE command.
      
      There is more still to do; the new stats are not being used everywhere
      they could be in the planner.  But the remaining changes for this project
      should be localized, and the behavior is already better than before.
      
      A not-very-related change is that sorting now makes use of btree comparison
      routines if it can find one, rather than invoking '<' twice.
      f905d65e
  4. 22 Mar, 2001 1 commit
  5. 24 Jan, 2001 1 commit
  6. 14 Jan, 2001 1 commit
    • Tom Lane's avatar
      pg_database's datpath column must not be marked toastable, because · 8a0c9b17
      Tom Lane authored
      GetRawDatabaseInfo() won't cope with a compressed path spec (much less
      a moved-off one).  I'm not going to force an initdb for this change,
      because it's noncritical --- we're not actually using datpath at all
      right now.  But it seems a good idea to apply the fix while I'm thinking
      about it.
      8a0c9b17
  7. 14 Nov, 2000 1 commit
    • Tom Lane's avatar
      Extend CREATE DATABASE to allow selection of a template database to be · 2cf48ca0
      Tom Lane authored
      cloned, rather than always cloning template1.  Modify initdb to generate
      two identical databases rather than one, template0 and template1.
      Connections to template0 are disallowed, so that it will always remain
      in its virgin as-initdb'd state.  pg_dumpall now dumps databases with
      restore commands that say CREATE DATABASE foo WITH TEMPLATE = template0.
      This allows proper behavior when there is user-added data in template1.
      initdb forced!
      2cf48ca0
  8. 22 Oct, 2000 1 commit
  9. 16 Oct, 2000 1 commit
  10. 05 Oct, 2000 1 commit
  11. 06 Aug, 2000 1 commit
    • Tom Lane's avatar
      Toast all the system-table columns that seem to need it. It turns out · c3e2a951
      Tom Lane authored
      that giving pg_proc a toast table required solving the same problems
      we'd have to solve for pg_class --- pg_proc is one of the relations
      that gets bootstrapped in relcache.c.  Solution is to go back at the
      end of initialization and read in the *real* pg_class row to replace
      the phony entry created by formrdesc().  This should work as long as
      there's no need to touch any toasted values during initialization,
      which seems a reasonable assumption.
      Although I did not add a toast-table for every single system table
      with a varlena attribute, I believe that it would work to just do
      ALTER TABLE pg_class CREATE TOAST TABLE.  So anyone who's really
      intent on having several thousand ACL entries for a rel could do it.
      NOTE: I didn't force initdb, but you must do one to see the effects
      of this patch.
      c3e2a951
  12. 31 Jul, 2000 1 commit
  13. 03 Jul, 2000 1 commit
    • Jan Wieck's avatar
      TOAST · 57d8080a
      Jan Wieck authored
          WARNING: This is actually broken - we have self-deadlocks
      	         due to concurrent changes in buffer management.
      			 Vadim and me are working on it.
      
      Jan
      57d8080a
  14. 02 Jul, 2000 1 commit
  15. 12 Jun, 2000 1 commit
  16. 09 Jun, 2000 2 commits
    • Bruce Momjian's avatar
      I have large database and with this DB work more users and I very need · 85add42a
      Bruce Momjian authored
      more restriction for fretful users. The current PG allow define only
      NO-CREATE-DB and NO-CREATE-USER restriction, but for some users I need
      NO-CREATE-TABLE and NO-LOCK-TABLE.
      
      This patch add to current code NOCREATETABLE and NOLOCKTABLE feature:
      
      CREATE USER username
          [ WITH
           [ SYSID uid ]
           [ PASSWORD 'password' ] ]
          [ CREATEDB   | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ]
      ->  [ CREATETABLE | NOCREATETABLE ] [ LOCKTABLE | NOLOCKTABLE ]
          ...etc.
      
       If CREATETABLE or LOCKTABLE is not specific in CREATE USER command,
      as default is set CREATETABLE or LOCKTABLE (true).
      
       A user with NOCREATETABLE restriction can't call CREATE TABLE or
      SELECT INTO commands, only create temp table is allow for him.
      
                                                      Karel
      85add42a
    • Bruce Momjian's avatar
  17. 28 May, 2000 1 commit
    • Tom Lane's avatar
      First round of changes for new fmgr interface. fmgr itself and the · 0a7fb4e9
      Tom Lane authored
      key call sites are changed, but most called functions are still oldstyle.
      An exception is that the PL managers are updated (so, for example, NULL
      handling now behaves as expected in plperl and plpgsql functions).
      NOTE initdb is forced due to added column in pg_proc.
      0a7fb4e9
  18. 12 Apr, 2000 1 commit
  19. 09 Mar, 2000 1 commit
  20. 26 Jan, 2000 1 commit
    • Bruce Momjian's avatar
      Add: · 5c25d602
      Bruce Momjian authored
        * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
      
      to all files copyright Regents of Berkeley.  Man, that's a lot of files.
      5c25d602
  21. 11 Jan, 2000 1 commit
  22. 20 Dec, 1999 1 commit
  23. 29 Sep, 1999 1 commit
    • Jan Wieck's avatar
      This is part #1 for of the DEFERRED CONSTRAINT TRIGGER support. · 1547ee01
      Jan Wieck authored
      Implements the CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands.
      
      TODO:
          Generic builtin trigger procedures
          Automatic execution of appropriate CREATE CONSTRAINT... at CREATE TABLE
          Support of new trigger type in pg_dump
          Swapping of huge # of events to disk
      
      Jan
      1547ee01
  24. 09 Aug, 1999 1 commit
  25. 31 Jul, 1999 1 commit
  26. 25 May, 1999 1 commit
  27. 28 Mar, 1999 1 commit
  28. 13 Feb, 1999 1 commit
  29. 10 Sep, 1998 1 commit
  30. 01 Sep, 1998 2 commits
  31. 27 Aug, 1998 2 commits
  32. 26 Aug, 1998 4 commits
  33. 24 Aug, 1998 1 commit
    • Bruce Momjian's avatar
      o note that now pg_database has a new attribuite "encoding" even · c0b01461
      Bruce Momjian authored
      if MULTIBYTE is not enabled. So be sure to run initdb.
      
      o these patches are made against the latest source tree (after
      Bruce's massive patch, I think) BTW, I noticed that after running
      regression, the oid field of pg_type seems disappeared.
      
      	regression=> select oid from pg_type; ERROR:  attribute
      	'oid' not found
      
      this happens after the constraints test. This occures with/without
      my patches. strange...
      
      o pg_database_mb.h, pg_class_mb.h, pg_attribute_mb.h are no longer
      used, and shoud be removed.
      
      o GetDatabaseInfo() in utils/misc/database.c removed (actually in
      #ifdef 0). seems nobody uses.
      
      t-ishii@sra.co.jp
      c0b01461
  34. 11 Aug, 1998 1 commit