diff --git a/src/fundamend/sqlmodels/materialize_ahb_view.sql b/src/fundamend/sqlmodels/materialize_ahb_view.sql index 04752815..8f7323e6 100644 --- a/src/fundamend/sqlmodels/materialize_ahb_view.sql +++ b/src/fundamend/sqlmodels/materialize_ahb_view.sql @@ -636,14 +636,17 @@ CREATE INDEX idx_hierarchy_gueltig_von ON ahb_hierarchy_materialized (gueltig_vo CREATE INDEX idx_hierarchy_gueltig_bis ON ahb_hierarchy_materialized (gueltig_bis); CREATE INDEX idx_hierarchy_beschreibung ON ahb_hierarchy_materialized (beschreibung); CREATE INDEX idx_hierarchy_beschreibung_lower ON ahb_hierarchy_materialized (lower(beschreibung)); +CREATE INDEX idx_hierarchy_beschreibung_unicode_lower ON ahb_hierarchy_materialized (REPLACE(REPLACE(REPLACE(LOWER(beschreibung), 'Ä', 'ä'), 'Ö', 'ö'), 'Ü', 'ü')); CREATE INDEX idx_hierarchy_kommunikationsrichtungen ON ahb_hierarchy_materialized (kommunikationsrichtungen); CREATE INDEX idx_hierarchy_edifact_format_version ON ahb_hierarchy_materialized (edifact_format_version); CREATE INDEX idx_hierarchy_segmentgroup_id ON ahb_hierarchy_materialized (segmentgroup_id); CREATE INDEX idx_hierarchy_segmentgroup_id_lower ON ahb_hierarchy_materialized (lower(segmentgroup_id)); +CREATE INDEX idx_hierarchy_segmentgroup_id_unicode_lower ON ahb_hierarchy_materialized (REPLACE(REPLACE(REPLACE(LOWER(segmentgroup_id), 'Ä', 'ä'), 'Ö', 'ö'), 'Ü', 'ü')); CREATE INDEX idx_hierarchy_segmentgroup_name ON ahb_hierarchy_materialized (segmentgroup_name); CREATE INDEX idx_hierarchy_segmentgroup_position ON ahb_hierarchy_materialized (segmentgroup_position); CREATE INDEX idx_hierarchy_segment_id ON ahb_hierarchy_materialized (segment_id); CREATE INDEX idx_hierarchy_segment_id_lower ON ahb_hierarchy_materialized (lower(segment_id)); +CREATE INDEX idx_hierarchy_segment_id_unicode_lower ON ahb_hierarchy_materialized (REPLACE(REPLACE(REPLACE(LOWER(segment_id), 'Ä', 'ä'), 'Ö', 'ö'), 'Ü', 'ü')); CREATE INDEX idx_hierarchy_segment_name ON ahb_hierarchy_materialized (segment_name); CREATE INDEX idx_hierarchy_segment_number ON ahb_hierarchy_materialized (segment_number); CREATE INDEX idx_hierarchy_segment_position ON ahb_hierarchy_materialized (segment_position); @@ -652,6 +655,7 @@ CREATE INDEX idx_hierarchy_dataelementgroup_name ON ahb_hierarchy_materialized ( CREATE INDEX idx_hierarchy_dataelementgroup_position ON ahb_hierarchy_materialized (dataelementgroup_position); CREATE INDEX idx_hierarchy_dataelement_id ON ahb_hierarchy_materialized (dataelement_id); CREATE INDEX idx_hierarchy_dataelement_id_lower ON ahb_hierarchy_materialized (lower(dataelement_id)); +CREATE INDEX idx_hierarchy_dataelement_id_unicode_lower ON ahb_hierarchy_materialized (REPLACE(REPLACE(REPLACE(LOWER(dataelement_id), 'Ä', 'ä'), 'Ö', 'ö'), 'Ü', 'ü')); CREATE INDEX idx_hierarchy_dataelement_name ON ahb_hierarchy_materialized (dataelement_name); CREATE INDEX idx_hierarchy_dataelement_position ON ahb_hierarchy_materialized (dataelement_position); CREATE INDEX idx_hierarchy_dataelement_ahb_status ON ahb_hierarchy_materialized (dataelement_ahb_status); @@ -659,8 +663,10 @@ CREATE INDEX idx_hierarchy_code_id ON ahb_hierarchy_materialized (code_id); CREATE INDEX idx_hierarchy_code_name ON ahb_hierarchy_materialized (code_name); CREATE INDEX idx_hierarchy_code_description ON ahb_hierarchy_materialized (code_description); CREATE INDEX idx_hierarchy_code_description_lower ON ahb_hierarchy_materialized (lower(code_description)); +CREATE INDEX idx_hierarchy_code_description_unicode_lower ON ahb_hierarchy_materialized (REPLACE(REPLACE(REPLACE(LOWER(code_description), 'Ä', 'ä'), 'Ö', 'ö'), 'Ü', 'ü')); CREATE INDEX idx_hierarchy_code_value ON ahb_hierarchy_materialized (code_value); CREATE INDEX idx_hierarchy_code_value_lower ON ahb_hierarchy_materialized (lower(code_value)); +CREATE INDEX idx_hierarchy_code_value_unicode_lower ON ahb_hierarchy_materialized (REPLACE(REPLACE(REPLACE(LOWER(code_value), 'Ä', 'ä'), 'Ö', 'ö'), 'Ü', 'ü')); CREATE INDEX idx_hierarchy_code_ahb_status ON ahb_hierarchy_materialized (code_ahb_status); CREATE INDEX idx_hierarchy_code_position ON ahb_hierarchy_materialized (code_position); CREATE INDEX idx_hierarchy_path ON ahb_hierarchy_materialized (path); @@ -674,8 +680,10 @@ CREATE INDEX idx_ahb_tabellen_filter2 ON ahb_hierarchy_materialized (type) WHERE -- indexes for computed columns for v_ahbtabellen CREATE INDEX idx_line_ahb_status ON ahb_hierarchy_materialized (line_ahb_status); CREATE INDEX idx_line_ahb_status_lower ON ahb_hierarchy_materialized (lower(line_ahb_status)); +CREATE INDEX idx_line_ahb_status_unicode_lower ON ahb_hierarchy_materialized (REPLACE(REPLACE(REPLACE(LOWER(line_ahb_status), 'Ä', 'ä'), 'Ö', 'ö'), 'Ü', 'ü')); CREATE INDEX idx_line_name ON ahb_hierarchy_materialized (line_name); CREATE INDEX idx_line_name_lower ON ahb_hierarchy_materialized (lower(line_name)); +CREATE INDEX idx_line_name_unicode_lower ON ahb_hierarchy_materialized (REPLACE(REPLACE(REPLACE(LOWER(line_name), 'Ä', 'ä'), 'Ö', 'ö'), 'Ü', 'ü')); CREATE INDEX idx_hierarchy_sort_path_per_ahb ON ahb_hierarchy_materialized (sort_path, pruefidentifikator, edifact_format_version); -- Fallback: append occurrence counter '#N' to any id_paths that are still not unique after qualifier injection.