- ELSE RAISE EXCEPTION 'trigger called for invalid table (%)', TG_TABLE_NAME;
- END CASE;
-
- INSERT INTO audit.package_changes
- (package, version, architecture, suite, event, priority, component, section)
- VALUES (v_package, v_version, v_architecture, v_suite, v_event, v_priority, v_component, v_section);
-
- RETURN NEW;
-END;
-$$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER""");
-
- c.execute("""CREATE OR REPLACE FUNCTION trigger_override_update() RETURNS TRIGGER AS $$
-DECLARE
- v_src_override_id override_type.id%TYPE;
-
- v_priority audit.package_changes.priority%TYPE := NULL;
- v_component audit.package_changes.component%TYPE := NULL;
- v_section audit.package_changes.section%TYPE := NULL;
-BEGIN
-
- IF TG_TABLE_NAME != 'override' THEN
- RAISE EXCEPTION 'trigger called for invalid table (%)', TG_TABLE_NAME;
- END IF;
- IF TG_OP != 'UPDATE' THEN
- RAISE EXCEPTION 'trigger called for invalid event (%)', TG_OP;
- END IF;
-
- IF OLD.package != NEW.package OR OLD.type != NEW.type OR OLD.suite != NEW.suite THEN
- RETURN NEW;
- END IF;
-
- IF OLD.priority != NEW.priority THEN
- SELECT priority INTO STRICT v_priority FROM priority WHERE id = NEW.priority;
- END IF;
-
- IF OLD.component != NEW.component THEN
- SELECT name INTO STRICT v_component FROM component WHERE id = NEW.component;
- END IF;
-
- IF OLD.section != NEW.section THEN
- SELECT section INTO STRICT v_section FROM section WHERE id = NEW.section;
- END IF;
-
- -- Find out if we're doing src or binary overrides
- SELECT id INTO STRICT v_src_override_id FROM override_type WHERE type = 'dsc';
- IF OLD.type = v_src_override_id THEN
- -- Doing a src_association link
- INSERT INTO audit.package_changes
- (package, version, architecture, suite, event, priority, component, section)
- SELECT NEW.package, source.version, 'source', suite.suite_name, 'U', v_priority, v_component, v_section
- FROM source
- JOIN src_associations ON (source.id = src_associations.source)
- JOIN suite ON (suite.id = src_associations.suite)
- WHERE source.source = NEW.package AND src_associations.suite = NEW.suite;
- ELSE
- -- Doing a bin_association link
- INSERT INTO audit.package_changes
- (package, version, architecture, suite, event, priority, component, section)
- SELECT NEW.package, binaries.version, architecture.arch_string, suite.suite_name, 'U', v_priority, v_component, v_section
- FROM binaries
- JOIN bin_associations ON (binaries.id = bin_associations.bin)
- JOIN architecture ON (architecture.id = binaries.architecture)
- JOIN suite ON (suite.id = bin_associations.suite)
- WHERE binaries.package = NEW.package AND bin_associations.suite = NEW.suite;
- END IF;