From cbf6ad3aa33c2919bc01b8f1220894009fe42ef5 Mon Sep 17 00:00:00 2001 From: Albert Bofill Date: Mon, 2 Sep 2024 18:03:50 +0200 Subject: [PATCH] fix: change right for left join to selector_municiplaity on various views and change fct_setselector to only check muni_id > 0 when check all --- example/user/ud/ud_99_sample_zfinal.sql | 2 +- updates/36/36012/ud/ddlview.sql | 20 ++++++++++---------- updates/36/36012/ws/ddlview.sql | 16 ++++++++-------- utils/fct/gw_fct_setselectors.sql | 5 +++++ 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/example/user/ud/ud_99_sample_zfinal.sql b/example/user/ud/ud_99_sample_zfinal.sql index 0e1a73e783..eeb5b04ca6 100644 --- a/example/user/ud/ud_99_sample_zfinal.sql +++ b/example/user/ud/ud_99_sample_zfinal.sql @@ -10,7 +10,7 @@ SET search_path = 'SCHEMA_NAME', public, pg_catalog; INSERT INTO selector_sector SELECT sector_id, current_user from sector where sector_id > 0 ON CONFLICT (sector_id, cur_user) DO NOTHING; DELETE FROM selector_psector; -INSERT INTO selector_municipality SELECT muni_id,current_user FROM ext_municipality ON CONFLICT (muni_id, cur_user) DO NOTHING; +INSERT INTO selector_municipality SELECT muni_id,current_user FROM ext_municipality where muni_id > 0 ON CONFLICT (muni_id, cur_user) DO NOTHING; UPDATE cat_feature SET id = 'OVERFLOW_STORAGE' WHERE id = 'OWERFLOW_STORAGE'; diff --git a/updates/36/36012/ud/ddlview.sql b/updates/36/36012/ud/ddlview.sql index 3994461951..397c3f0b1c 100644 --- a/updates/36/36012/ud/ddlview.sql +++ b/updates/36/36012/ud/ddlview.sql @@ -198,7 +198,7 @@ SELECT element.element_id, JOIN element_type ON element_type.id::text = cat_element.elementtype_id::text WHERE element.expl_id = selector_expl.expl_id AND selector_expl.cur_user = "current_user"()::text) e join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or e.muni_id is null); @@ -240,7 +240,7 @@ SELECT LEFT JOIN dma ON dma.dma_id = samplepoint.dma_id WHERE samplepoint.expl_id = selector_expl.expl_id AND selector_expl.cur_user = "current_user"()::text) sm join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or sm.muni_id is null); @@ -329,7 +329,7 @@ CREATE OR REPLACE VIEW v_edit_link AS FROM vu_link JOIN v_state_link USING (link_id)) l join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or l.muni_id is null); CREATE OR REPLACE VIEW v_edit_link_connec AS @@ -337,7 +337,7 @@ CREATE OR REPLACE VIEW v_edit_link_connec AS SELECT l.* FROM vu_link_connec l) l join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or l.muni_id is null); CREATE OR REPLACE VIEW v_edit_link_gully AS @@ -345,7 +345,7 @@ CREATE OR REPLACE VIEW v_edit_link_gully AS SELECT l.* FROM vu_link_connec l) l join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or l.muni_id is null); CREATE OR REPLACE VIEW v_edit_drainzone @@ -530,7 +530,7 @@ select a.* FROM ( SELECT selector_expl.expl_id FROM selector_expl WHERE selector JOIN v_state_arc USING (arc_id) WHERE a.expl_id = s.expl_id OR a.expl_id2 = s.expl_id) a join selector_sector s using (sector_id) -right join selector_municipality m using (muni_id) +LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or a.muni_id is null); @@ -737,7 +737,7 @@ FROM ( select n.* FROM ( SELECT selector_expl.expl_id FROM selector_expl WHERE s JOIN v_state_node USING (node_id) WHERE n.expl_id = s.expl_id OR n.expl_id2 = s.expl_id) a join v_sector_node s using (node_id) -right join selector_municipality m using (muni_id) +LEFT JOIN selector_municipality m using (muni_id) where (m.cur_user = current_user or a.muni_id is null); CREATE OR REPLACE VIEW vu_connec AS @@ -972,7 +972,7 @@ WITH s AS ( WHERE (vu_link.expl_id = s_1.expl_id OR vu_link.expl_id2 = s_1.expl_id) AND vu_link.state = 2) a ON a.feature_id::text = vu_connec.connec_id::text WHERE vu_connec.expl_id = s.expl_id OR vu_connec.expl_id2 = s.expl_id) c join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or c.muni_id is null); @@ -1232,7 +1232,7 @@ WITH s AS ( WHERE (vu_link.expl_id = s_1.expl_id OR vu_link.expl_id2 = s_1.expl_id) AND vu_link.state = 2) a ON a.feature_id::text = vu_gully.gully_id::text WHERE vu_gully.expl_id = s.expl_id OR vu_gully.expl_id2 = s.expl_id) g join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or g.muni_id is null); @@ -4419,7 +4419,7 @@ CREATE OR REPLACE VIEW v_edit_raingage AS raingage.expl_id, raingage.muni_id FROM selector_expl, raingage - RIGHT JOIN selector_municipality m USING (muni_id) + LEFT JOIN selector_municipality m USING (muni_id) WHERE raingage.expl_id = selector_expl.expl_id AND selector_expl.cur_user = "current_user"()::text AND (m.cur_user = current_user or raingage.muni_id is null); diff --git a/updates/36/36012/ws/ddlview.sql b/updates/36/36012/ws/ddlview.sql index 5998d300e5..6d6ef0a484 100644 --- a/updates/36/36012/ws/ddlview.sql +++ b/updates/36/36012/ws/ddlview.sql @@ -236,7 +236,7 @@ SELECT e.* FROM ( SELECT element.element_id, JOIN element_type ON element_type.id::text = cat_element.elementtype_id::text WHERE element.expl_id = selector_expl.expl_id AND selector_expl.cur_user = "current_user"()::text) e join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or e.muni_id is null); @@ -278,7 +278,7 @@ SELECT sm.* FROM ( SELECT samplepoint.sample_id, LEFT JOIN dma ON dma.dma_id = samplepoint.dma_id WHERE samplepoint.expl_id = selector_expl.expl_id AND selector_expl.cur_user = "current_user"()::text) sm join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or sm.muni_id is null); @@ -456,7 +456,7 @@ select a.* FROM ( SELECT selector_expl.expl_id FROM selector_expl WHERE selector JOIN v_state_arc USING (arc_id) WHERE a.expl_id = s.expl_id OR a.expl_id2 = s.expl_id) a join selector_sector s using (sector_id) -right join selector_municipality m using (muni_id) +LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or a.muni_id is null); @@ -608,7 +608,7 @@ JOIN v_state_node USING (node_id) WHERE n.expl_id = s.expl_id OR n.expl_id2 = s.expl_id) a LEFT JOIN man_valve v USING (node_id) join v_sector_node s using (node_id) -right join selector_municipality m using (muni_id) +LEFT JOIN selector_municipality m using (muni_id) where (m.cur_user = current_user or a.muni_id is null); @@ -826,7 +826,7 @@ CREATE OR REPLACE VIEW v_edit_link AS FROM vu_link JOIN v_state_link USING (link_id)) l join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or l.muni_id is null); @@ -1044,7 +1044,7 @@ SELECT vu_connec.connec_id, WHERE (vu_link.expl_id = s_1.expl_id OR vu_link.expl_id2 = s_1.expl_id) AND vu_link.state = 2) a ON a.feature_id::text = vu_connec.connec_id::text WHERE vu_connec.expl_id = s.expl_id OR vu_connec.expl_id2 = s.expl_id) c join selector_sector s using (sector_id) - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where s.cur_user = current_user and (m.cur_user = current_user or c.muni_id is null); @@ -3883,7 +3883,7 @@ CREATE OR REPLACE VIEW v_edit_pond AS pond.muni_id FROM selector_expl, pond LEFT JOIN dma ON pond.dma_id = dma.dma_id - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where (m.cur_user = current_user or pond.muni_id is null) and pond.expl_id = selector_expl.expl_id AND selector_expl.cur_user = "current_user"()::text; @@ -3899,6 +3899,6 @@ CREATE OR REPLACE VIEW v_edit_pool AS pool.muni_id FROM selector_expl, pool LEFT JOIN dma ON pool.dma_id = dma.dma_id - right join selector_municipality m using (muni_id) + LEFT JOIN selector_municipality m using (muni_id) where (m.cur_user = current_user or pool.muni_id is null) and pool.expl_id = selector_expl.expl_id AND selector_expl.cur_user = "current_user"()::text; \ No newline at end of file diff --git a/utils/fct/gw_fct_setselectors.sql b/utils/fct/gw_fct_setselectors.sql index 7a807009e6..7f5732b4f7 100644 --- a/utils/fct/gw_fct_setselectors.sql +++ b/utils/fct/gw_fct_setselectors.sql @@ -191,6 +191,11 @@ BEGIN ',(CASE when v_ids is not null then concat(' WHERE id = ANY(ARRAY',v_ids,') ') end),' ON CONFLICT (',v_columnname,', cur_user) DO NOTHING;'); + ELSIF v_tabname='tab_municipality' THEN + EXECUTE concat('INSERT INTO ',v_tablename,' (',v_columnname,', cur_user) SELECT ',v_tableid,', current_user FROM ',v_table,' + ',(CASE when v_ids is not null then concat(' WHERE id = ANY(ARRAY',v_ids,')') end),' WHERE active AND muni_id > 0 + ON CONFLICT (',v_columnname,', cur_user) DO NOTHING;'); + ELSE EXECUTE concat('INSERT INTO ',v_tablename,' (',v_columnname,', cur_user) SELECT ',v_tableid,', current_user FROM ',v_table,' ',(CASE when v_ids is not null then concat(' WHERE id = ANY(ARRAY',v_ids,')') end),' WHERE active