Files
src-1.2/game/server/database/updates/167.sql
T
2014-01-17 07:03:16 -07:00

205 lines
6.1 KiB
SQL

create or replace view object_variables_view as
select v.object_id, n.name, v.type, v.value, -1 packed
from object_variables v, object_variable_names n
where v.name_id = n.id
and v.detached = 0
union all
select o.object_id, o.objvar_0_name, o.objvar_0_type, o.objvar_0_value, 0
from objects o
where o.objvar_0_type >= 0
union all
select o.object_id, o.objvar_1_name, o.objvar_1_type, o.objvar_1_value, 1
from objects o
where o.objvar_1_type >= 0
union all
select o.object_id, o.objvar_2_name, o.objvar_2_type, o.objvar_2_value, 2
from objects o
where o.objvar_2_type >= 0
union all
select o.object_id, o.objvar_3_name, o.objvar_3_type, o.objvar_3_value, 3
from objects o
where o.objvar_3_type >= 0
union all
select o.object_id, o.objvar_4_name, o.objvar_4_type, o.objvar_4_value, 4
from objects o
where o.objvar_4_type >= 0
union all
select o.object_id, o.objvar_5_name, o.objvar_5_type, o.objvar_5_value, 5
from objects o
where o.objvar_5_type >= 0
union all
select o.object_id, o.objvar_6_name, o.objvar_6_type, o.objvar_6_value, 6
from objects o
where o.objvar_6_type >= 0
union all
select o.object_id, o.objvar_7_name, o.objvar_7_type, o.objvar_7_value, 7
from objects o
where o.objvar_7_type >= 0
union all
select o.object_id, o.objvar_8_name, o.objvar_8_type, o.objvar_8_value, 8
from objects o
where o.objvar_8_type >= 0
union all
select o.object_id, o.objvar_9_name, o.objvar_9_type, o.objvar_9_value, 9
from objects o
where o.objvar_9_type >= 0
union all
select o.object_id, o.objvar_10_name, o.objvar_10_type, o.objvar_10_value, 10
from objects o
where o.objvar_10_type >= 0
union all
select o.object_id, o.objvar_11_name, o.objvar_11_type, o.objvar_11_value, 11
from objects o
where o.objvar_11_type >= 0
union all
select o.object_id, o.objvar_12_name, o.objvar_12_type, o.objvar_12_value, 12
from objects o
where o.objvar_12_type >= 0
union all
select o.object_id, o.objvar_13_name, o.objvar_13_type, o.objvar_13_value, 13
from objects o
where o.objvar_13_type >= 0
union all
select o.object_id, o.objvar_14_name, o.objvar_14_type, o.objvar_14_value, 14
from objects o
where o.objvar_14_type >= 0
union all
select o.object_id, o.objvar_15_name, o.objvar_15_type, o.objvar_15_value, 15
from objects o
where o.objvar_15_type >= 0
union all
select o.object_id, o.objvar_16_name, o.objvar_16_type, o.objvar_16_value, 16
from objects o
where o.objvar_16_type >= 0
union all
select o.object_id, o.objvar_17_name, o.objvar_17_type, o.objvar_17_value, 17
from objects o
where o.objvar_17_type >= 0
union all
select o.object_id, o.objvar_18_name, o.objvar_18_type, o.objvar_18_value, 18
from objects o
where o.objvar_18_type >= 0
union all
select o.object_id, o.objvar_19_name, o.objvar_19_type, o.objvar_19_value, 19
from objects o
where o.objvar_19_type >= 0;
alter table harvester_installation_objects add resource_type number(20);
update harvester_installation_objects
set resource_type = nvl((select resource_type from resource_pool_objects p where p.object_id = harvester_installation_objects.resource_pool),0);
alter table harvester_installation_objects drop column resource_pool;
create table resource_types
(
resource_id number(20), -- BIND_AS(DB::BindableNetworkId)
resource_name varchar2(100),
resource_class varchar2(100),
attributes varchar2(1024),
fractal_seeds varchar2(1024),
depleted_timestamp int,
constraint pk_resource_types primary key (resource_id) using index tablespace indexes
);
grant select on resource_types to public;
insert into resource_types (resource_id, resource_name, resource_class)
select t.object_id, t.resource_name, t.resource_class
from resource_type_objects t, objects o
where t.object_id = o.object_id
and o.deleted = 0;
commit;
analyze table resource_types estimate statistics;
create table temp_depleted_timestamps
as select resource_type, max(nvl(depleted_timestamp,0)) max_timestamp
from resource_pool_objects
where resource_type is not null
group by resource_type;
alter table temp_depleted_timestamps add constraint pk_tdt primary key (resource_type);
analyze table temp_depleted_timestamps estimate statistics;
update resource_types
set depleted_timestamp = nvl((select max_timestamp from temp_depleted_timestamps p where p.resource_type = resource_id),0);
drop table temp_depleted_timestamps;
-- build list of fractal seeds
declare
last_type number;
seed_string varchar2(1024);
begin
last_type := 0;
for x in (select planet, map_seed, resource_type from resource_pool_objects where planet <> 0 and resource_type <> 0 order by resource_type, planet)
loop
if (x.resource_type <> last_type and last_type <> 0) then
update resource_types
set fractal_seeds = seed_string
where resource_types.resource_id = last_type;
seed_string := NULL;
end if;
seed_string := seed_string || x.planet || ' ' || x.map_seed || ':';
last_type := x.resource_type;
end loop;
if (last_type <> 0) then
update resource_types
set fractal_seeds = seed_string
where resource_types.resource_id = last_type;
end if;
end;
/
commit;
-- copy resource attributes
declare
last_type number := 0;
attribute_string varchar2(1024);
begin
for x in (select v.object_id, substr(name,12) || ' ' || value || ':' value_string from object_variables_view v, resource_type_objects r where r.object_id = v.object_id and name like 'attributes.%' order by r.object_id, packed)
loop
if (x.object_id <> last_type and last_type <> 0) then
update resource_types
set attributes = attribute_string
where resource_types.resource_id = last_type;
attribute_string := NULL;
end if;
attribute_string := attribute_string || x.value_string;
last_type := x.object_id;
end loop;
if (last_type <> 0) then
update resource_types
set attributes = attribute_string
where resource_types.resource_id = last_type;
end if;
end;
/
commit;
-- delete objects
update objects
set deleted = 8, deleted_date = sysdate, load_with = null
where exists (select 1 from resource_pool_objects p where p.object_id = objects.object_id) and deleted = 0;
commit;
update objects
set deleted = 8, deleted_date = sysdate, load_with = null
where exists (select 1 from resource_type_objects t where t.object_id = objects.object_id) and deleted = 0;
commit;
update version_number set version_number=167, min_version_number=167;