egdb3_11_7
.authority
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
simple_heading_browse_center(atag_list integer[], q text, page integer DEFAULT 0, pagesize integer DEFAULT 9, thesauruses text DEFAULT ''::text)
Parameters
Name
Type
Mode
atag_list
integer[]
IN
q
text
IN
page
integer
IN
pagesize
integer
IN
thesauruses
text
IN
Definition
DECLARE pivot_sort_value TEXT; boffset INT DEFAULT 0; aoffset INT DEFAULT 0; blimit INT DEFAULT 0; alimit INT DEFAULT 0; BEGIN pivot_sort_value := authority.simple_heading_find_pivot(atag_list,q,thesauruses); IF page = 0 THEN blimit := pagesize / 2; alimit := blimit; IF pagesize % 2 <> 0 THEN alimit := alimit + 1; END IF; ELSE blimit := pagesize; alimit := blimit; boffset := pagesize / 2; aoffset := boffset; IF pagesize % 2 <> 0 THEN boffset := boffset + 1; END IF; END IF; IF page <= 0 THEN RETURN QUERY -- "bottom" half of the browse results SELECT id FROM ( SELECT ash.id, row_number() over () FROM authority.simple_heading ash WHERE ash.atag = ANY (atag_list) AND CASE thesauruses WHEN '' THEN TRUE ELSE ash.thesaurus = ANY(regexp_split_to_array(thesauruses, ',')) END AND ash.sort_value < pivot_sort_value ORDER BY ash.sort_value DESC LIMIT blimit OFFSET ABS(page) * pagesize - boffset ) x ORDER BY row_number DESC; END IF; IF page >= 0 THEN RETURN QUERY -- "bottom" half of the browse results SELECT ash.id FROM authority.simple_heading ash WHERE ash.atag = ANY (atag_list) AND CASE thesauruses WHEN '' THEN TRUE ELSE ash.thesaurus = ANY(regexp_split_to_array(thesauruses, ',')) END AND ash.sort_value >= pivot_sort_value ORDER BY ash.sort_value LIMIT alimit OFFSET ABS(page) * pagesize - aoffset; END IF; END;