--
-- Attribute discrepancy fix for object_types in OpenACS:
--
-- Some attributes are not created for new instances since 2006, but an upgrade
-- script deleting the already existing ones was never done.
--
-- This one tries to fix this.
--
-- Original datatype change:
-- https://fisheye.openacs.org/changelog/OpenACS?cs=MAIN%3Avictorg%3A20060727200933
-- https://github.com/openacs/openacs-core/commit/7e30fa270483dcbc866ffbf6f5cf4f30447987cb
--
begin;
CREATE OR REPLACE FUNCTION inline_0(
p_object_type varchar,
p_attribute_name varchar
) RETURNS integer AS $$
DECLARE
v_table_name acs_object_types.table_name%TYPE;
BEGIN
-- Check that attribute exists
select t.table_name into v_table_name
from acs_object_types t, acs_attributes a
where a.object_type = p_object_type
and a.attribute_name = p_attribute_name
and t.object_type = p_object_type;
if found then
-- First remove possible values for the enumeration
delete from acs_enum_values
where attribute_id in (select a.attribute_id
from acs_attributes a
where a.object_type = p_object_type
and a.attribute_name = p_attribute_name);
-- Finally, get rid of the attribute
delete from acs_attributes
where object_type = p_object_type
and attribute_name = p_attribute_name;
end if;
return null;
END;
$$ LANGUAGE plpgsql;
select inline_0('apm_package','package_uri');
select inline_0('apm_package','spec_file_path');
select inline_0('apm_package','spec_file_mtime');
select inline_0('apm_package','singleton_p');
select inline_0('apm_package','initial_install_p');
drop function inline_0(varchar,varchar);
end;