1 --Upgrade Script for 3.5.4 to 3.5.5
2 \set eg_version '''3.5.5'''
4 INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.5.5', :eg_version);
6 SELECT evergreen.upgrade_deps_block_check('1262', :eg_version);
8 CREATE OR REPLACE FUNCTION search.highlight_display_fields_impl(
11 field_list INT[] DEFAULT '{}'::INT[],
12 css_class TEXT DEFAULT 'oils_SH',
13 hl_all BOOL DEFAULT TRUE,
14 minwords INT DEFAULT 5,
15 maxwords INT DEFAULT 25,
16 shortwords INT DEFAULT 0,
17 maxfrags INT DEFAULT 0,
18 delimiter TEXT DEFAULT ' ... '
19 ) RETURNS SETOF search.highlight_result AS $f$
22 v_css_class TEXT := css_class;
23 v_delimiter TEXT := delimiter;
24 v_field_list INT[] := field_list;
27 IF v_delimiter LIKE $$%'%$$ OR v_delimiter LIKE '%"%' THEN --"
28 v_delimiter := ' ... ';
32 opts := opts || 'MinWords=' || minwords;
33 opts := opts || ', MaxWords=' || maxwords;
34 opts := opts || ', ShortWords=' || shortwords;
35 opts := opts || ', MaxFragments=' || maxfrags;
36 opts := opts || ', FragmentDelimiter="' || delimiter || '"';
38 opts := opts || 'HighlightAll=TRUE';
41 IF v_css_class LIKE $$%'%$$ OR v_css_class LIKE '%"%' THEN -- "
42 v_css_class := 'oils_SH';
45 opts := opts || $$, StopSel=</b>, StartSel="<b class='$$ || v_css_class; -- "
47 IF v_field_list = '{}'::INT[] THEN
48 SELECT ARRAY_AGG(id) INTO v_field_list FROM config.metabib_field WHERE display_field;
55 evergreen.escape_for_html(de.value) AS value,
58 evergreen.escape_for_html(de.value),
59 $$ || quote_literal(tsq) || $$,
60 $1 || ' ' || mf.field_class || ' ' || mf.name || $xx$'>"$xx$ -- "'
62 FROM metabib.display_entry de
63 JOIN config.metabib_field mf ON (mf.id = de.field)
64 JOIN search.best_tsconfig t ON (t.id = de.field)
69 RETURN QUERY EXECUTE hl_query USING opts, rid, v_field_list;
73 CREATE OR REPLACE FUNCTION search.highlight_display_fields(
75 tsq_map TEXT, -- { '(a | b) & c' => '1,2,3,4', ...}
76 css_class TEXT DEFAULT 'oils_SH',
77 hl_all BOOL DEFAULT TRUE,
78 minwords INT DEFAULT 5,
79 maxwords INT DEFAULT 25,
80 shortwords INT DEFAULT 0,
81 maxfrags INT DEFAULT 0,
82 delimiter TEXT DEFAULT ' ... '
83 ) RETURNS SETOF search.highlight_result AS $f$
91 IF (tsq_map ILIKE 'hstore%') THEN
92 EXECUTE 'SELECT ' || tsq_map INTO tsq_hstore;
94 tsq_hstore := tsq_map::HSTORE;
97 FOR tsq, fields IN SELECT key, value FROM each(tsq_hstore::HSTORE) LOOP
98 SELECT ARRAY_AGG(unnest::INT) INTO afields
99 FROM unnest(regexp_split_to_array(fields,','));
100 seen := seen || afields;
103 SELECT * FROM search.highlight_display_fields_impl(
104 rid, tsq, afields, css_class, hl_all,minwords,
105 maxwords, shortwords, maxfrags, delimiter
113 evergreen.escape_for_html(value) AS value,
114 evergreen.escape_for_html(value) AS highlight
115 FROM metabib.display_entry
117 AND NOT (field = ANY (seen));
119 $f$ LANGUAGE PLPGSQL ROWS 10;
123 -- Update auditor tables to catch changes to source tables.
124 -- Can be removed/skipped if there were no schema changes.
125 SELECT auditor.update_auditors();