CHANGES: initdb process has been changed in an attempt to automatically pin some basic types. type and proc currently. Nearly all objects have an enforced RESTRICT / CASCADE except for in 'compiled' expressions. Ie. Views, function contents, default expressions, PG TODO's Completed - Add pg_depend table - Auto-destroy SERIAL - Restrict dropping (in all cases) of required system types and functions (int4, setval, ...) [-] completed [*] yet to do [?] does it need to be done? - Create Type - Create View * Create View (on precompile set deps in source) - Create Trigger - Create Table (Columns on Types) * Create Table / Column Defaults (on precompile set deps in source) - Create Sequence (currval, nextval, setval are PINNED) - Create Rule (always cascade) - Create Operator - Create Language - Create Index - Create Function * Create Function (on precompile set additional deps in source) - Create Aggregate (on precompile set additional deps) - Drop Type (regress tested) - Drop View - Drop Trigger - Drop Table - Drop Sequence - Drop Rule - Drop Operator - Drop Language - Drop Index - Drop Function (regress tested) - Drop Aggregate - Alter Table / Primary Key - Alter Table / unique index * Alter Table / Default (Compiled default depends on functions / types within) - Alter Table / Add Column - Alter table / add column which creates toast table - Base type dependency on array type managed by pg_depend (always cascaded) - Table drop foreign key triggers as managed by pg_depend (always cascaded) - Toast tables depend on relation (always cascade) - Enable opt_behaviour for most items in gram.y - Disallow base functionality (types, procedures, and catalogs required for operation) to be dropped ever - Implicit drop of a SERIALs sequence (regress tested) OTHER NOTES ----------- DROP TYPE should be restricted by DROP TYPE. Ie. DROP TYPE pg_class; CREATE TABLE tab (col1 int4 DEFAULT nextval('seq')); DROP FUNCTION nextval(text) CASCADE; Drop the column (col1) or set the default to NULL? Do objects depend on users (ownership)? ie. DROP USER CASCADE to dump everything they own when they're removed?