Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide whitespace changes
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Text styles
Change appearance
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
Untitled diff
Created
8 years ago
Diff never expires
Clear
Export
Share
Explain
76 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
120 lines
Copy
281 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
332 lines
Copy
-- Function: qwat_od.ft_element_installation_update()
-- Function: qwat_od.ft_element_installation_update()
-- DROP FUNCTION qwat_od.ft_element_installation_update();
-- DROP FUNCTION qwat_od.ft_element_installation_update();
CREATE OR REPLACE FUNCTION qwat_od.ft_element_installation_update()
CREATE OR REPLACE FUNCTION qwat_od.ft_element_installation_update()
RETURNS trigger AS
RETURNS trigger AS
$BODY$
$BODY$
BEGIN
BEGIN
Copy
Copied
Copy
Copied
UPDATE qwat_od.
vw_
node
_element
SET
-- altitude is prioritary on Z value of the geometry (if both changed, only altitude is taken into account)
IF NEW.altitude IS NULL THEN
NEW.altitude := NULLIF( ST_Z(NEW.geometry), 0.0); -- 0 is the NULL value
END IF;
-- TODO handle going to NULL on update
IF NEW.altitude IS NULL AND ST_Z(NEW.geometry) <> 0.0 OR
NEW.altitude IS NOT NULL AND ( ST_Z(NEW.geometry) IS NULL OR ST_Z(NEW.geometry) <> NEW.altitude ) THEN
NEW.geometry := ST_SetSRID( ST_MakePoint( ST_X(NEW.geometry), ST_Y(NEW.geometry), COALESCE(NEW.altitude,0) ), ST_SRID(NEW.geometry) );
END IF;
UPDATE qwat_od.
node
SET
fk_district = NEW.fk_district,
fk_district = NEW.fk_district,
fk_pressurezone = NEW.fk_pressurezone,
fk_pressurezone = NEW.fk_pressurezone,
fk_printmap = NEW.fk_printmap,
fk_printmap = NEW.fk_printmap,
_printmaps = NEW._printmaps,
_printmaps = NEW._printmaps,
_geometry_alt1_used = NEW._geometry_alt1_used,
_geometry_alt1_used = NEW._geometry_alt1_used,
_geometry_alt2_used = NEW._geometry_alt2_used,
_geometry_alt2_used = NEW._geometry_alt2_used,
_pipe_node_type = NEW._pipe_node_type,
_pipe_node_type = NEW._pipe_node_type,
_pipe_orientation = NEW._pipe_orientation,
_pipe_orientation = NEW._pipe_orientation,
_pipe_schema_visible = NEW._pipe_schema_visible,
_pipe_schema_visible = NEW._pipe_schema_visible,
geometry = NEW.geometry,
geometry = NEW.geometry,
geometry_alt1 = NEW.geometry_alt1,
geometry_alt1 = NEW.geometry_alt1,
geometry_alt2 = NEW.geometry_alt2,
geometry_alt2 = NEW.geometry_alt2,
update_geometry_alt1 = NEW.update_geometry_alt1,
update_geometry_alt1 = NEW.update_geometry_alt1,
Copy
Copied
Copy
Copied
update_geometry_alt2 = NEW.update_geometry_alt2
,
update_geometry_alt2 = NEW.update_geometry_alt2
WHERE id = OLD.id;
-- altitude is prioritary on Z value of the geometry (if both changed, only altitude is taken into account)
IF NEW.altitude IS NULL THEN
NEW.altitude := NULLIF( ST_Z(NEW.geometry), 0.0); -- 0 is the NULL value
END IF;
-- TODO handle going to NULL on update
IF NEW.altitude IS NULL AND ST_Z(NEW.geometry) <> 0.0 OR
NEW.altitude IS NOT NULL AND ( ST_Z(NEW.geometry) IS NULL OR ST_Z(NEW.geometry) <> NEW.altitude ) THEN
NEW.geometry := ST_SetSRID( ST_MakePoint( ST_X(NEW.geometry), ST_Y(NEW.geometry), COALESCE(NEW.altitude,0) ), ST_SRID(NEW.geometry) );
END IF;
UPDATE qwat_od.network_element SET
identification = NEW.identification,
identification = NEW.identification,
fk_distributor = NEW.fk_distributor,
fk_distributor = NEW.fk_distributor,
fk_status = NEW.fk_status,
fk_status = NEW.fk_status,
fk_folder = NEW.fk_folder,
fk_folder = NEW.fk_folder,
fk_locationtype = NEW.fk_locationtype,
fk_locationtype = NEW.fk_locationtype,
fk_precision = NEW.fk_precision,
fk_precision = NEW.fk_precision,
fk_precisionalti = NEW.fk_precisionalti,
fk_precisionalti = NEW.fk_precisionalti,
fk_object_reference = NEW.fk_object_reference,
fk_object_reference = NEW.fk_object_reference,
altitude = NEW.altitude,
altitude = NEW.altitude,
year = NEW.year,
year = NEW.year,
year_end = NEW.year_end,
year_end = NEW.year_end,
orientation = NEW.orientation,
orientation = NEW.orientation,
remark = NEW.remark,
remark = NEW.remark,
Copy
Copied
Copy
Copied
schema_force_visible = NEW.schema_force_visible,
label_1_visible = NEW.label_1_visible,
label_1_visible = NEW.label_1_visible,
label_1_x = NEW.label_1_x,
label_1_x = NEW.label_1_x,
label_1_y = NEW.label_1_y,
label_1_y = NEW.label_1_y,
label_1_rotation = NEW.label_1_rotation,
label_1_rotation = NEW.label_1_rotation,
label_1_text = NEW.label_1_text,
label_1_text = NEW.label_1_text,
label_2_visible = NEW.label_2_visible,
label_2_visible = NEW.label_2_visible,
label_2_x = NEW.label_2_x,
label_2_x = NEW.label_2_x,
label_2_y = NEW.label_2_y,
label_2_y = NEW.label_2_y,
label_2_rotation = NEW.label_2_rotation,
label_2_rotation = NEW.label_2_rotation,
label_2_text = NEW.label_2_text
label_2_text = NEW.label_2_text
WHERE id = OLD.id;
WHERE id = OLD.id;
Copy
Copied
Copy
Copied
UPDATE qwat_od.
vw_qwat_
installation SET
installation_type = NEW.installation_type,
UPDATE qwat_od.
installation SET
name = NEW.name,
name = NEW.name,
fk_parent = NEW.fk_parent,
fk_parent = NEW.fk_parent,
fk_remote = NEW.fk_remote,
fk_remote = NEW.fk_remote,
fk_watertype = NEW.fk_watertype,
fk_watertype = NEW.fk_watertype,
parcel = NEW.parcel,
parcel = NEW.parcel,
eca = NEW.eca,
eca = NEW.eca,
open_water_surface = NEW.open_water_surface,
open_water_surface = NEW.open_water_surface,
Copy
Copied
Copy
Copied
geometry_polygon = NEW.geometry_polygon
,
geometry_polygon = NEW.geometry_polygon
fk_source_type = NEW.fk_source_type,
WHERE id = OLD.id;
fk_source_quality = NEW.fk_source_quality,
-- detect if type has changed
flow_lowest = NEW.flow_lowest,
IF OLD.installation_type <> NEW.installation_type::qwat_od.installation_type THEN
flow_average = NEW.flow_average,
-- delete old sub type
flow_concession = NEW.flow_concession,
CASE
contract_end = NEW.contract_end,
WHEN OLD.installation_type::qwat_od.installation_type = 'pressurecontrol'::qwat_od.installation_type
gathering_chamber = NEW.gathering_chamber,
THEN DELETE FROM qwat_od.pressurecontrol WHERE id = OLD.id;
fk_pump_type = NEW.fk_pump_type,
WHEN OLD.installation_type::qwat_od.installation_type = 'source'::qwat_od.installation_type
fk_pipe_in = NEW.fk_pipe_in,
THEN DELETE FROM qwat_od.source WHERE id = OLD.id;
fk_pipe_out = NEW.fk_pipe_out,
WHEN OLD.installation_type::qwat_od.installation_type = 'tank'::qwat_od.installation_type
fk_pump_operating = NEW.fk_pump_operating,
THEN DELETE FROM qwat_od.tank WHERE id = OLD.id;
no_pumps = NEW.no_pumps,
WHEN OLD.installation_type::qwat_od.installation_type = 'chamber'::qwat_od.installation_type
rejected_flow = NEW.rejected_flow,
THEN DELETE FROM qwat_od.chamber WHERE id = OLD.id;
manometric_height = NEW.manometric_height,
WHEN OLD.installation_type::qwat_od.installation_type = 'treatment'::qwat_od.installation_type
fk_overflow = NEW.fk_overflow,
THEN DELETE FROM qwat_od.treatment WHERE id = OLD.id;
fk_tank_firestorage = NEW.fk_tank_firestorage,
WHEN OLD.installation_type::qwat_od.installation_type = 'pump'::qwat_od.installation_type
storage_total = NEW.storage_total,
THEN DELETE FROM qwat_od.pump WHERE id = OLD.id;
storage_supply = NEW.storage_supply,
END CASE;
storage_fire = NEW.storage_fire,
-- insert new sub type
altitude_overflow = NEW.altitude_overflow,
CASE
altitude_apron = NEW.
altitude_apron
,
WHEN NEW.installation_type::qwat_od.installation_type = 'pressurecontrol'::qwat_od.installation_type
height_max = NEW.
height_max
,
THEN INSERT INTO qwat_od.pressurecontrol (
fire_valve = NEW.
fire_valve
,
id
fire_remote = NEW.
fire_remote
,
, fk_pressurecontrol_type
_litrepercm = NEW.
_litrepercm
,
) VALUES (
cistern1_fk_type = NEW.
cistern1_fk_type
,
OLD.id
cistern1_dimension_1
= NEW.
cistern1_dimension_
1,
, NEW.fk_pressurecontrol_type
cistern1_
dimension_2 = NEW.cistern1_dimension_2,
);
cistern1_storage = NEW.cistern1_storage,
WHEN NEW.installation_type::qwat_od.installation_type = 'source'::qwat_od.installation_type
_cistern1_litrepercm = NEW._cistern1_litrepercm,
THEN INSERT INTO qwat_od.source (
cistern2_fk_type = NEW.cistern2_fk_type,
id
cistern2_dimension_1 = NEW.cistern2_dimension_1,
, fk_source_type
cistern2_dimension_2 =
NEW.cistern2_dimension_
2,
, fk_source_quality
cistern2_storage = NEW.cistern2_storage,
, flow_lowest
_cistern2_litrepercm = NEW._cistern2_litrepercm,
, flow_average
sanitization_uv = NEW.sanitization_uv,
, flow_concession
sanitization_chlorine_liquid
= NEW.
sanitization_chlorine_
liquid,
, contract_end
sanitization_
chlorine_gazeous =
NEW.sanitization_chlorine_
gazeous,
, gathering_chamber
sanitization_
ozone =
NEW.sanitization_ozone
,
) VALUES (
filtration_membrane =
NEW.filtration_membrane
,
OLD.id
filtration_sandorgravel =
NEW.filtration_sandorgravel
,
, NEW.fk_source_type
flocculation =
NEW.flocculation
,
, NEW.fk_source_quality
activatedcharcoal =
NEW.activatedcharcoal
,
, NEW.flow_lowest
settling = NEW.settling,
, NEW.flow_average
treatment_capacity = NEW.treatment_capacity,
, NEW.flow_concession
networkseparation = NEW.networkseparation,
, NEW.contract_end
flow_meter = NEW.flow_meter,
, NEW.gathering_chamber
water_meter = NEW.water_meter,
);
manometer = NEW.manometer,
WHEN NEW.installation_type::qwat_od.installation_type = 'tank'::qwat_od.installation_type
depth = NEW.depth,
THEN INSERT INTO qwat_od.tank (
no_valves = NEW.no_valves,
id
, fk_overflow
, fk_tank_firestorage
, storage_total
, storage_supply
, storage_fire
, altitude_overflow
,
altitude_apron
,
height_max
,
fire_valve
,
fire_remote
,
_litrepercm
,
cistern1_fk_type
,
cistern1_dimension_1
,
cistern1_dimension_
2
, cistern1_storage
, _
cistern1_
litrepercm
, cistern2_fk_type
, cistern2_dimension_1
, cistern2_dimension_2
, cistern2_storage
, _cistern2_litrepercm
) VALUES (
OLD.id
, NEW.fk_overflow
, NEW.fk_tank_firestorage
, NEW.storage_total
, NEW.storage_supply
, NEW.storage_fire
, NEW.altitude_overflow
, NEW.altitude_apron
, NEW.height_max
, NEW.fire_valve
, NEW.fire_remote
, NEW._litrepercm
, NEW.cistern1_fk_type
, NEW.cistern1_dimension_1
, NEW.cistern1_dimension_2
, NEW.cistern1_storage
, NEW._cistern1_litrepercm
, NEW.cistern2_fk_type
,
NEW.cistern2_dimension_
1
, NEW.cistern2_dimension_2
, NEW.cistern2_storage
, NEW._cistern2_litrepercm
);
WHEN NEW.installation_type::qwat_od.installation_type = 'chamber'::qwat_od.installation_type
THEN INSERT INTO qwat_od.chamber (
id
, networkseparation
, flow_meter
, water_meter
, manometer
, depth
, no_valves
) VALUES (
OLD.id
, NEW.networkseparation
, NEW.flow_meter
, NEW.water_meter
, NEW.manometer
, NEW.depth
, NEW.no_valves
);
WHEN NEW.installation_type::qwat_od.installation_type = 'treatment'::qwat_od.installation_type
THEN INSERT INTO qwat_od.treatment (
id
, sanitization_uv
,
sanitization_chlorine_liquid
,
sanitization_chlorine_
gazeous
,
sanitization_
ozone
, filtration_membrane
, filtration_sandorgravel
, flocculation
, activatedcharcoal
, settling
, treatment_capacity
) VALUES (
OLD.id
, NEW.sanitization_uv
,
NEW.sanitization_chlorine_
liquid
, NEW.
sanitization_
chlorine_gazeous
,
NEW.sanitization_ozone
,
NEW.filtration_membrane
,
NEW.filtration_sandorgravel
,
NEW.flocculation
,
NEW.activatedcharcoal
, NEW.settling
, NEW.treatment_capacity
);
WHEN NEW.installation_type::qwat_od.installation_type = 'pump'::qwat_od.installation_type
THEN INSERT INTO qwat_od.pump (
id
, fk_pump_type
, fk_pipe_in
, fk_pipe_out
, fk_pump_operating
, no_pumps
, rejected_flow
, manometric_height
) VALUES (
OLD.id
, NEW.fk_pump_type
, NEW.fk_pipe_in
, NEW.fk_pipe_out
, NEW.fk_pump_operating
, NEW.no_pumps
, NEW.rejected_flow
, NEW.manometric_height
);
END CASE;
-- return now as child has been updated
RETURN NEW;
END IF;
CASE
WHEN NEW.installation_type::qwat_od.installation_type = 'pressurecontrol'::qwat_od.installation_type
THEN UPDATE qwat_od.pressurecontrol SET
fk_pressurecontrol_type = NEW.fk_pressurecontrol_type
fk_pressurecontrol_type = NEW.fk_pressurecontrol_type
WHERE id = OLD.id;
WHERE id = OLD.id;
Copy
Copied
Copy
Copied
WHEN NEW.installation_type::qwat_od.installation_type = 'source'::qwat_od.installation_type
THEN UPDATE qwat_od.source SET
fk_source_type = NEW.fk_source_type
, fk_source_quality = NEW.fk_source_quality
, flow_lowest = NEW.flow_lowest
, flow_average = NEW.flow_average
, flow_concession = NEW.flow_concession
, contract_end = NEW.contract_end
, gathering_chamber = NEW.gathering_chamber
WHERE id = OLD.id;
WHEN NEW.installation_type::qwat_od.installation_type = 'tank'::qwat_od.installation_type
THEN UPDATE qwat_od.tank SET
fk_overflow = NEW.fk_overflow
, fk_tank_firestorage = NEW.fk_tank_firestorage
, storage_total = NEW.storage_total
, storage_supply = NEW.storage_supply
, storage_fire = NEW.storage_fire
, altitude_overflow = NEW.altitude_overflow
, altitude_apron = NEW.altitude_apron
, height_max = NEW.height_max
, fire_valve = NEW.fire_valve
, fire_remote = NEW.fire_remote
, _litrepercm = NEW._litrepercm
, cistern1_fk_type = NEW.cistern1_fk_type
, cistern1_dimension_1 = NEW.cistern1_dimension_1
, cistern1_dimension_2 = NEW.cistern1_dimension_2
, cistern1_storage = NEW.cistern1_storage
, _cistern1_litrepercm = NEW._cistern1_litrepercm
, cistern2_fk_type = NEW.cistern2_fk_type
, cistern2_dimension_1 = NEW.cistern2_dimension_1
, cistern2_dimension_2 = NEW.cistern2_dimension_2
, cistern2_storage = NEW.cistern2_storage
, _cistern2_litrepercm = NEW._cistern2_litrepercm
WHERE id = OLD.id;
WHEN NEW.installation_type::qwat_od.installation_type = 'chamber'::qwat_od.installation_type
THEN UPDATE qwat_od.chamber SET
networkseparation = NEW.networkseparation
, flow_meter = NEW.flow_meter
, water_meter = NEW.water_meter
, manometer = NEW.manometer
, depth = NEW.depth
, no_valves = NEW.no_valves
WHERE id = OLD.id;
WHEN NEW.installation_type::qwat_od.installation_type = 'treatment'::qwat_od.installation_type
THEN UPDATE qwat_od.treatment SET
sanitization_uv = NEW.sanitization_uv
, sanitization_chlorine_liquid = NEW.sanitization_chlorine_liquid
, sanitization_chlorine_gazeous = NEW.sanitization_chlorine_gazeous
, sanitization_ozone = NEW.sanitization_ozone
, filtration_membrane = NEW.filtration_membrane
, filtration_sandorgravel = NEW.filtration_sandorgravel
, flocculation = NEW.flocculation
, activatedcharcoal = NEW.activatedcharcoal
, settling = NEW.settling
, treatment_capacity = NEW.treatment_capacity
WHERE id = OLD.id;
WHEN NEW.installation_type::qwat_od.installation_type = 'pump'::qwat_od.installation_type
THEN UPDATE qwat_od.pump SET
fk_pump_type = NEW.fk_pump_type
, fk_pipe_in = NEW.fk_pipe_in
, fk_pipe_out = NEW.fk_pipe_out
, fk_pump_operating = NEW.fk_pump_operating
, no_pumps = NEW.no_pumps
, rejected_flow = NEW.rejected_flow
, manometric_height = NEW.manometric_height
WHERE id = OLD.id;
END CASE;
RETURN NEW;
RETURN NEW;
END;
END;
$BODY$
$BODY$
LANGUAGE plpgsql VOLATILE
LANGUAGE plpgsql VOLATILE
COST 100;
COST 100;
ALTER FUNCTION qwat_od.ft_element_installation_update()
ALTER FUNCTION qwat_od.ft_element_installation_update()
OWNER TO postgres;
OWNER TO postgres;
Saved diffs
Original text
Open file
-- Function: qwat_od.ft_element_installation_update() -- DROP FUNCTION qwat_od.ft_element_installation_update(); CREATE OR REPLACE FUNCTION qwat_od.ft_element_installation_update() RETURNS trigger AS $BODY$ BEGIN UPDATE qwat_od.vw_node_element SET fk_district = NEW.fk_district, fk_pressurezone = NEW.fk_pressurezone, fk_printmap = NEW.fk_printmap, _printmaps = NEW._printmaps, _geometry_alt1_used = NEW._geometry_alt1_used, _geometry_alt2_used = NEW._geometry_alt2_used, _pipe_node_type = NEW._pipe_node_type, _pipe_orientation = NEW._pipe_orientation, _pipe_schema_visible = NEW._pipe_schema_visible, geometry = NEW.geometry, geometry_alt1 = NEW.geometry_alt1, geometry_alt2 = NEW.geometry_alt2, update_geometry_alt1 = NEW.update_geometry_alt1, update_geometry_alt2 = NEW.update_geometry_alt2, identification = NEW.identification, fk_distributor = NEW.fk_distributor, fk_status = NEW.fk_status, fk_folder = NEW.fk_folder, fk_locationtype = NEW.fk_locationtype, fk_precision = NEW.fk_precision, fk_precisionalti = NEW.fk_precisionalti, fk_object_reference = NEW.fk_object_reference, altitude = NEW.altitude, year = NEW.year, year_end = NEW.year_end, orientation = NEW.orientation, remark = NEW.remark, schema_force_visible = NEW.schema_force_visible, label_1_visible = NEW.label_1_visible, label_1_x = NEW.label_1_x, label_1_y = NEW.label_1_y, label_1_rotation = NEW.label_1_rotation, label_1_text = NEW.label_1_text, label_2_visible = NEW.label_2_visible, label_2_x = NEW.label_2_x, label_2_y = NEW.label_2_y, label_2_rotation = NEW.label_2_rotation, label_2_text = NEW.label_2_text WHERE id = OLD.id; UPDATE qwat_od.vw_qwat_installation SET installation_type = NEW.installation_type, name = NEW.name, fk_parent = NEW.fk_parent, fk_remote = NEW.fk_remote, fk_watertype = NEW.fk_watertype, parcel = NEW.parcel, eca = NEW.eca, open_water_surface = NEW.open_water_surface, geometry_polygon = NEW.geometry_polygon, fk_source_type = NEW.fk_source_type, fk_source_quality = NEW.fk_source_quality, flow_lowest = NEW.flow_lowest, flow_average = NEW.flow_average, flow_concession = NEW.flow_concession, contract_end = NEW.contract_end, gathering_chamber = NEW.gathering_chamber, fk_pump_type = NEW.fk_pump_type, fk_pipe_in = NEW.fk_pipe_in, fk_pipe_out = NEW.fk_pipe_out, fk_pump_operating = NEW.fk_pump_operating, no_pumps = NEW.no_pumps, rejected_flow = NEW.rejected_flow, manometric_height = NEW.manometric_height, fk_overflow = NEW.fk_overflow, fk_tank_firestorage = NEW.fk_tank_firestorage, storage_total = NEW.storage_total, storage_supply = NEW.storage_supply, storage_fire = NEW.storage_fire, altitude_overflow = NEW.altitude_overflow, altitude_apron = NEW.altitude_apron, height_max = NEW.height_max, fire_valve = NEW.fire_valve, fire_remote = NEW.fire_remote, _litrepercm = NEW._litrepercm, cistern1_fk_type = NEW.cistern1_fk_type, cistern1_dimension_1 = NEW.cistern1_dimension_1, cistern1_dimension_2 = NEW.cistern1_dimension_2, cistern1_storage = NEW.cistern1_storage, _cistern1_litrepercm = NEW._cistern1_litrepercm, cistern2_fk_type = NEW.cistern2_fk_type, cistern2_dimension_1 = NEW.cistern2_dimension_1, cistern2_dimension_2 = NEW.cistern2_dimension_2, cistern2_storage = NEW.cistern2_storage, _cistern2_litrepercm = NEW._cistern2_litrepercm, sanitization_uv = NEW.sanitization_uv, sanitization_chlorine_liquid = NEW.sanitization_chlorine_liquid, sanitization_chlorine_gazeous = NEW.sanitization_chlorine_gazeous, sanitization_ozone = NEW.sanitization_ozone, filtration_membrane = NEW.filtration_membrane, filtration_sandorgravel = NEW.filtration_sandorgravel, flocculation = NEW.flocculation, activatedcharcoal = NEW.activatedcharcoal, settling = NEW.settling, treatment_capacity = NEW.treatment_capacity, networkseparation = NEW.networkseparation, flow_meter = NEW.flow_meter, water_meter = NEW.water_meter, manometer = NEW.manometer, depth = NEW.depth, no_valves = NEW.no_valves, fk_pressurecontrol_type = NEW.fk_pressurecontrol_type WHERE id = OLD.id; RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION qwat_od.ft_element_installation_update() OWNER TO postgres;
Changed text
Open file
-- Function: qwat_od.ft_element_installation_update() -- DROP FUNCTION qwat_od.ft_element_installation_update(); CREATE OR REPLACE FUNCTION qwat_od.ft_element_installation_update() RETURNS trigger AS $BODY$ BEGIN -- altitude is prioritary on Z value of the geometry (if both changed, only altitude is taken into account) IF NEW.altitude IS NULL THEN NEW.altitude := NULLIF( ST_Z(NEW.geometry), 0.0); -- 0 is the NULL value END IF; -- TODO handle going to NULL on update IF NEW.altitude IS NULL AND ST_Z(NEW.geometry) <> 0.0 OR NEW.altitude IS NOT NULL AND ( ST_Z(NEW.geometry) IS NULL OR ST_Z(NEW.geometry) <> NEW.altitude ) THEN NEW.geometry := ST_SetSRID( ST_MakePoint( ST_X(NEW.geometry), ST_Y(NEW.geometry), COALESCE(NEW.altitude,0) ), ST_SRID(NEW.geometry) ); END IF; UPDATE qwat_od.node SET fk_district = NEW.fk_district, fk_pressurezone = NEW.fk_pressurezone, fk_printmap = NEW.fk_printmap, _printmaps = NEW._printmaps, _geometry_alt1_used = NEW._geometry_alt1_used, _geometry_alt2_used = NEW._geometry_alt2_used, _pipe_node_type = NEW._pipe_node_type, _pipe_orientation = NEW._pipe_orientation, _pipe_schema_visible = NEW._pipe_schema_visible, geometry = NEW.geometry, geometry_alt1 = NEW.geometry_alt1, geometry_alt2 = NEW.geometry_alt2, update_geometry_alt1 = NEW.update_geometry_alt1, update_geometry_alt2 = NEW.update_geometry_alt2 WHERE id = OLD.id; -- altitude is prioritary on Z value of the geometry (if both changed, only altitude is taken into account) IF NEW.altitude IS NULL THEN NEW.altitude := NULLIF( ST_Z(NEW.geometry), 0.0); -- 0 is the NULL value END IF; -- TODO handle going to NULL on update IF NEW.altitude IS NULL AND ST_Z(NEW.geometry) <> 0.0 OR NEW.altitude IS NOT NULL AND ( ST_Z(NEW.geometry) IS NULL OR ST_Z(NEW.geometry) <> NEW.altitude ) THEN NEW.geometry := ST_SetSRID( ST_MakePoint( ST_X(NEW.geometry), ST_Y(NEW.geometry), COALESCE(NEW.altitude,0) ), ST_SRID(NEW.geometry) ); END IF; UPDATE qwat_od.network_element SET identification = NEW.identification, fk_distributor = NEW.fk_distributor, fk_status = NEW.fk_status, fk_folder = NEW.fk_folder, fk_locationtype = NEW.fk_locationtype, fk_precision = NEW.fk_precision, fk_precisionalti = NEW.fk_precisionalti, fk_object_reference = NEW.fk_object_reference, altitude = NEW.altitude, year = NEW.year, year_end = NEW.year_end, orientation = NEW.orientation, remark = NEW.remark, label_1_visible = NEW.label_1_visible, label_1_x = NEW.label_1_x, label_1_y = NEW.label_1_y, label_1_rotation = NEW.label_1_rotation, label_1_text = NEW.label_1_text, label_2_visible = NEW.label_2_visible, label_2_x = NEW.label_2_x, label_2_y = NEW.label_2_y, label_2_rotation = NEW.label_2_rotation, label_2_text = NEW.label_2_text WHERE id = OLD.id; UPDATE qwat_od.installation SET name = NEW.name, fk_parent = NEW.fk_parent, fk_remote = NEW.fk_remote, fk_watertype = NEW.fk_watertype, parcel = NEW.parcel, eca = NEW.eca, open_water_surface = NEW.open_water_surface, geometry_polygon = NEW.geometry_polygon WHERE id = OLD.id; -- detect if type has changed IF OLD.installation_type <> NEW.installation_type::qwat_od.installation_type THEN -- delete old sub type CASE WHEN OLD.installation_type::qwat_od.installation_type = 'pressurecontrol'::qwat_od.installation_type THEN DELETE FROM qwat_od.pressurecontrol WHERE id = OLD.id; WHEN OLD.installation_type::qwat_od.installation_type = 'source'::qwat_od.installation_type THEN DELETE FROM qwat_od.source WHERE id = OLD.id; WHEN OLD.installation_type::qwat_od.installation_type = 'tank'::qwat_od.installation_type THEN DELETE FROM qwat_od.tank WHERE id = OLD.id; WHEN OLD.installation_type::qwat_od.installation_type = 'chamber'::qwat_od.installation_type THEN DELETE FROM qwat_od.chamber WHERE id = OLD.id; WHEN OLD.installation_type::qwat_od.installation_type = 'treatment'::qwat_od.installation_type THEN DELETE FROM qwat_od.treatment WHERE id = OLD.id; WHEN OLD.installation_type::qwat_od.installation_type = 'pump'::qwat_od.installation_type THEN DELETE FROM qwat_od.pump WHERE id = OLD.id; END CASE; -- insert new sub type CASE WHEN NEW.installation_type::qwat_od.installation_type = 'pressurecontrol'::qwat_od.installation_type THEN INSERT INTO qwat_od.pressurecontrol ( id , fk_pressurecontrol_type ) VALUES ( OLD.id , NEW.fk_pressurecontrol_type ); WHEN NEW.installation_type::qwat_od.installation_type = 'source'::qwat_od.installation_type THEN INSERT INTO qwat_od.source ( id , fk_source_type , fk_source_quality , flow_lowest , flow_average , flow_concession , contract_end , gathering_chamber ) VALUES ( OLD.id , NEW.fk_source_type , NEW.fk_source_quality , NEW.flow_lowest , NEW.flow_average , NEW.flow_concession , NEW.contract_end , NEW.gathering_chamber ); WHEN NEW.installation_type::qwat_od.installation_type = 'tank'::qwat_od.installation_type THEN INSERT INTO qwat_od.tank ( id , fk_overflow , fk_tank_firestorage , storage_total , storage_supply , storage_fire , altitude_overflow , altitude_apron , height_max , fire_valve , fire_remote , _litrepercm , cistern1_fk_type , cistern1_dimension_1 , cistern1_dimension_2 , cistern1_storage , _cistern1_litrepercm , cistern2_fk_type , cistern2_dimension_1 , cistern2_dimension_2 , cistern2_storage , _cistern2_litrepercm ) VALUES ( OLD.id , NEW.fk_overflow , NEW.fk_tank_firestorage , NEW.storage_total , NEW.storage_supply , NEW.storage_fire , NEW.altitude_overflow , NEW.altitude_apron , NEW.height_max , NEW.fire_valve , NEW.fire_remote , NEW._litrepercm , NEW.cistern1_fk_type , NEW.cistern1_dimension_1 , NEW.cistern1_dimension_2 , NEW.cistern1_storage , NEW._cistern1_litrepercm , NEW.cistern2_fk_type , NEW.cistern2_dimension_1 , NEW.cistern2_dimension_2 , NEW.cistern2_storage , NEW._cistern2_litrepercm ); WHEN NEW.installation_type::qwat_od.installation_type = 'chamber'::qwat_od.installation_type THEN INSERT INTO qwat_od.chamber ( id , networkseparation , flow_meter , water_meter , manometer , depth , no_valves ) VALUES ( OLD.id , NEW.networkseparation , NEW.flow_meter , NEW.water_meter , NEW.manometer , NEW.depth , NEW.no_valves ); WHEN NEW.installation_type::qwat_od.installation_type = 'treatment'::qwat_od.installation_type THEN INSERT INTO qwat_od.treatment ( id , sanitization_uv , sanitization_chlorine_liquid , sanitization_chlorine_gazeous , sanitization_ozone , filtration_membrane , filtration_sandorgravel , flocculation , activatedcharcoal , settling , treatment_capacity ) VALUES ( OLD.id , NEW.sanitization_uv , NEW.sanitization_chlorine_liquid , NEW.sanitization_chlorine_gazeous , NEW.sanitization_ozone , NEW.filtration_membrane , NEW.filtration_sandorgravel , NEW.flocculation , NEW.activatedcharcoal , NEW.settling , NEW.treatment_capacity ); WHEN NEW.installation_type::qwat_od.installation_type = 'pump'::qwat_od.installation_type THEN INSERT INTO qwat_od.pump ( id , fk_pump_type , fk_pipe_in , fk_pipe_out , fk_pump_operating , no_pumps , rejected_flow , manometric_height ) VALUES ( OLD.id , NEW.fk_pump_type , NEW.fk_pipe_in , NEW.fk_pipe_out , NEW.fk_pump_operating , NEW.no_pumps , NEW.rejected_flow , NEW.manometric_height ); END CASE; -- return now as child has been updated RETURN NEW; END IF; CASE WHEN NEW.installation_type::qwat_od.installation_type = 'pressurecontrol'::qwat_od.installation_type THEN UPDATE qwat_od.pressurecontrol SET fk_pressurecontrol_type = NEW.fk_pressurecontrol_type WHERE id = OLD.id; WHEN NEW.installation_type::qwat_od.installation_type = 'source'::qwat_od.installation_type THEN UPDATE qwat_od.source SET fk_source_type = NEW.fk_source_type , fk_source_quality = NEW.fk_source_quality , flow_lowest = NEW.flow_lowest , flow_average = NEW.flow_average , flow_concession = NEW.flow_concession , contract_end = NEW.contract_end , gathering_chamber = NEW.gathering_chamber WHERE id = OLD.id; WHEN NEW.installation_type::qwat_od.installation_type = 'tank'::qwat_od.installation_type THEN UPDATE qwat_od.tank SET fk_overflow = NEW.fk_overflow , fk_tank_firestorage = NEW.fk_tank_firestorage , storage_total = NEW.storage_total , storage_supply = NEW.storage_supply , storage_fire = NEW.storage_fire , altitude_overflow = NEW.altitude_overflow , altitude_apron = NEW.altitude_apron , height_max = NEW.height_max , fire_valve = NEW.fire_valve , fire_remote = NEW.fire_remote , _litrepercm = NEW._litrepercm , cistern1_fk_type = NEW.cistern1_fk_type , cistern1_dimension_1 = NEW.cistern1_dimension_1 , cistern1_dimension_2 = NEW.cistern1_dimension_2 , cistern1_storage = NEW.cistern1_storage , _cistern1_litrepercm = NEW._cistern1_litrepercm , cistern2_fk_type = NEW.cistern2_fk_type , cistern2_dimension_1 = NEW.cistern2_dimension_1 , cistern2_dimension_2 = NEW.cistern2_dimension_2 , cistern2_storage = NEW.cistern2_storage , _cistern2_litrepercm = NEW._cistern2_litrepercm WHERE id = OLD.id; WHEN NEW.installation_type::qwat_od.installation_type = 'chamber'::qwat_od.installation_type THEN UPDATE qwat_od.chamber SET networkseparation = NEW.networkseparation , flow_meter = NEW.flow_meter , water_meter = NEW.water_meter , manometer = NEW.manometer , depth = NEW.depth , no_valves = NEW.no_valves WHERE id = OLD.id; WHEN NEW.installation_type::qwat_od.installation_type = 'treatment'::qwat_od.installation_type THEN UPDATE qwat_od.treatment SET sanitization_uv = NEW.sanitization_uv , sanitization_chlorine_liquid = NEW.sanitization_chlorine_liquid , sanitization_chlorine_gazeous = NEW.sanitization_chlorine_gazeous , sanitization_ozone = NEW.sanitization_ozone , filtration_membrane = NEW.filtration_membrane , filtration_sandorgravel = NEW.filtration_sandorgravel , flocculation = NEW.flocculation , activatedcharcoal = NEW.activatedcharcoal , settling = NEW.settling , treatment_capacity = NEW.treatment_capacity WHERE id = OLD.id; WHEN NEW.installation_type::qwat_od.installation_type = 'pump'::qwat_od.installation_type THEN UPDATE qwat_od.pump SET fk_pump_type = NEW.fk_pump_type , fk_pipe_in = NEW.fk_pipe_in , fk_pipe_out = NEW.fk_pipe_out , fk_pump_operating = NEW.fk_pump_operating , no_pumps = NEW.no_pumps , rejected_flow = NEW.rejected_flow , manometric_height = NEW.manometric_height WHERE id = OLD.id; END CASE; RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION qwat_od.ft_element_installation_update() OWNER TO postgres;
Find difference