missing project/build files
[client-tools.git] / src / game / server / database / packages / purge_methods.plsql
bloba347ef96f644657ed863653161dc338c5f883d1e
1 CREATE OR REPLACE PACKAGE BODY purge_methods IS
3   FUNCTION Purge_objects
4     (date_in       in objects.deleted_date%type)
5   RETURN NUMBER IS
6     v_count NUMBER := 0;
7   BEGIN
8   --open the cursor for the object ids we want to purge.
9   --we will use these ids to delete child records from other tables
10     FOR x IN (SELECT /*+ INDEX (OBJECTS DELETED_OBJECT_IDX) */ object_id
11               FROM objects
12               WHERE deleted_date < date_in) LOOP
14        IF v_count = 0 THEN
15           dbms_output.put_line ('Starting to delete....');
16        END IF;
18        --delete all children
19        DELETE FROM armor nologging WHERE object_id = x.object_id;
21        DELETE FROM battlefield_marker_objects nologging WHERE object_id = x.object_id;
22        DELETE FROM battlefield_participants nologging WHERE region_object_id = x.object_id;
23        DELETE FROM battlefield_participants nologging WHERE character_object_id = x.object_id ;
24        DELETE FROM biographies nologging WHERE object_id = x.object_id ;
25        DELETE FROM building_objects nologging WHERE object_id = x.object_id ;
26        DELETE FROM cell_objects nologging WHERE object_id = x.object_id ;
27        DELETE FROM creature_objects nologging WHERE object_id = x.object_id ;
28        DELETE FROM experience_points nologging WHERE object_id = x.object_id ;
29        DELETE FROM factory_objects nologging WHERE object_id = x.object_id ;
30        DELETE FROM guild_objects nologging WHERE object_id = x.object_id ;
31        DELETE FROM harvester_installation_objects nologging WHERE object_id = x.object_id ;
32        DELETE FROM installation_objects nologging WHERE object_id = x.object_id ;
33        DELETE FROM intangible_objects nologging WHERE object_id = x.object_id ;
34        DELETE FROM location_lists nologging WHERE object_id = x.object_id ;
35        DELETE FROM manf_schematic_attributes nologging WHERE object_id = x.object_id ;
36        DELETE FROM manf_schematic_objects nologging WHERE object_id = x.object_id ;
37        DELETE FROM manufacture_inst_objects nologging WHERE object_id = x.object_id ;
38        DELETE FROM mission_objects nologging WHERE object_id = x.object_id ;
40        DELETE FROM object_variables nologging WHERE object_id = x.object_id ;
41        DELETE FROM planet_objects nologging WHERE object_id = x.object_id ;
42        DELETE FROM player_objects nologging WHERE object_id = x.object_id ;
43        DELETE FROM property_lists nologging WHERE object_id = x.object_id ;
44        DELETE FROM resource_container_objects nologging WHERE object_id = x.object_id ;
45        DELETE FROM scripts nologging WHERE object_id = x.object_id ;
46        DELETE FROM static_objects nologging WHERE object_id = x.object_id ;
47        DELETE FROM tangible_objects nologging WHERE object_id = x.object_id ;
48        DELETE FROM token_objects nologging WHERE object_id = x.object_id ;
49        DELETE FROM universe_objects nologging WHERE object_id = x.object_id ;
50        DELETE FROM vehicle_objects nologging WHERE object_id = x.object_id ;
51        DELETE FROM waypoints nologging WHERE object_id = x.object_id ;
52        DELETE FROM weapon_objects nologging WHERE object_id = x.object_id ;
53        --delete messages target(object_id)
54        DELETE FROM messages nologging WHERE target = x.object_id ;
56        v_count := v_count + 1;
58        COMMIT;
60     END LOOP;
62     --delete parent
63     DELETE /*+ INDEX (OBJECTS DELETED_OBJECT_IDX) */ FROM objects
64     nologging WHERE deleted_date < date_in;
66     dbms_output.put_line (v_count||': iterations');
68     COMMIT;
69     RETURN 0;
71     EXCEPTION
72       WHEN OTHERS THEN
73       ROLLBACK;
74       IF v_count = 0 THEN
75         dbms_output.put_line ('never deleted');
76       END IF;
77       dbms_output.put_line (v_count||': iterations');
78       RETURN SQLCODE;
79   END Purge_objects;
80   --
81   --
82   --
83   FUNCTION time_purge
84     (date_in          IN VARCHAR2)
85   RETURN INTEGER IS
86     v_retval NUMBER := 0;
87     v_date VARCHAR2(20) := date_in;
88     v_time NUMBER := 1;
89   BEGIN
91     FOR i IN 1..24 LOOP
92       dbms_output.put_line(to_char(to_date(v_date, 'dd-mon-yy hh24:mi:ss') + v_time/24, 'DD-MON-YY hh24:mi:ss'));
93       v_retval := purge_objects(to_date(v_date, 'dd-mon-yy hh24:mi:ss') + v_time/24);
94       EXIT WHEN v_retval <> 0;
96       IF v_time = 23 THEN
97        v_time := v_time + (59/60);
98       ELSE
99         v_time := v_time + 1;
100       END IF;
101     END LOOP;
103     RETURN 0;
105     EXCEPTION
106       WHEN OTHERS THEN
107       ROLLBACK;
108       dbms_output.put_line('Purge return values: '||v_retval);
109       dbms_output.put_line('Time it failed at: '||v_time);
110       RETURN SQLCODE;
111   END time_purge;
113 end purge_methods;