-- -- acs_object__initialize_attributes/1 -- create or replace function acs_object__initialize_attributes( integer ) returns int4 as $$ declare initialize_attributes__object_id alias for $1; v_object_type acs_objects.object_type%TYPE; begin if initialize_attributes__object_id is null then raise exception 'acs_object__initialize_attributes called with null object_id'; end if; -- Initialize dynamic attributes insert into acs_attribute_values (object_id, attribute_id, attr_value) select initialize_attributes__object_id, a.attribute_id, a.default_value from acs_attributes a, acs_objects o where a.object_type = o.object_type and o.object_id = initialize_attributes__object_id and a.storage = 'generic' and a.static_p = 'f'; -- Retrieve type for static attributes select object_type into v_object_type from acs_objects where object_id = initialize_attributes__object_id; -- Initialize static attributes -- begin insert into acs_static_attr_values (object_type, attribute_id, attr_value) select v_object_type, a.attribute_id, a.default_value from acs_attributes a, acs_objects o where a.object_type = o.object_type and o.object_id = initialize_attributes__object_id and a.storage = 'generic' and a.static_p = 't' and not exists (select 1 from acs_static_attr_values where object_type = a.object_type); -- exception when no_data_found then null; return 0; end;$$ language plpgsql;