mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-14 00:01:30 -04:00
68 lines
1.9 KiB
SQL
68 lines
1.9 KiB
SQL
delete object_variable_names
|
|
where id not in (select name_id from object_variables);
|
|
commit;
|
|
|
|
create table orphan_objects(object_id number, contained_by number, deleted number, player_controlled char(1));
|
|
alter table orphan_objects add constraint orphan_objects_pk primary key (object_id);
|
|
insert into orphan_objects(object_id, contained_by, deleted, player_controlled)
|
|
select object_id, contained_by, deleted, player_controlled
|
|
from objects;
|
|
commit;
|
|
|
|
set serveroutput on
|
|
declare
|
|
cnt number := 0;
|
|
total number := 0;
|
|
deleted_code number;
|
|
rowcount number := 0;
|
|
cursor c1 is select object_id, contained_by from orphan_objects
|
|
where contained_by > 10000000 and deleted = 0 and player_controlled = 'N';
|
|
begin
|
|
loop
|
|
cnt := 0;
|
|
rowcount := 0;
|
|
for c1rec in c1 loop
|
|
begin
|
|
deleted_code := 0;
|
|
select deleted into deleted_code
|
|
from orphan_objects
|
|
where object_id = c1rec.contained_by;
|
|
if (deleted_code <> 0) then
|
|
update orphan_objects
|
|
set deleted = 1
|
|
where object_id = c1rec.object_id;
|
|
rowcount := rowcount + 1;
|
|
cnt := cnt + 1;
|
|
end if;
|
|
exception
|
|
when no_data_found then
|
|
update orphan_objects
|
|
set deleted = 1
|
|
where object_id = c1rec.object_id;
|
|
rowcount := rowcount + 1;
|
|
cnt := cnt + 1;
|
|
end;
|
|
if (rowcount >= 1000) then
|
|
rowcount := 0;
|
|
commit;
|
|
end if;
|
|
end loop;
|
|
commit;
|
|
dbms_output.put_line('Found ' || cnt || ' orphan objects');
|
|
total := total + cnt;
|
|
exit when cnt = 0;
|
|
end loop;
|
|
dbms_output.put_line('Total orphan found: ' || total);
|
|
end;
|
|
/
|
|
|
|
update objects o
|
|
set deleted = 1, deleted_date = sysdate, load_with = null
|
|
where deleted = 0 and
|
|
exists (select 1 from orphan_objects oo where oo.object_id = o.object_id and oo.deleted = 1);
|
|
commit;
|
|
|
|
drop table orphan_objects;
|
|
|
|
|