Files
src-1.2/game/server/database/packages/lazy_deleter.plsql
T
2014-01-17 07:03:16 -07:00

110 lines
7.2 KiB
Plaintext

create or replace package body lazy_deleter as
procedure purge_one_object (object_in in number) as
BEGIN
DELETE FROM armor WHERE object_id = object_in;
DELETE FROM battlefield_marker_objects WHERE object_id = object_in;
DELETE FROM battlefield_participants WHERE region_object_id = object_in;
DELETE FROM battlefield_participants WHERE character_object_id = object_in;
DELETE FROM biographies WHERE object_id = object_in;
DELETE FROM building_objects WHERE object_id = object_in;
DELETE FROM cell_objects WHERE object_id = object_in;
DELETE FROM city_objects WHERE object_id = object_in;
DELETE FROM creature_objects WHERE object_id = object_in;
DELETE FROM experience_points WHERE object_id = object_in;
DELETE FROM factory_objects WHERE object_id = object_in;
DELETE FROM guild_objects WHERE object_id = object_in;
DELETE FROM harvester_installation_objects WHERE object_id = object_in;
DELETE FROM installation_objects WHERE object_id = object_in;
DELETE FROM intangible_objects WHERE object_id = object_in;
DELETE FROM location_lists WHERE object_id = object_in;
DELETE FROM manf_schematic_attributes WHERE object_id = object_in;
DELETE FROM manf_schematic_objects WHERE object_id = object_in;
DELETE FROM manufacture_inst_objects WHERE object_id = object_in;
DELETE FROM mission_objects WHERE object_id = object_in;
DELETE FROM object_variables WHERE object_id = object_in;
DELETE FROM planet_objects WHERE object_id = object_in;
DELETE FROM player_objects WHERE object_id = object_in;
DELETE FROM player_quest_objects WHERE object_id = object_in;
DELETE FROM property_lists WHERE object_id = object_in;
DELETE FROM resource_container_objects WHERE object_id = object_in;
DELETE FROM scripts WHERE object_id = object_in;
DELETE FROM ship_objects WHERE object_id = object_in;
DELETE FROM static_objects WHERE object_id = object_in;
DELETE FROM swg_characters WHERE object_id = object_in;
DELETE FROM tangible_objects WHERE object_id = object_in;
DELETE FROM temp_characters WHERE object_id = object_in;
DELETE FROM token_objects WHERE object_id = object_in;
DELETE FROM universe_objects WHERE object_id = object_in;
DELETE FROM vehicle_objects WHERE object_id = object_in;
DELETE FROM waypoints WHERE object_id = object_in;
DELETE FROM weapon_objects WHERE object_id = object_in;
DELETE FROM messages WHERE target = object_in;
DELETE FROM objects WHERE object_id = object_in;
END purge_one_object;
procedure purge_objects_bulk(p_object_id VAOFSTRING, p_chunk_size number, p_enable_db_logging number )
as
errors NUMBER;
begin
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM armor WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM battlefield_marker_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM battlefield_participants WHERE region_object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM battlefield_participants WHERE character_object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM biographies WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM building_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM cell_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM city_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM creature_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM experience_points WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM factory_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM guild_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM harvester_installation_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM installation_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM intangible_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM location_lists WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM manf_schematic_attributes WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM manf_schematic_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM manufacture_inst_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM mission_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM object_variables WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM planet_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM player_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM player_quest_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM property_lists WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM resource_container_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM scripts WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM static_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM swg_characters WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM tangible_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM temp_characters WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM token_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM universe_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM vehicle_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM waypoints WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM weapon_objects WHERE object_id = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM messages WHERE target = p_object_id(i);
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM objects WHERE object_id = p_object_id(i);
exception when others then
if ( p_enable_db_logging > 0 ) then
errors:=SQL%BULK_EXCEPTIONS.COUNT;
FOR x IN 1..errors LOOP
db_error_logger.dblogerror( -SQL%BULK_EXCEPTIONS(x).ERROR_CODE, 'procedure purge_objects_bulk: error occurred in FORALL DELETE during iteration: ' || SQL%BULK_EXCEPTIONS(x).ERROR_INDEX );
if ( p_enable_db_logging > 1 ) then
db_error_logger.dblogerror_values( 'lazy deleter', 'object_id' , 'number', p_object_id(to_number(SQL%BULK_EXCEPTIONS(x).ERROR_INDEX)));
end if;
END LOOP;
else
NULL;
end if;
end;
end lazy_deleter;
/