135 lines
5.8 KiB
PL/PgSQL
135 lines
5.8 KiB
PL/PgSQL
/* ================================================================
|
|
* c77_dep extension version 1.0.0
|
|
* PostgreSQL Database Dependency Mapping Tool
|
|
*
|
|
* This extension provides tools for analyzing and visualizing
|
|
* dependencies between database objects.
|
|
* ================================================================
|
|
*/
|
|
|
|
-- Complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
\echo Use "CREATE EXTENSION c77_dep" to load this file. \quit
|
|
|
|
-- Set up the schema
|
|
-- Uncomment if you want to use a dedicated schema instead of public
|
|
-- CREATE SCHEMA IF NOT EXISTS c77_dep;
|
|
|
|
-- Core dependency mapping view (base version)
|
|
CREATE OR REPLACE VIEW public.c77_dep_dependencies_map
|
|
AS
|
|
WITH RECURSIVE ctedepends AS (
|
|
-- Base version view definition goes here...
|
|
);
|
|
|
|
COMMENT ON VIEW public.c77_dep_dependencies_map IS 'Maps dependencies between database objects (tables, views, materialized views)';
|
|
|
|
-- Enhanced dependency map with foreign tables
|
|
CREATE OR REPLACE VIEW public.c77_dep_dependencies_map_with_foreign
|
|
AS
|
|
WITH RECURSIVE ctedepends AS (
|
|
-- Enhanced version view definition goes here...
|
|
);
|
|
|
|
COMMENT ON VIEW public.c77_dep_dependencies_map_with_foreign IS 'Maps dependencies between database objects including foreign tables';
|
|
|
|
-- Circular Dependency Detector
|
|
CREATE OR REPLACE FUNCTION public.c77_dep_detect_circular_dependencies()
|
|
RETURNS TABLE(
|
|
object1 text,
|
|
object2 text,
|
|
dependency_type text
|
|
) AS $$
|
|
BEGIN
|
|
-- Function definition goes here...
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
COMMENT ON FUNCTION public.c77_dep_detect_circular_dependencies() IS 'Detects circular dependencies between database objects';
|
|
|
|
-- Orphaned Objects Tracker
|
|
CREATE OR REPLACE VIEW public.c77_dep_orphaned_objects AS
|
|
-- View definition goes here...
|
|
|
|
COMMENT ON VIEW public.c77_dep_orphaned_objects IS 'Identifies database objects with no dependencies or requirements';
|
|
|
|
-- Schema Complexity Assessment
|
|
CREATE OR REPLACE VIEW public.c77_dep_schema_complexity AS
|
|
-- View definition goes here...
|
|
|
|
COMMENT ON VIEW public.c77_dep_schema_complexity IS 'Provides metrics on schema complexity and dependencies';
|
|
|
|
-- Database Object Type Summary
|
|
CREATE OR REPLACE VIEW public.c77_dep_object_type_summary AS
|
|
-- View definition goes here...
|
|
|
|
COMMENT ON VIEW public.c77_dep_object_type_summary IS 'Provides a summary of object types and their dependency characteristics';
|
|
|
|
-- Dependency Risk Assessment
|
|
CREATE OR REPLACE VIEW public.c77_dep_risk_assessment AS
|
|
-- View definition goes here...
|
|
|
|
COMMENT ON VIEW public.c77_dep_risk_assessment IS 'Assesses risk level of modifying database objects based on dependencies';
|
|
|
|
-- Dependency Hub Objects
|
|
CREATE OR REPLACE VIEW public.c77_dep_hub_objects AS
|
|
-- View definition goes here...
|
|
|
|
COMMENT ON VIEW public.c77_dep_hub_objects IS 'Identifies central hub objects with many dependencies';
|
|
|
|
-- Cleanup Candidates
|
|
CREATE OR REPLACE VIEW public.c77_dep_cleanup_candidates AS
|
|
-- View definition goes here...
|
|
|
|
COMMENT ON VIEW public.c77_dep_cleanup_candidates IS 'Identifies objects that may be candidates for cleanup or refactoring';
|
|
|
|
-- Impact Analysis Function
|
|
CREATE OR REPLACE FUNCTION public.c77_dep_analyze_drop_impact(p_object_name text)
|
|
-- Function definition goes here...
|
|
|
|
COMMENT ON FUNCTION public.c77_dep_analyze_drop_impact(text) IS 'Analyzes impact of dropping a database object by showing affected dependencies';
|
|
|
|
-- Export dependency graph in DOT format
|
|
CREATE OR REPLACE FUNCTION public.c77_dep_export_dependency_graph(
|
|
-- Function definition goes here...
|
|
|
|
COMMENT ON FUNCTION public.c77_dep_export_dependency_graph(text, int, boolean) IS 'Exports dependency graph in DOT format for visualization with Graphviz';
|
|
|
|
-- Schema change simulation
|
|
CREATE OR REPLACE FUNCTION public.c77_dep_simulate_schema_change(
|
|
-- Function definition goes here...
|
|
|
|
COMMENT ON FUNCTION public.c77_dep_simulate_schema_change(text, text) IS 'Simulates the impact of changing a schema name';
|
|
|
|
-- Migration Order Function
|
|
CREATE OR REPLACE FUNCTION public.c77_dep_generate_migration_order()
|
|
-- Function definition goes here...
|
|
|
|
COMMENT ON FUNCTION public.c77_dep_generate_migration_order() IS 'Generates a migration order for objects based on their dependencies';
|
|
|
|
-- Function to generate a database dependency report
|
|
CREATE OR REPLACE FUNCTION public.c77_dep_generate_report(
|
|
-- Function definition goes here...
|
|
|
|
COMMENT ON FUNCTION public.c77_dep_generate_report(text, boolean, boolean) IS 'Generates a comprehensive dependency analysis report for the database';
|
|
|
|
-- Extension setup completion
|
|
DO $$
|
|
BEGIN
|
|
RAISE NOTICE 'c77_dep extension version 1.0.0 has been successfully installed.';
|
|
RAISE NOTICE 'Use the following views and functions to analyze database dependencies:';
|
|
RAISE NOTICE '- c77_dep_dependencies_map - Base dependency map';
|
|
RAISE NOTICE '- c77_dep_dependencies_map_with_foreign - Enhanced dependency map with foreign tables';
|
|
RAISE NOTICE '- c77_dep_orphaned_objects - Objects with no dependencies';
|
|
RAISE NOTICE '- c77_dep_schema_complexity - Schema complexity metrics';
|
|
RAISE NOTICE '- c77_dep_object_type_summary - Summary of object types';
|
|
RAISE NOTICE '- c77_dep_risk_assessment - Risk assessment for schema changes';
|
|
RAISE NOTICE '- c77_dep_hub_objects - Objects with many dependencies';
|
|
RAISE NOTICE '- c77_dep_cleanup_candidates - Objects that might need cleanup';
|
|
RAISE NOTICE '- c77_dep_analyze_drop_impact() - Analyze impact of dropping an object';
|
|
RAISE NOTICE '- c77_dep_detect_circular_dependencies() - Detect circular dependencies';
|
|
RAISE NOTICE '- c77_dep_export_dependency_graph() - Export dependencies in DOT format';
|
|
RAISE NOTICE '- c77_dep_simulate_schema_change() - Simulate schema rename impact';
|
|
RAISE NOTICE '- c77_dep_generate_migration_order() - Generate suggested migration order';
|
|
RAISE NOTICE '- c77_dep_generate_report() - Generate dependency analysis report';
|
|
END
|
|
$$; |