Dumped on 2009-02-24
- action
- aged_circulation
- all_circulation
- billable_cirulations
- circulation
- hold_copy_map
- hold_notification
- hold_request
- hold_transit_copy
- in_house_use
- non_cat_in_house_use
- non_cataloged_circulation
- open_circ_count_by_circ_mod
- open_circulation
- survey
- survey_answer
- survey_question
- survey_response
- transit_copy
- unfulfilled_hold_list
- age_circ_on_delete( )
- circulation_claims_returned( )
- find_circ_matrix_matchpoint( context_ou integer, match_item bigint, match_user integer, renewal boolean )
- find_hold_matrix_matchpoint( pickup_ou integer, request_ou integer, match_item bigint, match_user integer, match_requestor integer )
- hold_request_permit_test( pickup_ou integer, request_ou integer, match_item bigint, match_user integer, match_requestor integer )
- item_user_circ_test( circ_ou integer, match_item bigint, match_user integer, renewal boolean )
- item_user_circ_test( integer, bigint, integer )
- item_user_renew_test( integer, bigint, integer )
- survey_response_answer_date_fixup( )
- actor
- asset
- auditor
- authority
- biblio
- config
- container
- extend_reporter
- metabib
- money
- offline
- permission
- grp_perm_map
- grp_tree
- perm_list
- usr_grp_map
- usr_object_perm_map
- usr_perm_map
- usr_work_ou_map
- grp_ancestors( integer )
- grp_combined_ancestors( integer, integer )
- grp_common_ancestors( integer, integer )
- grp_descendants( integer )
- grp_full_path( integer )
- grp_proximity( integer, integer )
- usr_can_grant_perm( iuser integer, tperm text, target_ou integer )
- usr_has_home_perm( iuser integer, tperm text, target_ou integer )
- usr_has_object_perm( integer, text, text, text )
- usr_has_object_perm( iuser integer, tperm text, obj_type text, obj_id text, target_ou integer )
- usr_has_perm( integer, text, integer )
- usr_has_work_perm( iuser integer, tperm text, target_ou integer )
- usr_perms( integer )
- public
- blackshear_fps
- blackshear_pines_fps
- catoosa_id_list
- circ_07
- cn_hold_fix
- copy_cnt_fix
- copy_hold_fix
- existing_record_fp
- fix_brad
- fix_fixme
- holds_per_user_by_tens
- joined_billing
- joined_legacy
- legacy_baduser_map
- legacy_bill_amount
- legacy_callnum
- legacy_charge
- legacy_copy_status_map
- legacy_email
- legacy_hold
- legacy_item
- legacy_lib_change_circ
- legacy_lib_max_fine
- legacy_non_real_user
- legacy_piece_count
- legacy_pre_cat
- legacy_proc_fees
- legacy_recirc_lib
- legacy_renewal_count
- legacy_status_change_circ
- legacy_transit
- legacy_type_circ_map
- non_match_rec_list
- non_unique
- note_temp_table
- pg_ts_cfg
- pg_ts_cfgmap
- pg_ts_dict
- pg_ts_parser
- pines_260_pubdate
- pines_all_pubdate
- pines_both_pubdate
- pines_fp
- pines_pubdate
- pines_title
- prematurely_closed_xacs
- quitman_full_fingerprint_set
- rec_list
- secondary_rec_list
- secondary_rec_list2
- testview
- th_fingerprint_round_7
- th_rank
- title_hold_fix
- _get_parser_from_curcfg( )
- agg_text( text )
- agg_tsvector( public.tsvector )
- array_accum( anyelement )
- call_number_dewey( text )
- call_number_dewey( text, integer )
- concat( public.tsvector, public.tsvector )
- connectby( text, text, text, text, integer )
- connectby( text, text, text, text, integer, text )
- connectby( text, text, text, text, text, integer )
- connectby( text, text, text, text, text, integer, text )
- crosstab( text )
- crosstab( text, integer )
- crosstab( text, text )
- crosstab2( text )
- crosstab3( text )
- crosstab4( text )
- dex_init( internal )
- dex_lexize( internal, internal, integer )
- entityize( text )
- exectsq( public.tsvector, public.tsquery )
- explode_array( anyarray )
- extract_marc_field( text, bigint, text )
- extract_marc_field( text, bigint, text, text )
- first( anyelement )
- first5( text )
- first_agg( anyelement, anyelement )
- first_word( text )
- gbt_bit_compress( internal )
- gbt_bit_consistent( internal, "bit", smallint )
- gbt_bit_penalty( internal, internal, internal )
- gbt_bit_picksplit( internal, internal )
- gbt_bit_same( internal, internal, internal )
- gbt_bit_union( bytea, internal )
- gbt_bpchar_compress( internal )
- gbt_bpchar_consistent( internal, bpchar, smallint )
- gbt_bytea_compress( internal )
- gbt_bytea_consistent( internal, bytea, smallint )
- gbt_bytea_penalty( internal, internal, internal )
- gbt_bytea_picksplit( internal, internal )
- gbt_bytea_same( internal, internal, internal )
- gbt_bytea_union( bytea, internal )
- gbt_cash_compress( internal )
- gbt_cash_consistent( internal, money, smallint )
- gbt_cash_penalty( internal, internal, internal )
- gbt_cash_picksplit( internal, internal )
- gbt_cash_same( internal, internal, internal )
- gbt_cash_union( bytea, internal )
- gbt_cidr_compress( internal )
- gbt_cidr_consistent( internal, cidr, smallint )
- gbt_date_compress( internal )
- gbt_date_consistent( internal, date, smallint )
- gbt_date_penalty( internal, internal, internal )
- gbt_date_picksplit( internal, internal )
- gbt_date_same( internal, internal, internal )
- gbt_date_union( bytea, internal )
- gbt_decompress( internal )
- gbt_float4_compress( internal )
- gbt_float4_consistent( internal, real, smallint )
- gbt_float4_penalty( internal, internal, internal )
- gbt_float4_picksplit( internal, internal )
- gbt_float4_same( internal, internal, internal )
- gbt_float4_union( bytea, internal )
- gbt_float8_compress( internal )
- gbt_float8_consistent( internal, double precision, smallint )
- gbt_float8_penalty( internal, internal, internal )
- gbt_float8_picksplit( internal, internal )
- gbt_float8_same( internal, internal, internal )
- gbt_float8_union( bytea, internal )
- gbt_inet_compress( internal )
- gbt_inet_consistent( internal, inet, smallint )
- gbt_inet_penalty( internal, internal, internal )
- gbt_inet_picksplit( internal, internal )
- gbt_inet_same( internal, internal, internal )
- gbt_inet_union( bytea, internal )
- gbt_int2_compress( internal )
- gbt_int2_consistent( internal, smallint, smallint )
- gbt_int2_penalty( internal, internal, internal )
- gbt_int2_picksplit( internal, internal )
- gbt_int2_same( internal, internal, internal )
- gbt_int2_union( bytea, internal )
- gbt_int4_compress( internal )
- gbt_int4_consistent( internal, integer, smallint )
- gbt_int4_penalty( internal, internal, internal )
- gbt_int4_picksplit( internal, internal )
- gbt_int4_same( internal, internal, internal )
- gbt_int4_union( bytea, internal )
- gbt_int8_compress( internal )
- gbt_int8_consistent( internal, bigint, smallint )
- gbt_int8_penalty( internal, internal, internal )
- gbt_int8_picksplit( internal, internal )
- gbt_int8_same( internal, internal, internal )
- gbt_int8_union( bytea, internal )
- gbt_intv_compress( internal )
- gbt_intv_consistent( internal, interval, smallint )
- gbt_intv_decompress( internal )
- gbt_intv_penalty( internal, internal, internal )
- gbt_intv_picksplit( internal, internal )
- gbt_intv_same( internal, internal, internal )
- gbt_intv_union( bytea, internal )
- gbt_macad_compress( internal )
- gbt_macad_consistent( internal, macaddr, smallint )
- gbt_macad_penalty( internal, internal, internal )
- gbt_macad_picksplit( internal, internal )
- gbt_macad_same( internal, internal, internal )
- gbt_macad_union( bytea, internal )
- gbt_numeric_compress( internal )
- gbt_numeric_consistent( internal, numeric, smallint )
- gbt_numeric_penalty( internal, internal, internal )
- gbt_numeric_picksplit( internal, internal )
- gbt_numeric_same( internal, internal, internal )
- gbt_numeric_union( bytea, internal )
- gbt_oid_compress( internal )
- gbt_oid_consistent( internal, oid, smallint )
- gbt_oid_penalty( internal, internal, internal )
- gbt_oid_picksplit( internal, internal )
- gbt_oid_same( internal, internal, internal )
- gbt_oid_union( bytea, internal )
- gbt_text_compress( internal )
- gbt_text_consistent( internal, text, smallint )
- gbt_text_penalty( internal, internal, internal )
- gbt_text_picksplit( internal, internal )
- gbt_text_same( internal, internal, internal )
- gbt_text_union( bytea, internal )
- gbt_time_compress( internal )
- gbt_time_consistent( internal, time without time zone, smallint )
- gbt_time_penalty( internal, internal, internal )
- gbt_time_picksplit( internal, internal )
- gbt_time_same( internal, internal, internal )
- gbt_time_union( bytea, internal )
- gbt_timetz_compress( internal )
- gbt_timetz_consistent( internal, time with time zone, smallint )
- gbt_ts_compress( internal )
- gbt_ts_consistent( internal, timestamp without time zone, smallint )
- gbt_ts_penalty( internal, internal, internal )
- gbt_ts_picksplit( internal, internal )
- gbt_ts_same( internal, internal, internal )
- gbt_ts_union( bytea, internal )
- gbt_tstz_compress( internal )
- gbt_tstz_consistent( internal, timestamp with time zone, smallint )
- gbt_var_decompress( internal )
- gbtreekey16_in( cstring )
- gbtreekey16_out( public.gbtreekey16 )
- gbtreekey32_in( cstring )
- gbtreekey32_out( public.gbtreekey32 )
- gbtreekey4_in( cstring )
- gbtreekey4_out( public.gbtreekey4 )
- gbtreekey8_in( cstring )
- gbtreekey8_out( public.gbtreekey8 )
- gbtreekey_var_in( cstring )
- gbtreekey_var_out( public.gbtreekey_var )
- get_covers( public.tsvector, public.tsquery )
- gtrgm_compress( internal )
- gtrgm_consistent( public.gtrgm, internal, integer )
- gtrgm_decompress( internal )
- gtrgm_in( cstring )
- gtrgm_out( public.gtrgm )
- gtrgm_penalty( internal, internal, internal )
- gtrgm_picksplit( internal, internal )
- gtrgm_same( public.gtrgm, public.gtrgm, internal )
- gtrgm_union( bytea, internal )
- gtsvector_compress( internal )
- gtsvector_consistent( public.gtsvector, internal, integer )
- gtsvector_decompress( internal )
- gtsvector_in( cstring )
- gtsvector_out( public.gtsvector )
- gtsvector_penalty( internal, internal, internal )
- gtsvector_picksplit( internal, internal )
- gtsvector_same( public.gtsvector, public.gtsvector, internal )
- gtsvector_union( internal, internal )
- headline( oid, text, public.tsquery )
- headline( oid, text, public.tsquery, text )
- headline( text, public.tsquery )
- headline( text, public.tsquery, text )
- headline( text, text, public.tsquery )
- headline( text, text, public.tsquery, text )
- last( anyelement )
- last_agg( anyelement, anyelement )
- length( public.tsvector )
- lexize( oid, text )
- lexize( text )
- lexize( text, text )
- lowercase( text )
- naco_normalize( text )
- naco_normalize( text, text )
- non_filing_normalize( text, "char" )
- normal_rand( integer, double precision, double precision )
- normalize_space( text )
- oils_i18n_gettext( integer, text, text, text )
- oils_i18n_gettext( text, text, text, text )
- oils_i18n_xlate( keytable text, keyclass text, keycol text, identcol text, keyvalue text, raw_locale text )
- oils_tsearch2( )
- parse( oid, text )
- parse( text )
- parse( text, text )
- prsd_end( internal )
- prsd_getlexeme( internal, internal, internal )
- prsd_headline( internal, internal, internal )
- prsd_lextype( internal )
- prsd_start( internal, integer )
- querytree( public.tsquery )
- rank( public.tsvector, public.tsquery )
- rank( public.tsvector, public.tsquery, integer )
- rank( real[], public.tsvector, public.tsquery )
- rank( real[], public.tsvector, public.tsquery, integer )
- rank_cd( integer, public.tsvector, public.tsquery )
- rank_cd( integer, public.tsvector, public.tsquery, integer )
- rank_cd( public.tsvector, public.tsquery )
- rank_cd( public.tsvector, public.tsquery, integer )
- remove_diacritics( text )
- reset_tsearch( )
- rexectsq( public.tsquery, public.tsvector )
- set_curcfg( integer )
- set_curcfg( text )
- set_curdict( integer )
- set_curdict( text )
- set_curprs( integer )
- set_curprs( text )
- set_limit( real )
- setweight( public.tsvector, "char" )
- show_curcfg( )
- show_limit( )
- show_trgm( text )
- similarity( text, text )
- similarity_op( text, text )
- snb_en_init( internal )
- snb_lexize( internal, internal, integer )
- snb_ru_init( internal )
- spell_init( internal )
- spell_lexize( internal, internal, integer )
- stat( text )
- stat( text, text )
- strip( public.tsvector )
- syn_init( internal )
- syn_lexize( internal, internal, integer )
- tableoid2name( oid )
- text_concat( text, text )
- to_tsquery( oid, text )
- to_tsquery( text )
- to_tsquery( text, text )
- to_tsvector( oid, text )
- to_tsvector( text )
- to_tsvector( text, text )
- token_type( )
- token_type( integer )
- token_type( text )
- ts_debug( text )
- tsearch2( )
- tsquery_in( cstring )
- tsquery_out( public.tsquery )
- tsvector_cmp( public.tsvector, public.tsvector )
- tsvector_concat( public.tsvector, public.tsvector )
- tsvector_eq( public.tsvector, public.tsvector )
- tsvector_ge( public.tsvector, public.tsvector )
- tsvector_gt( public.tsvector, public.tsvector )
- tsvector_in( cstring )
- tsvector_le( public.tsvector, public.tsvector )
- tsvector_lt( public.tsvector, public.tsvector )
- tsvector_ne( public.tsvector, public.tsvector )
- tsvector_out( public.tsvector )
- uppercase( text )
- xml_encode_special_chars( text )
- xml_valid( text )
- xpath_bool( text, text )
- xpath_list( text, text )
- xpath_list( text, text, text )
- xpath_nodeset( text, text )
- xpath_nodeset( text, text, text )
- xpath_nodeset( text, text, text, text )
- xpath_number( text, text )
- xpath_string( text, text )
- xpath_table( text, text, text, text, text )
- xslt_process( text, text )
- xslt_process( text, text, text )
- reporter
- search
- relevance_adjustment
- explode_array( anyarray )
- parse_search_args( text )
- pick_table( text )
- scale_ratio( total numeric, checked numeric )
- staged_fts( param_search_ou integer, param_depth integer, param_searches text, param_statuses integer[], param_audience text[], param_language text[], param_lit_form text[], param_types text[], param_forms text[], param_vformats text[], param_pref_lang text, param_pref_lang_multiplier real, param_sort text, param_sort_desc boolean, metarecord boolean, staff boolean, param_rel_limit integer, param_chk_limit integer, param_skip_chk integer )
- staged_fts( param_search_ou integer, param_depth integer, param_searches text, param_statuses integer[], param_locations integer[], param_audience text[], param_language text[], param_lit_form text[], param_types text[], param_forms text[], param_vformats text[], param_bib_level text[], param_before text, param_after text, param_during text, param_between text[], param_pref_lang text, param_pref_lang_multiplier real, param_sort text, param_sort_desc boolean, metarecord boolean, staff boolean, param_rel_limit integer, param_chk_limit integer, param_skip_chk integer )
- staged_fts( param_search_ou integer, param_depth integer, param_searches text, param_statuses integer[], param_locations integer[], param_audience text[], param_language text[], param_lit_form text[], param_types text[], param_forms text[], param_vformats text[], param_pref_lang text, param_pref_lang_multiplier real, param_sort text, param_sort_desc boolean, metarecord boolean, staff boolean, param_rel_limit integer, param_chk_limit integer, param_skip_chk integer )
- stats
- vandelay
Schema action
action.aged_circulation Structure
F-Key |
Name |
Type |
Description |
|
usr_post_code |
text |
|
|
usr_home_ou |
integer |
NOT NULL
|
|
usr_profile |
integer |
NOT NULL
|
|
usr_birth_year |
integer |
|
|
copy_call_number |
integer |
NOT NULL
|
|
copy_location |
integer |
NOT NULL
|
|
copy_owning_lib |
integer |
NOT NULL
|
|
copy_circ_lib |
integer |
NOT NULL
|
|
copy_bib_record |
bigint |
NOT NULL
|
|
id |
bigint |
PRIMARY KEY
|
|
xact_start |
timestamp with time zone |
NOT NULL
|
|
xact_finish |
timestamp with time zone |
|
|
target_copy |
bigint |
NOT NULL
|
|
circ_lib |
integer |
NOT NULL
|
|
circ_staff |
integer |
NOT NULL
|
|
checkin_staff |
integer |
|
|
checkin_lib |
integer |
|
|
renewal_remaining |
integer |
NOT NULL
|
|
due_date |
timestamp with time zone |
|
|
stop_fines_time |
timestamp with time zone |
|
|
checkin_time |
timestamp with time zone |
|
|
duration |
interval |
|
|
fine_interval |
interval |
NOT NULL
|
|
recuring_fine |
numeric(6,2) |
|
|
max_fine |
numeric(6,2) |
|
|
phone_renewal |
boolean |
NOT NULL
|
|
desk_renewal |
boolean |
NOT NULL
|
|
opac_renewal |
boolean |
NOT NULL
|
|
duration_rule |
text |
NOT NULL
|
|
recuring_fine_rule |
text |
NOT NULL
|
|
max_fine_rule |
text |
NOT NULL
|
|
stop_fines |
text |
|
|
unrecovered |
boolean |
|
|
create_time |
timestamp with time zone |
|
Index -
Schema action
action.all_circulation Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr_post_code |
text |
|
|
usr_home_ou |
integer |
|
|
usr_profile |
integer |
|
|
usr_birth_year |
integer |
|
|
copy_call_number |
bigint |
|
|
copy_location |
integer |
|
|
copy_owning_lib |
integer |
|
|
copy_circ_lib |
integer |
|
|
copy_bib_record |
bigint |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
target_copy |
bigint |
|
|
circ_lib |
integer |
|
|
circ_staff |
integer |
|
|
checkin_staff |
integer |
|
|
checkin_lib |
integer |
|
|
renewal_remaining |
integer |
|
|
due_date |
timestamp with time zone |
|
|
stop_fines_time |
timestamp with time zone |
|
|
checkin_time |
timestamp with time zone |
|
|
create_time |
timestamp with time zone |
|
|
duration |
interval |
|
|
fine_interval |
interval |
|
|
recuring_fine |
numeric |
|
|
max_fine |
numeric |
|
|
phone_renewal |
boolean |
|
|
desk_renewal |
boolean |
|
|
opac_renewal |
boolean |
|
|
duration_rule |
text |
|
|
recuring_fine_rule |
text |
|
|
max_fine_rule |
text |
|
|
stop_fines |
text |
|
SELECT aged_circulation.id
, aged_circulation.usr_post_code
, aged_circulation.usr_home_ou
, aged_circulation.usr_profile
, aged_circulation.usr_birth_year
, aged_circulation.copy_call_number
, aged_circulation.copy_location
, aged_circulation.copy_owning_lib
, aged_circulation.copy_circ_lib
, aged_circulation.copy_bib_record
, aged_circulation.xact_start
, aged_circulation.xact_finish
, aged_circulation.target_copy
, aged_circulation.circ_lib
, aged_circulation.circ_staff
, aged_circulation.checkin_staff
, aged_circulation.checkin_lib
, aged_circulation.renewal_remaining
, aged_circulation.due_date
, aged_circulation.stop_fines_time
, aged_circulation.checkin_time
, aged_circulation.create_time
, aged_circulation.duration
, aged_circulation.fine_interval
, aged_circulation.recuring_fine
, aged_circulation.max_fine
, aged_circulation.phone_renewal
, aged_circulation.desk_renewal
, aged_circulation.opac_renewal
, aged_circulation.duration_rule
, aged_circulation.recuring_fine_rule
, aged_circulation.max_fine_rule
, aged_circulation.stop_fines
FROM"action".aged_circulation
UNION ALLSELECT circ.id
, COALESCE
(a.post_code
, b.post_code
) AS usr_post_code
, p.home_ou AS usr_home_ou
, p.profile AS usr_profile
, (date_part
('year'::text
, p.dob
)
)::integer AS usr_birth_year
, cp.call_number AS copy_call_number
, cp."location" AS copy_location
, cn.owning_lib AS copy_owning_lib
, cp.circ_lib AS copy_circ_lib
, cn.record AS copy_bib_record
, circ.xact_start
, circ.xact_finish
, circ.target_copy
, circ.circ_lib
, circ.circ_staff
, circ.checkin_staff
, circ.checkin_lib
, circ.renewal_remaining
, circ.due_date
, circ.stop_fines_time
, circ.checkin_time
, circ.create_time
, circ.duration
, circ.fine_interval
, circ.recuring_fine
, circ.max_fine
, circ.phone_renewal
, circ.desk_renewal
, circ.opac_renewal
, circ.duration_rule
, circ.recuring_fine_rule
, circ.max_fine_rule
, circ.stop_fines
FROM (
(
(
(
("action".circulation circ
JOIN asset."copy" cp
ON (
(circ.target_copy = cp.id)
)
)
JOIN asset.call_number cn
ON (
(cp.call_number = cn.id)
)
)
JOIN actor.usr p
ON (
(circ.usr = p.id)
)
)
LEFT JOIN actor.usr_address a
ON (
(p.mailing_address = a.id)
)
)
LEFT JOIN actor.usr_address b
ON (
(p.billing_address = a.id)
)
);
Index -
Schema action
action.billable_cirulations Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
target_copy |
bigint |
|
|
circ_lib |
integer |
|
|
circ_staff |
integer |
|
|
checkin_staff |
integer |
|
|
checkin_lib |
integer |
|
|
renewal_remaining |
integer |
|
|
due_date |
timestamp with time zone |
|
|
stop_fines_time |
timestamp with time zone |
|
|
checkin_time |
timestamp with time zone |
|
|
duration |
interval |
|
|
fine_interval |
interval |
|
|
recuring_fine |
numeric(6,2) |
|
|
max_fine |
numeric(6,2) |
|
|
phone_renewal |
boolean |
|
|
desk_renewal |
boolean |
|
|
opac_renewal |
boolean |
|
|
duration_rule |
text |
|
|
recuring_fine_rule |
text |
|
|
max_fine_rule |
text |
|
|
stop_fines |
text |
|
SELECT circulation.id
, circulation.usr
, circulation.xact_start
, circulation.xact_finish
, circulation.target_copy
, circulation.circ_lib
, circulation.circ_staff
, circulation.checkin_staff
, circulation.checkin_lib
, circulation.renewal_remaining
, circulation.due_date
, circulation.stop_fines_time
, circulation.checkin_time
, circulation.duration
, circulation.fine_interval
, circulation.recuring_fine
, circulation.max_fine
, circulation.phone_renewal
, circulation.desk_renewal
, circulation.opac_renewal
, circulation.duration_rule
, circulation.recuring_fine_rule
, circulation.max_fine_rule
, circulation.stop_fines
FROM"action".circulation
WHERE (circulation.xact_finish IS NULL);
Permissions which apply to action.billable_cirulations
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.circulation Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('money.billable_xact_id_seq'::regclass)
|
actor.usr.id
|
usr |
integer |
NOT NULL
|
|
xact_start |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
xact_finish |
timestamp with time zone |
|
asset.copy.id
|
target_copy |
bigint |
NOT NULL
|
actor.org_unit.id
|
circ_lib |
integer |
NOT NULL
|
|
circ_staff |
integer |
NOT NULL
|
|
checkin_staff |
integer |
|
|
checkin_lib |
integer |
|
|
renewal_remaining |
integer |
NOT NULL
|
|
due_date |
timestamp with time zone |
|
|
stop_fines_time |
timestamp with time zone |
|
|
checkin_time |
timestamp with time zone |
|
|
duration |
interval |
|
|
fine_interval |
interval |
NOT NULL
DEFAULT '1 day'::interval
|
|
recuring_fine |
numeric(6,2) |
|
|
max_fine |
numeric(6,2) |
|
|
phone_renewal |
boolean |
NOT NULL
DEFAULT false
|
|
desk_renewal |
boolean |
NOT NULL
DEFAULT false
|
|
opac_renewal |
boolean |
NOT NULL
DEFAULT false
|
|
duration_rule |
text |
NOT NULL
|
|
recuring_fine_rule |
text |
NOT NULL
|
|
max_fine_rule |
text |
NOT NULL
|
|
stop_fines |
text |
|
|
unrecovered |
boolean |
|
|
create_time |
timestamp with time zone |
DEFAULT now()
|
action.circulation Constraints
Name |
Constraint |
circulation_stop_fines_check |
CHECK (((((((stop_fines = 'CHECKIN'::text) OR (stop_fines = 'CLAIMSRETURNED'::text)) OR (stop_fines = 'LOST'::text)) OR (stop_fines = 'MAXFINES'::text)) OR (stop_fines = 'RENEW'::text)) OR (stop_fines = 'LONGOVERDUE'::text))) |
Permissions which apply to action.circulation
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.hold_copy_map Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
action.hold_request.id
|
hold |
integer |
UNIQUE#1
NOT NULL
|
asset.copy.id
|
target_copy |
bigint |
UNIQUE#1
NOT NULL
|
Permissions which apply to action.hold_copy_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.hold_notification Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
action.hold_request.id
|
hold |
integer |
NOT NULL
|
actor.usr.id
|
notify_staff |
integer |
|
|
notify_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
method |
text |
NOT NULL
|
|
note |
text |
|
Permissions which apply to action.hold_notification
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.hold_request Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
request_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
capture_time |
timestamp with time zone |
|
|
fulfillment_time |
timestamp with time zone |
|
|
checkin_time |
timestamp with time zone |
|
|
return_time |
timestamp with time zone |
|
|
prev_check_time |
timestamp with time zone |
|
|
expire_time |
timestamp with time zone |
|
|
cancel_time |
timestamp with time zone |
|
|
target |
bigint |
NOT NULL
|
asset.copy.id
|
current_copy |
bigint |
|
actor.usr.id
|
fulfillment_staff |
integer |
|
actor.org_unit.id
|
fulfillment_lib |
integer |
|
actor.org_unit.id
|
request_lib |
integer |
NOT NULL
|
actor.usr.id
|
requestor |
integer |
NOT NULL
|
actor.usr.id
|
usr |
integer |
NOT NULL
|
|
selection_ou |
integer |
NOT NULL
|
|
selection_depth |
integer |
NOT NULL
|
actor.org_unit.id
|
pickup_lib |
integer |
NOT NULL
|
|
hold_type |
text |
NOT NULL
|
|
holdable_formats |
text |
|
|
phone_notify |
text |
|
|
email_notify |
boolean |
NOT NULL
DEFAULT true
|
|
frozen |
boolean |
NOT NULL
DEFAULT false
|
|
thaw_date |
timestamp with time zone |
|
action.hold_request Constraints
Name |
Constraint |
hold_request_hold_type_check |
CHECK (((((hold_type = 'M'::text) OR (hold_type = 'T'::text)) OR (hold_type = 'V'::text)) OR (hold_type = 'C'::text))) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to action.hold_request
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.hold_transit_copy Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
PRIMARY KEY
DEFAULT nextval('transit_copy_id_seq'::regclass)
|
|
source_send_time |
timestamp with time zone |
|
|
dest_recv_time |
timestamp with time zone |
|
asset.copy.id
|
target_copy |
bigint |
NOT NULL
|
|
source |
integer |
NOT NULL
|
|
dest |
integer |
NOT NULL
|
|
prev_hop |
integer |
|
|
copy_status |
integer |
NOT NULL
|
|
persistant_transfer |
boolean |
NOT NULL
DEFAULT false
|
action.hold_request.id
|
hold |
integer |
|
Permissions which apply to action.hold_transit_copy
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.in_house_use Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
asset.copy.id
|
item |
bigint |
NOT NULL
|
actor.usr.id
|
staff |
integer |
NOT NULL
|
actor.org_unit.id
|
org_unit |
integer |
NOT NULL
|
|
use_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Permissions which apply to action.in_house_use
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
Permissions which apply to action.non_cat_in_house_use
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
Permissions which apply to action.non_cataloged_circulation
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.open_circ_count_by_circ_mod Structure
F-Key |
Name |
Type |
Description |
|
usr |
integer |
|
|
circ_modifier |
text |
|
|
count |
bigint |
|
SELECT circ.usr
, cp.circ_modifier
, count
(circ.id) AS count
FROM ("action".circulation circ
JOIN asset."copy" cp
ON (
(circ.target_copy = cp.id)
)
)
WHERE (
(circ.checkin_time IS NULL)
AND (
(
(
(circ.stop_fines = 'LOST'::text)
OR (circ.stop_fines =
'LONGOVERDUE'::text
)
)
OR (circ.stop_fines = 'CLAIMSRETURNED'::text)
)
OR (circ.stop_fines IS NULL)
)
)
GROUP BY circ.usr
, cp.circ_modifier;
Index -
Schema action
action.open_circulation Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
target_copy |
bigint |
|
|
circ_lib |
integer |
|
|
circ_staff |
integer |
|
|
checkin_staff |
integer |
|
|
checkin_lib |
integer |
|
|
renewal_remaining |
integer |
|
|
due_date |
timestamp with time zone |
|
|
stop_fines_time |
timestamp with time zone |
|
|
checkin_time |
timestamp with time zone |
|
|
duration |
interval |
|
|
fine_interval |
interval |
|
|
recuring_fine |
numeric(6,2) |
|
|
max_fine |
numeric(6,2) |
|
|
phone_renewal |
boolean |
|
|
desk_renewal |
boolean |
|
|
opac_renewal |
boolean |
|
|
duration_rule |
text |
|
|
recuring_fine_rule |
text |
|
|
max_fine_rule |
text |
|
|
stop_fines |
text |
|
SELECT circulation.id
, circulation.usr
, circulation.xact_start
, circulation.xact_finish
, circulation.target_copy
, circulation.circ_lib
, circulation.circ_staff
, circulation.checkin_staff
, circulation.checkin_lib
, circulation.renewal_remaining
, circulation.due_date
, circulation.stop_fines_time
, circulation.checkin_time
, circulation.duration
, circulation.fine_interval
, circulation.recuring_fine
, circulation.max_fine
, circulation.phone_renewal
, circulation.desk_renewal
, circulation.opac_renewal
, circulation.duration_rule
, circulation.recuring_fine_rule
, circulation.max_fine_rule
, circulation.stop_fines
FROM"action".circulation
WHERE (circulation.checkin_time IS NULL)
ORDER BY circulation.due_date;
Permissions which apply to action.open_circulation
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.survey Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.org_unit.id
|
owner |
integer |
NOT NULL
|
|
start_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
end_date |
timestamp with time zone |
NOT NULL
DEFAULT (now() + '10 years'::interval)
|
|
usr_summary |
boolean |
NOT NULL
DEFAULT false
|
|
opac |
boolean |
NOT NULL
DEFAULT false
|
|
poll |
boolean |
NOT NULL
DEFAULT false
|
|
required |
boolean |
NOT NULL
DEFAULT false
|
|
name |
text |
NOT NULL
|
|
description |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to action.survey
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.survey_answer Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
action.survey_question.id
|
question |
integer |
NOT NULL
|
|
answer |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to action.survey_answer
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.survey_question Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
action.survey.id
|
survey |
integer |
NOT NULL
|
|
question |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to action.survey_question
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.survey_response Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
response_group_id |
integer |
|
|
usr |
integer |
|
action.survey.id
|
survey |
integer |
NOT NULL
|
action.survey_question.id
|
question |
integer |
NOT NULL
|
action.survey_answer.id
|
answer |
integer |
NOT NULL
|
|
answer_date |
timestamp with time zone |
|
|
effective_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Permissions which apply to action.survey_response
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to action.transit_copy
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
action.unfulfilled_hold_list Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
current_copy |
bigint |
NOT NULL
|
|
hold |
integer |
NOT NULL
|
|
circ_lib |
integer |
NOT NULL
|
|
fail_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Permissions which apply to action.unfulfilled_hold_list
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema action
Returns: "trigger"
Language: PLPGSQL
BEGIN
INSERT INTO action.aged_circulation
(id,usr_post_code, usr_home_ou, usr_profile, usr_birth_year, copy_call_number, copy_location,
copy_owning_lib, copy_circ_lib, copy_bib_record, xact_start, xact_finish, target_copy,
circ_lib, circ_staff, checkin_staff, checkin_lib, renewal_remaining, due_date,
stop_fines_time, checkin_time, create_time, duration, fine_interval, recuring_fine,
max_fine, phone_renewal, desk_renewal, opac_renewal, duration_rule, recuring_fine_rule,
max_fine_rule, stop_fines)
SELECT
id,usr_post_code, usr_home_ou, usr_profile, usr_birth_year, copy_call_number, copy_location,
copy_owning_lib, copy_circ_lib, copy_bib_record, xact_start, xact_finish, target_copy,
circ_lib, circ_staff, checkin_staff, checkin_lib, renewal_remaining, due_date,
stop_fines_time, checkin_time, create_time, duration, fine_interval, recuring_fine,
max_fine, phone_renewal, desk_renewal, opac_renewal, duration_rule, recuring_fine_rule,
max_fine_rule, stop_fines
FROM action.all_circulation WHERE id = OLD.id;
RETURN OLD;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
IF OLD.stop_fines IS NULL OR OLD.stop_fines <> NEW.stop_fines THEN
IF NEW.stop_fines = 'CLAIMSRETURNED' THEN
UPDATE actor.usr SET claims_returned_count = claims_returned_count + 1 WHERE id = NEW.usr;
END IF;
IF NEW.stop_fines = 'LOST' THEN
UPDATE asset.copy SET status = 3 WHERE id = NEW.target_copy;
END IF;
END IF;
RETURN NEW;
END;
Returns: integer
Language: PLPGSQL
DECLARE
current_group permission.grp_tree%ROWTYPE;
user_object actor.usr%ROWTYPE;
item_object asset.copy%ROWTYPE;
rec_descriptor metabib.rec_descriptor%ROWTYPE;
current_mp config.circ_matrix_matchpoint%ROWTYPE;
matchpoint config.circ_matrix_matchpoint%ROWTYPE;
BEGIN
SELECT INTO user_object * FROM actor.usr WHERE id = match_user;
SELECT INTO item_object * FROM asset.copy WHERE id = match_item;
SELECT INTO rec_descriptor r.* FROM metabib.rec_descriptor r JOIN asset.call_number c USING (record) WHERE c.id = item_object.call_number;
SELECT INTO current_group * FROM permission.grp_tree WHERE id = user_object.profile;
LOOP
-- for each potential matchpoint for this ou and group ...
FOR current_mp IN
SELECT m.*
FROM config.circ_matrix_matchpoint m
JOIN actor.org_unit_ancestors( context_ou ) d ON (m.org_unit = d.id)
LEFT JOIN actor.org_unit_proximity p ON (p.from_org = context_ou AND p.to_org = d.id)
WHERE m.grp = current_group.id AND m.active
ORDER BY CASE WHEN p.prox IS NULL THEN 999 ELSE p.prox END,
CASE WHEN m.is_renewal = renewal THEN 64 ELSE 0 END +
CASE WHEN m.circ_modifier IS NOT NULL THEN 32 ELSE 0 END +
CASE WHEN m.marc_type IS NOT NULL THEN 16 ELSE 0 END +
CASE WHEN m.marc_form IS NOT NULL THEN 8 ELSE 0 END +
CASE WHEN m.marc_vr_format IS NOT NULL THEN 4 ELSE 0 END +
CASE WHEN m.ref_flag IS NOT NULL THEN 2 ELSE 0 END +
CASE WHEN m.usr_age_lower_bound IS NOT NULL THEN 0.5 ELSE 0 END +
CASE WHEN m.usr_age_upper_bound IS NOT NULL THEN 0.5 ELSE 0 END DESC LOOP
IF current_mp.circ_modifier IS NOT NULL THEN
CONTINUE WHEN current_mp.circ_modifier <> item_object.circ_modifier;
END IF;
IF current_mp.marc_type IS NOT NULL THEN
IF item_object.circ_as_type IS NOT NULL THEN
CONTINUE WHEN current_mp.marc_type <> item_object.circ_as_type;
ELSE
CONTINUE WHEN current_mp.marc_type <> rec_descriptor.item_type;
END IF;
END IF;
IF current_mp.marc_form IS NOT NULL THEN
CONTINUE WHEN current_mp.marc_form <> rec_descriptor.item_form;
END IF;
IF current_mp.marc_vr_format IS NOT NULL THEN
CONTINUE WHEN current_mp.marc_vr_format <> rec_descriptor.vr_format;
END IF;
IF current_mp.ref_flag IS NOT NULL THEN
CONTINUE WHEN current_mp.ref_flag <> item_object.ref;
END IF;
IF current_mp.usr_age_lower_bound IS NOT NULL THEN
CONTINUE WHEN user_object.dob IS NULL OR current_mp.usr_age_lower_bound < age(user_object.dob);
END IF;
IF current_mp.usr_age_upper_bound IS NOT NULL THEN
CONTINUE WHEN user_object.dob IS NULL OR current_mp.usr_age_upper_bound > age(user_object.dob);
END IF;
-- everything was undefined or matched
matchpoint = current_mp;
EXIT WHEN matchpoint.id IS NOT NULL;
END LOOP;
EXIT WHEN current_group.parent IS NULL OR matchpoint.id IS NOT NULL;
SELECT INTO current_group * FROM permission.grp_tree WHERE id = current_group.parent;
END LOOP;
RETURN matchpoint.id;
END;
Returns: integer
Language: PLPGSQL
DECLARE
current_requestor_group permission.grp_tree%ROWTYPE;
root_ou actor.org_unit%ROWTYPE;
requestor_object actor.usr%ROWTYPE;
user_object actor.usr%ROWTYPE;
item_object asset.copy%ROWTYPE;
item_cn_object asset.call_number%ROWTYPE;
rec_descriptor metabib.rec_descriptor%ROWTYPE;
current_mp_weight FLOAT;
matchpoint_weight FLOAT;
tmp_weight FLOAT;
current_mp config.hold_matrix_matchpoint%ROWTYPE;
matchpoint config.hold_matrix_matchpoint%ROWTYPE;
BEGIN
SELECT INTO root_ou * FROM actor.org_unit WHERE parent_ou IS NULL;
SELECT INTO user_object * FROM actor.usr WHERE id = match_user;
SELECT INTO requestor_object * FROM actor.usr WHERE id = match_requestor;
SELECT INTO item_object * FROM asset.copy WHERE id = match_item;
SELECT INTO item_cn_object * FROM asset.call_number WHERE id = item_object.call_number;
SELECT INTO rec_descriptor r.* FROM metabib.rec_descriptor r WHERE r.record = item_cn_object.record;
SELECT INTO current_requestor_group * FROM permission.grp_tree WHERE id = requestor_object.profile;
LOOP
-- for each potential matchpoint for this ou and group ...
FOR current_mp IN
SELECT m.*
FROM config.hold_matrix_matchpoint m
WHERE m.requestor_grp = current_requestor_group.id AND m.active
ORDER BY CASE WHEN m.circ_modifier IS NOT NULL THEN 16 ELSE 0 END +
CASE WHEN m.marc_type IS NOT NULL THEN 8 ELSE 0 END +
CASE WHEN m.marc_form IS NOT NULL THEN 4 ELSE 0 END +
CASE WHEN m.marc_vr_format IS NOT NULL THEN 2 ELSE 0 END +
CASE WHEN m.ref_flag IS NOT NULL THEN 1 ELSE 0 END DESC LOOP
current_mp_weight := 5.0;
IF current_mp.circ_modifier IS NOT NULL THEN
CONTINUE WHEN current_mp.circ_modifier <> item_object.circ_modifier;
END IF;
IF current_mp.marc_type IS NOT NULL THEN
IF item_object.circ_as_type IS NOT NULL THEN
CONTINUE WHEN current_mp.marc_type <> item_object.circ_as_type;
ELSE
CONTINUE WHEN current_mp.marc_type <> rec_descriptor.item_type;
END IF;
END IF;
IF current_mp.marc_form IS NOT NULL THEN
CONTINUE WHEN current_mp.marc_form <> rec_descriptor.item_form;
END IF;
IF current_mp.marc_vr_format IS NOT NULL THEN
CONTINUE WHEN current_mp.marc_vr_format <> rec_descriptor.vr_format;
END IF;
IF current_mp.ref_flag IS NOT NULL THEN
CONTINUE WHEN current_mp.ref_flag <> item_object.ref;
END IF;
-- caclulate the rule match weight
IF current_mp.item_owning_ou IS NOT NULL AND current_mp.item_owning_ou <> root_ou.id THEN
SELECT INTO tmp_weight 1.0 / (actor.org_unit_proximity(current_mp.item_owning_ou, item_cn_object.owning_lib)::FLOAT + 1.0)::FLOAT;
current_mp_weight := current_mp_weight - tmp_weight;
END IF;
IF current_mp.item_circ_ou IS NOT NULL AND current_mp.item_circ_ou <> root_ou.id THEN
SELECT INTO tmp_weight 1.0 / (actor.org_unit_proximity(current_mp.item_circ_ou, item_object.circ_lib)::FLOAT + 1.0)::FLOAT;
current_mp_weight := current_mp_weight - tmp_weight;
END IF;
IF current_mp.pickup_ou IS NOT NULL AND current_mp.pickup_ou <> root_ou.id THEN
SELECT INTO tmp_weight 1.0 / (actor.org_unit_proximity(current_mp.pickup_ou, pickup_ou)::FLOAT + 1.0)::FLOAT;
current_mp_weight := current_mp_weight - tmp_weight;
END IF;
IF current_mp.request_ou IS NOT NULL AND current_mp.request_ou <> root_ou.id THEN
SELECT INTO tmp_weight 1.0 / (actor.org_unit_proximity(current_mp.request_ou, request_ou)::FLOAT + 1.0)::FLOAT;
current_mp_weight := current_mp_weight - tmp_weight;
END IF;
IF current_mp.user_home_ou IS NOT NULL AND current_mp.user_home_ou <> root_ou.id THEN
SELECT INTO tmp_weight 1.0 / (actor.org_unit_proximity(current_mp.user_home_ou, user_object.home_ou)::FLOAT + 1.0)::FLOAT;
current_mp_weight := current_mp_weight - tmp_weight;
END IF;
-- set the matchpoint if we found the best one
IF matchpoint_weight IS NULL OR matchpoint_weight > current_mp_weight THEN
matchpoint = current_mp;
matchpoint_weight = current_mp_weight;
END IF;
END LOOP;
EXIT WHEN current_requestor_group.parent IS NULL OR matchpoint.id IS NOT NULL;
SELECT INTO current_requestor_group * FROM permission.grp_tree WHERE id = current_requestor_group.parent;
END LOOP;
RETURN matchpoint.id;
END;
Returns: SET OF "action".matrix_test_result
Language: PLPGSQL
DECLARE
matchpoint_id INT;
user_object actor.usr%ROWTYPE;
age_protect_object config.rule_age_hold_protect%ROWTYPE;
transit_range_ou_type actor.org_unit_type%ROWTYPE;
transit_source actor.org_unit%ROWTYPE;
item_object asset.copy%ROWTYPE;
result action.matrix_test_result;
hold_test config.hold_matrix_test%ROWTYPE;
hold_count INT;
hold_transit_prox INT;
frozen_hold_count INT;
patron_penalties INT;
done BOOL := FALSE;
BEGIN
SELECT INTO user_object * FROM actor.usr WHERE id = match_user;
-- Fail if we couldn't find a user
IF user_object.id IS NULL THEN
result.fail_part := 'no_user';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
RETURN;
END IF;
-- Fail if user is barred
IF user_object.barred IS TRUE THEN
result.fail_part := 'actor.usr.barred';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
RETURN;
END IF;
SELECT INTO item_object * FROM asset.copy WHERE id = match_item;
-- Fail if we couldn't find a copy
IF item_object.id IS NULL THEN
result.fail_part := 'no_item';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
RETURN;
END IF;
SELECT INTO matchpoint_id action.find_hold_matrix_matchpoint(pickup_ou, request_ou, match_item, match_user, match_requestor);
-- Fail if we couldn't find any matchpoint (requires a default)
IF matchpoint_id IS NULL THEN
result.fail_part := 'no_matchpoint';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
RETURN;
END IF;
SELECT INTO hold_test * FROM config.hold_matrix_test WHERE matchpoint = matchpoint_id;
result.matchpoint := matchpoint_id;
result.success := TRUE;
IF hold_test.holdable IS FALSE THEN
result.fail_part := 'config.hold_matrix_test.holdable';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
IF hold_test.transit_range IS NOT NULL THEN
SELECT INTO transit_range_ou_type * FROM actor.org_unit_type WHERE id = hold_test.transit_range;
IF hold_test.distance_is_from_owner THEN
SELECT INTO transit_source ou.* FROM actor.org_unit ou JOIN asset.call_number cn ON (cn.owning_lib = ou.id) WHERE cn.id = item_object.call_number;
ELSE
SELECT INTO transit_source * FROM actor.org_unit WHERE id = item_object.circ_lib;
END IF;
PERFORM * FROM actor.org_unit_descendants( transit_source.id, transit_range_ou_type.depth ) WHERE id = pickup_ou;
IF NOT FOUND THEN
result.fail_part := 'transit_range';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
END IF;
IF hold_test.stop_blocked_user IS TRUE THEN
SELECT INTO patron_penalties COUNT(*)
FROM actor.usr_standing_penalty
WHERE usr = match_user;
IF items_out > 0 THEN
result.fail_part := 'config.hold_matrix_test.stop_blocked_user';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
END IF;
IF hold_test.max_holds IS NOT NULL THEN
SELECT INTO hold_count COUNT(*)
FROM action.hold_request
WHERE usr = match_user
AND fulfillment_time IS NULL
AND cancel_time IS NULL
AND CASE WHEN hold_test.include_frozen_holds THEN TRUE ELSE frozen IS FALSE END;
IF items_out >= hold_test.max_holds THEN
result.fail_part := 'config.hold_matrix_test.max_holds';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
END IF;
IF item_object.age_protect IS NOT NULL THEN
SELECT INTO age_protect_object * FROM config.rule_age_hold_protect WHERE id = item_object.age_protect;
IF item_object.create_date + age_protect_object.age > NOW() THEN
IF hold_test.distance_is_from_owner THEN
SELECT INTO hold_transit_prox prox FROM actor.org_unit_prox WHERE from_org = item_cn_object.owning_lib AND to_org = pickup_ou;
ELSE
SELECT INTO hold_transit_prox prox FROM actor.org_unit_prox WHERE from_org = item_object.circ_lib AND to_org = pickup_ou;
END IF;
IF hold_transit_prox > age_protect_object.prox THEN
result.fail_part := 'config.rule_age_hold_protect.prox';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
END IF;
END IF;
IF NOT done THEN
RETURN NEXT result;
END IF;
RETURN;
END;
Returns: SET OF "action".matrix_test_result
Language: PLPGSQL
DECLARE
matchpoint_id INT;
user_object actor.usr%ROWTYPE;
item_object asset.copy%ROWTYPE;
item_status_object config.copy_status%ROWTYPE;
item_location_object asset.copy_location%ROWTYPE;
result action.matrix_test_result;
circ_test config.circ_matrix_test%ROWTYPE;
out_by_circ_mod config.circ_matrix_circ_mod_test%ROWTYPE;
items_out INT;
items_overdue INT;
overdue_orgs INT[];
current_fines NUMERIC(8,2) := 0.0;
tmp_fines NUMERIC(8,2);
tmp_groc RECORD;
tmp_circ RECORD;
done BOOL := FALSE;
BEGIN
result.success := TRUE;
-- Fail if the user is BARRED
SELECT INTO user_object * FROM actor.usr WHERE id = match_user;
-- Fail if we couldn't find a user
IF user_object.id IS NULL THEN
result.fail_part := 'no_user';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
RETURN;
END IF;
IF user_object.barred IS TRUE THEN
result.fail_part := 'actor.usr.barred';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
-- Fail if the item can't circulate
SELECT INTO item_object * FROM asset.copy WHERE id = match_item;
IF item_object.circulate IS FALSE THEN
result.fail_part := 'asset.copy.circulate';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
-- Fail if the item isn't in a circulateable status on a non-renewal
IF NOT renewal AND item_object.status NOT IN ( 0, 7, 8 ) THEN
result.fail_part := 'asset.copy.status';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
ELSIF renewal AND item_object.status <> 1 THEN
result.fail_part := 'asset.copy.status';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
-- Fail if the item can't circulate because of the shelving location
SELECT INTO item_location_object * FROM asset.copy_location WHERE id = item_object.location;
IF item_location_object.circulate IS FALSE THEN
result.fail_part := 'asset.copy_location.circulate';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
SELECT INTO matchpoint_id action.find_circ_matrix_matchpoint(circ_ou, match_item, match_user, renewal);
result.matchpoint := matchpoint_id;
SELECT INTO circ_test * from config.circ_matrix_test WHERE matchpoint = result.matchpoint;
IF circ_test.org_depth IS NOT NULL THEN
SELECT INTO overdue_orgs ARRAY_ACCUM(id) FROM actor.org_unit_descendants( circ_ou, circ_test.org_depth );
END IF;
-- Fail if we couldn't find a set of tests
IF result.matchpoint IS NULL THEN
result.fail_part := 'no_matchpoint';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
-- Fail if the test is set to hard non-circulating
IF circ_test.circulate IS FALSE THEN
result.fail_part := 'config.circ_matrix_test.circulate';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
-- Fail if the user has too many items checked out
IF circ_test.max_items_out IS NOT NULL THEN
SELECT INTO items_out COUNT(*)
FROM action.circulation
WHERE usr = match_user
AND (circ_test.org_depth IS NULL OR (circ_test.org_depth IS NOT NULL AND circ_lib IN ( SELECT * FROM explode_array(overdue_orgs) )))
AND checkin_time IS NULL
AND (stop_fines IN ('MAXFINES','LONGOVERDUE') OR stop_fines IS NULL);
IF items_out >= circ_test.max_items_out THEN
result.fail_part := 'config.circ_matrix_test.max_items_out';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
END IF;
-- Fail if the user has too many items with specific circ_modifiers checked out
FOR out_by_circ_mod IN SELECT * FROM config.circ_matrix_circ_mod_test WHERE matchpoint = matchpoint_id LOOP
SELECT INTO items_out COUNT(*)
FROM action.circulation circ
JOIN asset.copy cp ON (cp.id = circ.target_copy)
WHERE circ.usr = match_user
AND (circ_test.org_depth IS NULL OR (circ_test.org_depth IS NOT NULL AND circ_lib IN ( SELECT * FROM explode_array(overdue_orgs) )))
AND circ.checkin_time IS NULL
AND (circ.stop_fines IN ('MAXFINES','LONGOVERDUE') OR circ.stop_fines IS NULL)
AND cp.circ_modifier = out_by_circ_mod.circ_mod;
IF items_out >= out_by_circ_mod.items_out THEN
result.fail_part := 'config.circ_matrix_circ_mod_test';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
END LOOP;
-- Fail if the user has too many overdue items
IF circ_test.max_overdue IS NOT NULL THEN
SELECT INTO items_overdue COUNT(*)
FROM action.circulation
WHERE usr = match_user
AND (circ_test.org_depth IS NULL OR (circ_test.org_depth IS NOT NULL AND circ_lib IN ( SELECT * FROM explode_array(overdue_orgs) )))
AND checkin_time IS NULL
AND due_date < NOW()
AND (stop_fines IN ('MAXFINES','LONGOVERDUE') OR stop_fines IS NULL);
IF items_overdue >= circ_test.max_overdue THEN
result.fail_part := 'config.circ_matrix_test.max_overdue';
result.success := FALSE;
done := TRUE;
RETURN NEXT result;
END IF;
END IF;
-- Fail if the user has a high fine balance
IF circ_test.max_fines IS NOT NULL THEN
FOR tmp_groc IN SELECT * FROM money.grocery WHERE usr = match_usr AND xact_finish IS NULL AND (circ_test.org_depth IS NULL OR (circ_test.org_depth IS NOT NULL AND billing_location IN ( SELECT * FROM explode_array(overdue_orgs) ))) LOOP
SELECT INTO tmp_fines SUM( amount ) FROM money.billing WHERE xact = tmp_groc.id AND NOT voided;
current_fines = current_fines + COALESCE(tmp_fines, 0.0);
SELECT INTO tmp_fines SUM( amount ) FROM money.payment WHERE xact = tmp_groc.id AND NOT voided;
current_fines = current_fines - COALESCE(tmp_fines, 0.0);
END LOOP;
FOR tmp_circ IN SELECT * FROM action.circulation WHERE usr = match_usr AND xact_finish IS NULL AND (circ_test.org_depth IS NULL OR (circ_test.org_depth IS NOT NULL AND circ_lib IN ( SELECT * FROM explode_array(overdue_orgs) ))) LOOP
SELECT INTO tmp_fines SUM( amount ) FROM money.billing WHERE xact = tmp_circ.id AND NOT voided;
current_fines = current_fines + COALESCE(tmp_fines, 0.0);
SELECT INTO tmp_fines SUM( amount ) FROM money.payment WHERE xact = tmp_circ.id AND NOT voided;
current_fines = current_fines - COALESCE(tmp_fines, 0.0);
END LOOP;
IF current_fines >= circ_test.max_fines THEN
result.fail_part := 'config.circ_matrix_test.max_fines';
result.success := FALSE;
RETURN NEXT result;
done := TRUE;
END IF;
END IF;
-- If we passed everything, return the successful matchpoint id
IF NOT done THEN
RETURN NEXT result;
END IF;
RETURN;
END;
Returns: SET OF "action".matrix_test_result
Language: SQL
SELECT * FROM action.item_user_circ_test( $1, $2, $3, FALSE );
Returns: SET OF "action".matrix_test_result
Language: SQL
SELECT * FROM action.item_user_circ_test( $1, $2, $3, TRUE );
Returns: "trigger"
Language: PLPGSQL
BEGIN
NEW.answer_date := NOW();
RETURN NEW;
END;
Schema actor
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander
*
* Schema: actor
*
* Holds all tables pertaining to users and libraries (org units).
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Library Cards
*
* Each User has one or more library cards. The current "main"
* card is linked to here from the actor.usr table, and it is up
* to the consortium policy whether more than one card can be
* active for any one user at a given time.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
actor.card Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
NOT NULL
|
|
barcode |
text |
UNIQUE
NOT NULL
|
|
active |
boolean |
NOT NULL
DEFAULT true
|
Permissions which apply to actor.card
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.hours_of_operation Structure
F-Key |
Name |
Type |
Description |
actor.org_unit.id
|
id |
integer |
PRIMARY KEY
|
|
dow_0_open |
time without time zone |
NOT NULL
DEFAULT '09:00:00'::time without time zone
|
|
dow_0_close |
time without time zone |
NOT NULL
DEFAULT '17:00:00'::time without time zone
|
|
dow_1_open |
time without time zone |
NOT NULL
DEFAULT '09:00:00'::time without time zone
|
|
dow_1_close |
time without time zone |
NOT NULL
DEFAULT '17:00:00'::time without time zone
|
|
dow_2_open |
time without time zone |
NOT NULL
DEFAULT '09:00:00'::time without time zone
|
|
dow_2_close |
time without time zone |
NOT NULL
DEFAULT '17:00:00'::time without time zone
|
|
dow_3_open |
time without time zone |
NOT NULL
DEFAULT '09:00:00'::time without time zone
|
|
dow_3_close |
time without time zone |
NOT NULL
DEFAULT '17:00:00'::time without time zone
|
|
dow_4_open |
time without time zone |
NOT NULL
DEFAULT '09:00:00'::time without time zone
|
|
dow_4_close |
time without time zone |
NOT NULL
DEFAULT '17:00:00'::time without time zone
|
|
dow_5_open |
time without time zone |
NOT NULL
DEFAULT '09:00:00'::time without time zone
|
|
dow_5_close |
time without time zone |
NOT NULL
DEFAULT '17:00:00'::time without time zone
|
|
dow_6_open |
time without time zone |
NOT NULL
DEFAULT '09:00:00'::time without time zone
|
|
dow_6_close |
time without time zone |
NOT NULL
DEFAULT '17:00:00'::time without time zone
|
Permissions which apply to actor.hours_of_operation
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.org_address Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
valid |
boolean |
NOT NULL
DEFAULT true
|
|
address_type |
text |
NOT NULL
DEFAULT 'MAILING'::text
|
actor.org_unit.id
|
org_unit |
integer |
NOT NULL
|
|
street1 |
text |
NOT NULL
|
|
street2 |
text |
|
|
city |
text |
NOT NULL
|
|
county |
text |
|
|
state |
text |
NOT NULL
|
|
country |
text |
NOT NULL
|
|
post_code |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to actor.org_address
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.org_lasso Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
|
Tables referencing this one via Foreign Key Constraints:
Index -
Schema actor
Index -
Schema actor
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to actor.org_unit
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.org_unit_closed Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.org_unit.id
|
org_unit |
integer |
NOT NULL
|
|
close_start |
timestamp with time zone |
NOT NULL
|
|
close_end |
timestamp with time zone |
NOT NULL
|
|
reason |
text |
|
Permissions which apply to actor.org_unit_closed
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.org_unit_proximity Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
from_org |
integer |
|
|
to_org |
integer |
|
|
prox |
integer |
|
Permissions which apply to actor.org_unit_proximity
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Org Unit settings
*
* This table contains any arbitrary settings that a client
* program would like to save for an org unit.
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
actor.org_unit_setting Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.org_unit.id
|
org_unit |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
value |
text |
NOT NULL
|
Permissions which apply to actor.org_unit_setting
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.org_unit_type Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
NOT NULL
|
|
opac_label |
text |
NOT NULL
|
|
depth |
integer |
NOT NULL
|
actor.org_unit_type.id
|
parent |
integer |
|
|
can_have_vols |
boolean |
NOT NULL
DEFAULT true
|
|
can_have_users |
boolean |
NOT NULL
DEFAULT true
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to actor.org_unit_type
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* User Statistical Catagories
*
* Local data collected about Users is placed into a Statistical
* Catagory. Here's where those catagories are defined.
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
actor.stat_cat Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.org_unit.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
opac_visible |
boolean |
NOT NULL
DEFAULT false
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to actor.stat_cat
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* User Statistical Catagory Entries
*
* Local data collected about Users is placed into a Statistical
* Catagory. Each library can create entries into any of it's own
* stat_cats, it's anscestors stat_cats, or it's descendants' stat_cats.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
actor.stat_cat_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.stat_cat.id
|
stat_cat |
integer |
UNIQUE#1
NOT NULL
|
actor.org_unit.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
value |
text |
UNIQUE#1
NOT NULL
|
Permissions which apply to actor.stat_cat_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Statistical Catagory Entry to User map
*
* Records the stat_cat entries for each user.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
actor.stat_cat_entry_usr_map Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
stat_cat_entry |
text |
NOT NULL
|
actor.stat_cat.id
|
stat_cat |
integer |
UNIQUE#1
NOT NULL
|
actor.usr.id
|
target_usr |
integer |
UNIQUE#1
NOT NULL
|
Permissions which apply to actor.stat_cat_entry_usr_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* User objects
*
* This table contains the core User objects that describe both
* staff members and patrons. The difference between the two
* types of users is based on the user's permissions.
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
actor.usr Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
card |
integer |
UNIQUE
|
|
profile |
integer |
NOT NULL
|
|
usrname |
text |
UNIQUE
NOT NULL
|
|
email |
text |
|
|
passwd |
text |
NOT NULL
|
|
standing |
integer |
NOT NULL
DEFAULT 1
|
config.identification_type.id
|
ident_type |
integer |
NOT NULL
|
|
ident_value |
text |
|
config.identification_type.id
|
ident_type2 |
integer |
|
|
ident_value2 |
text |
|
config.net_access_level.id
|
net_access_level |
integer |
NOT NULL
DEFAULT 1
|
|
photo_url |
text |
|
|
prefix |
text |
|
|
first_given_name |
text |
NOT NULL
|
|
second_given_name |
text |
|
|
family_name |
text |
NOT NULL
|
|
suffix |
text |
|
|
day_phone |
text |
|
|
evening_phone |
text |
|
|
other_phone |
text |
|
actor.usr_address.id
|
mailing_address |
integer |
|
actor.usr_address.id
|
billing_address |
integer |
|
actor.org_unit.id
|
home_ou |
integer |
NOT NULL
|
|
dob |
timestamp with time zone |
|
|
active |
boolean |
NOT NULL
DEFAULT true
|
|
master_account |
boolean |
NOT NULL
DEFAULT false
|
|
super_user |
boolean |
NOT NULL
DEFAULT false
|
|
barred |
boolean |
NOT NULL
DEFAULT false
|
|
deleted |
boolean |
NOT NULL
DEFAULT false
|
|
usrgroup |
serial |
NOT NULL
|
|
claims_returned_count |
integer |
NOT NULL
|
|
credit_forward_balance |
numeric(6,2) |
NOT NULL
DEFAULT 0.00
|
|
last_xact_id |
text |
NOT NULL
DEFAULT 'none'::text
|
|
alert_message |
text |
|
|
create_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
expire_date |
timestamp with time zone |
NOT NULL
DEFAULT (now() + '3 years'::interval)
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to actor.usr
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.usr_address Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
valid |
boolean |
NOT NULL
DEFAULT true
|
|
within_city_limits |
boolean |
NOT NULL
DEFAULT true
|
|
address_type |
text |
NOT NULL
DEFAULT 'MAILING'::text
|
actor.usr.id
|
usr |
integer |
NOT NULL
|
|
street1 |
text |
NOT NULL
|
|
street2 |
text |
|
|
city |
text |
NOT NULL
|
|
county |
text |
|
|
state |
text |
NOT NULL
|
|
country |
text |
NOT NULL
|
|
post_code |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to actor.usr_address
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.usr_note Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.usr.id
|
usr |
bigint |
NOT NULL
|
actor.usr.id
|
creator |
bigint |
NOT NULL
|
|
create_date |
timestamp with time zone |
DEFAULT now()
|
|
pub |
boolean |
NOT NULL
DEFAULT false
|
|
title |
text |
NOT NULL
|
|
value |
text |
NOT NULL
|
Permissions which apply to actor.usr_note
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.usr_org_unit_opt_in Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.org_unit.id
|
org_unit |
integer |
UNIQUE#1
NOT NULL
|
actor.usr.id
|
usr |
integer |
UNIQUE#1
NOT NULL
|
actor.usr.id
|
staff |
integer |
NOT NULL
|
|
opt_in_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
actor.workstation.id
|
opt_in_ws |
integer |
NOT NULL
|
Index -
Schema actor
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* User settings
*
* This table contains any arbitrary settings that a client
* program would like to save for a user.
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
actor.usr_setting Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
value |
text |
NOT NULL
|
Permissions which apply to actor.usr_setting
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* User standing penalties
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
actor.usr_standing_penalty Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
NOT NULL
|
|
penalty_type |
text |
NOT NULL
|
Permissions which apply to actor.usr_standing_penalty
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
actor.workstation Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
actor.org_unit.id
|
owning_lib |
integer |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to actor.workstation
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema actor
Returns: "trigger"
Language: PLPGSQL
BEGIN
NEW.passwd = MD5( NEW.passwd );
RETURN NEW;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
IF NEW.passwd <> OLD.passwd THEN
NEW.passwd = MD5( NEW.passwd );
END IF;
RETURN NEW;
END;
Returns: org_unit
Language: SQL
SELECT a.*
FROM actor.org_unit a
WHERE id = ( SELECT FIRST(x.id)
FROM actor.org_unit_ancestors($1) x
JOIN actor.org_unit_type y
ON x.ou_type = y.id AND y.depth = $2);
Returns: SET OF org_unit
Language: SQL
SELECT a.*
FROM connectby('actor.org_unit'::text,'parent_ou'::text,'id'::text,'name'::text,$1::text,100,'.'::text)
AS t(keyid text, parent_keyid text, level int, branch text,pos int)
JOIN actor.org_unit a ON a.id::text = t.keyid::text
ORDER BY CASE WHEN a.parent_ou IS NULL THEN 0 ELSE 1 END, a.name;
Returns: SET OF org_unit
Language: SQL
SELECT *
FROM actor.org_unit_ancestors($1)
UNION
SELECT *
FROM actor.org_unit_ancestors($2);
Returns: SET OF org_unit
Language: SQL
SELECT *
FROM actor.org_unit_ancestors($1)
INTERSECT
SELECT *
FROM actor.org_unit_ancestors($2);
Returns: SET OF org_unit
Language: SQL
SELECT a.*
FROM connectby('actor.org_unit'::text,'id'::text,'parent_ou'::text,'name'::text,$1::text,100,'.'::text)
AS t(keyid text, parent_keyid text, level int, branch text,pos int)
JOIN actor.org_unit a ON a.id::text = t.keyid::text
ORDER BY CASE WHEN a.parent_ou IS NULL THEN 0 ELSE 1 END, a.name;
Returns: SET OF org_unit
Language: SQL
SELECT a.*
FROM connectby('actor.org_unit'::text,'id'::text,'parent_ou'::text,'name'::text,
(SELECT x.id
FROM actor.org_unit_ancestors($1) x
JOIN actor.org_unit_type y ON x.ou_type = y.id
WHERE y.depth = $2)::text
,100,'.'::text)
AS t(keyid text, parent_keyid text, level int, branch text,pos int)
JOIN actor.org_unit a ON a.id::text = t.keyid::text
ORDER BY CASE WHEN a.parent_ou IS NULL THEN 0 ELSE 1 END, a.name;
Returns: SET OF org_unit
Language: SQL
SELECT *
FROM actor.org_unit_ancestors($1)
UNION
SELECT *
FROM actor.org_unit_descendants($1);
Returns: SET OF org_unit
Language: SQL
SELECT * FROM actor.org_unit_full_path((actor.org_unit_ancestor_at_depth($1, $2)).id)
Returns: integer
Language: SQL
SELECT COUNT(id)::INT FROM (
SELECT id FROM actor.org_unit_combined_ancestors($1, $2)
EXCEPT
SELECT id FROM actor.org_unit_common_ancestors($1, $2)
) z;
Schema asset
asset.call_number Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.usr.id
|
creator |
bigint |
NOT NULL
|
|
create_date |
timestamp with time zone |
DEFAULT now()
|
actor.usr.id
|
editor |
bigint |
NOT NULL
|
|
edit_date |
timestamp with time zone |
DEFAULT now()
|
biblio.record_entry.id
|
record |
bigint |
NOT NULL
|
actor.org_unit.id
|
owning_lib |
integer |
NOT NULL
|
|
label |
text |
NOT NULL
|
|
deleted |
boolean |
NOT NULL
DEFAULT false
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to asset.call_number
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.call_number_note Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
asset.call_number.id
|
call_number |
bigint |
NOT NULL
|
actor.usr.id
|
creator |
bigint |
NOT NULL
|
|
create_date |
timestamp with time zone |
DEFAULT now()
|
|
pub |
boolean |
NOT NULL
DEFAULT false
|
|
title |
text |
NOT NULL
|
|
value |
text |
NOT NULL
|
Permissions which apply to asset.call_number_note
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.copy Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.org_unit.id
|
circ_lib |
integer |
NOT NULL
|
actor.usr.id
|
creator |
bigint |
NOT NULL
|
asset.call_number.id
|
call_number |
bigint |
NOT NULL
|
actor.usr.id
|
editor |
bigint |
NOT NULL
|
|
create_date |
timestamp with time zone |
DEFAULT now()
|
|
edit_date |
timestamp with time zone |
DEFAULT now()
|
|
copy_number |
integer |
|
config.copy_status.id
|
status |
integer |
NOT NULL
|
asset.copy_location.id
|
location |
integer |
NOT NULL
DEFAULT 1
|
|
loan_duration |
integer |
NOT NULL
|
|
fine_level |
integer |
NOT NULL
|
|
age_protect |
integer |
|
|
circulate |
boolean |
NOT NULL
DEFAULT true
|
|
deposit |
boolean |
NOT NULL
DEFAULT false
|
|
ref |
boolean |
NOT NULL
DEFAULT false
|
|
holdable |
boolean |
NOT NULL
DEFAULT true
|
|
deposit_amount |
numeric(6,2) |
NOT NULL
DEFAULT 0.00
|
|
price |
numeric(8,2) |
|
|
barcode |
text |
NOT NULL
|
config.circ_modifier.code
|
circ_modifier |
text |
|
|
circ_as_type |
text |
|
|
dummy_title |
text |
|
|
dummy_author |
text |
|
|
alert_message |
text |
|
|
opac_visible |
boolean |
NOT NULL
DEFAULT true
|
|
deleted |
boolean |
NOT NULL
DEFAULT false
|
asset.copy Constraints
Name |
Constraint |
copy_fine_level_check |
CHECK ((((fine_level = 1) OR (fine_level = 2)) OR (fine_level = 3))) |
copy_loan_duration_check |
CHECK ((((loan_duration = 1) OR (loan_duration = 2)) OR (loan_duration = 3))) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to asset.copy
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.copy_location Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE#1
NOT NULL
|
actor.org_unit.id
|
owning_lib |
integer |
UNIQUE#1
NOT NULL
|
|
holdable |
boolean |
NOT NULL
DEFAULT true
|
|
opac_visible |
boolean |
NOT NULL
DEFAULT true
|
|
circulate |
boolean |
NOT NULL
DEFAULT true
|
|
hold_verify |
boolean |
NOT NULL
DEFAULT false
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to asset.copy_location
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.copy_note Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
asset.copy.id
|
owning_copy |
bigint |
NOT NULL
|
actor.usr.id
|
creator |
bigint |
NOT NULL
|
|
create_date |
timestamp with time zone |
DEFAULT now()
|
|
pub |
boolean |
NOT NULL
DEFAULT false
|
|
title |
text |
NOT NULL
|
|
value |
text |
NOT NULL
|
Permissions which apply to asset.copy_note
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.copy_tranparency_map Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
asset.copy_transparency.id
|
tansparency |
integer |
NOT NULL
|
asset.copy.id
|
target_copy |
integer |
UNIQUE
NOT NULL
|
Permissions which apply to asset.copy_tranparency_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.copy_transparency Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
deposit_amount |
numeric(6,2) |
|
actor.org_unit.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
actor.org_unit.id
|
circ_lib |
integer |
|
|
loan_duration |
integer |
|
|
fine_level |
integer |
|
|
holdable |
boolean |
|
|
circulate |
boolean |
|
|
deposit |
boolean |
|
|
ref |
boolean |
|
|
opac_visible |
boolean |
|
|
circ_modifier |
text |
|
|
circ_as_type |
text |
|
|
name |
text |
UNIQUE#1
NOT NULL
|
asset.copy_transparency Constraints
Name |
Constraint |
copy_transparency_fine_level_check |
CHECK ((((fine_level = 1) OR (fine_level = 2)) OR (fine_level = 3))) |
copy_transparency_loan_duration_check |
CHECK ((((loan_duration = 1) OR (loan_duration = 2)) OR (loan_duration = 3))) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to asset.copy_transparency
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.stat_cat Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.org_unit.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
opac_visible |
boolean |
NOT NULL
DEFAULT false
|
|
name |
text |
UNIQUE#1
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to asset.stat_cat
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.stat_cat_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
asset.stat_cat.id
|
stat_cat |
integer |
UNIQUE#1
NOT NULL
|
actor.org_unit.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
value |
text |
UNIQUE#1
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to asset.stat_cat_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
Permissions which apply to asset.stat_cat_entry_copy_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
asset.stat_cat_entry_transparency_map Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
stat_cat |
integer |
UNIQUE#1
NOT NULL
|
|
stat_cat_entry |
integer |
NOT NULL
|
|
owning_transparency |
integer |
UNIQUE#1
NOT NULL
|
Permissions which apply to asset.stat_cat_entry_transparency_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema asset
Returns: integer
Language: PLPGSQL
DECLARE
moved_cns INT := 0;
source_cn asset.call_number%ROWTYPE;
target_cn asset.call_number%ROWTYPE;
BEGIN
FOR source_cn IN SELECT * FROM asset.call_number WHERE record = source_record LOOP
SELECT INTO target_cn *
FROM asset.call_number
WHERE label = source_cn.label
AND owning_lib = source_cn.owning_lib
AND record = target_record;
IF FOUND THEN
UPDATE asset.copy
SET call_number = target_cn.id
WHERE call_number = source_cn.id;
DELETE FROM asset.call_number
WHERE id = target_cn.id;
ELSE
UPDATE asset.call_number
SET record = target_record
WHERE id = source_cn.id;
END IF;
moved_cns := moved_cns + 1;
END LOOP;
RETURN moved_cns;
END;
Schema auditor
auditor.actor_org_unit_history Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
NOT NULL
|
|
audit_action |
text |
NOT NULL
|
|
id |
integer |
NOT NULL
|
|
parent_ou |
integer |
|
|
ou_type |
integer |
NOT NULL
|
|
ill_address |
integer |
|
|
holds_address |
integer |
|
|
mailing_address |
integer |
|
|
billing_address |
integer |
|
|
shortname |
text |
NOT NULL
|
|
name |
text |
NOT NULL
|
|
email |
text |
|
|
phone |
text |
|
Permissions which apply to auditor.actor_org_unit_history
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.actor_org_unit_lifecycle Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
|
|
audit_action |
text |
|
|
id |
integer |
|
|
parent_ou |
integer |
|
|
ou_type |
integer |
|
|
ill_address |
integer |
|
|
holds_address |
integer |
|
|
mailing_address |
integer |
|
|
billing_address |
integer |
|
|
shortname |
text |
|
|
name |
text |
|
|
email |
text |
|
|
phone |
text |
|
SELECT now
() AS audit_time
,'C' AS audit_action
, org_unit.id
, org_unit.parent_ou
, org_unit.ou_type
, org_unit.ill_address
, org_unit.holds_address
, org_unit.mailing_address
, org_unit.billing_address
, org_unit.shortname
, org_unit.name
, org_unit.email
, org_unit.phone
FROM actor.org_unit
UNION ALLSELECT actor_org_unit_history.audit_time
, actor_org_unit_history.audit_action
, actor_org_unit_history.id
, actor_org_unit_history.parent_ou
, actor_org_unit_history.ou_type
, actor_org_unit_history.ill_address
, actor_org_unit_history.holds_address
, actor_org_unit_history.mailing_address
, actor_org_unit_history.billing_address
, actor_org_unit_history.shortname
, actor_org_unit_history.name
, actor_org_unit_history.email
, actor_org_unit_history.phone
FROM auditor.actor_org_unit_history;
Permissions which apply to auditor.actor_org_unit_lifecycle
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.actor_usr_address_history Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
NOT NULL
|
|
audit_action |
text |
NOT NULL
|
|
id |
integer |
NOT NULL
|
|
valid |
boolean |
NOT NULL
|
|
within_city_limits |
boolean |
NOT NULL
|
|
address_type |
text |
NOT NULL
|
|
usr |
integer |
NOT NULL
|
|
street1 |
text |
NOT NULL
|
|
street2 |
text |
|
|
city |
text |
NOT NULL
|
|
county |
text |
|
|
state |
text |
NOT NULL
|
|
country |
text |
NOT NULL
|
|
post_code |
text |
NOT NULL
|
Permissions which apply to auditor.actor_usr_address_history
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.actor_usr_address_lifecycle Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
|
|
audit_action |
text |
|
|
id |
integer |
|
|
valid |
boolean |
|
|
within_city_limits |
boolean |
|
|
address_type |
text |
|
|
usr |
integer |
|
|
street1 |
text |
|
|
street2 |
text |
|
|
city |
text |
|
|
county |
text |
|
|
state |
text |
|
|
country |
text |
|
|
post_code |
text |
|
SELECT now
() AS audit_time
,'C' AS audit_action
, usr_address.id
, usr_address."valid"
, usr_address.within_city_limits
, usr_address.address_type
, usr_address.usr
, usr_address.street1
, usr_address.street2
, usr_address.city
, usr_address.county
, usr_address.state
, usr_address.country
, usr_address.post_code
FROM actor.usr_address
UNION ALLSELECT actor_usr_address_history.audit_time
, actor_usr_address_history.audit_action
, actor_usr_address_history.id
, actor_usr_address_history."valid"
, actor_usr_address_history.within_city_limits
, actor_usr_address_history.address_type
, actor_usr_address_history.usr
, actor_usr_address_history.street1
, actor_usr_address_history.street2
, actor_usr_address_history.city
, actor_usr_address_history.county
, actor_usr_address_history.state
, actor_usr_address_history.country
, actor_usr_address_history.post_code
FROM auditor.actor_usr_address_history;
Permissions which apply to auditor.actor_usr_address_lifecycle
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.actor_usr_history Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
NOT NULL
|
|
audit_action |
text |
NOT NULL
|
|
id |
integer |
NOT NULL
|
|
card |
integer |
|
|
profile |
integer |
NOT NULL
|
|
usrname |
text |
NOT NULL
|
|
email |
text |
|
|
passwd |
text |
NOT NULL
|
|
standing |
integer |
NOT NULL
|
|
ident_type |
integer |
NOT NULL
|
|
ident_value |
text |
|
|
ident_type2 |
integer |
|
|
ident_value2 |
text |
|
|
net_access_level |
integer |
NOT NULL
|
|
photo_url |
text |
|
|
prefix |
text |
|
|
first_given_name |
text |
NOT NULL
|
|
second_given_name |
text |
|
|
family_name |
text |
NOT NULL
|
|
suffix |
text |
|
|
day_phone |
text |
|
|
evening_phone |
text |
|
|
other_phone |
text |
|
|
mailing_address |
integer |
|
|
billing_address |
integer |
|
|
home_ou |
integer |
NOT NULL
|
|
dob |
timestamp with time zone |
|
|
active |
boolean |
NOT NULL
|
|
master_account |
boolean |
NOT NULL
|
|
super_user |
boolean |
NOT NULL
|
|
barred |
boolean |
NOT NULL
|
|
deleted |
boolean |
NOT NULL
|
|
usrgroup |
integer |
NOT NULL
|
|
claims_returned_count |
integer |
NOT NULL
|
|
credit_forward_balance |
numeric(6,2) |
NOT NULL
|
|
last_xact_id |
text |
NOT NULL
|
|
alert_message |
text |
|
|
create_date |
timestamp with time zone |
NOT NULL
|
|
expire_date |
timestamp with time zone |
NOT NULL
|
Permissions which apply to auditor.actor_usr_history
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.actor_usr_lifecycle Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
|
|
audit_action |
text |
|
|
id |
integer |
|
|
card |
integer |
|
|
profile |
integer |
|
|
usrname |
text |
|
|
email |
text |
|
|
passwd |
text |
|
|
standing |
integer |
|
|
ident_type |
integer |
|
|
ident_value |
text |
|
|
ident_type2 |
integer |
|
|
ident_value2 |
text |
|
|
net_access_level |
integer |
|
|
photo_url |
text |
|
|
prefix |
text |
|
|
first_given_name |
text |
|
|
second_given_name |
text |
|
|
family_name |
text |
|
|
suffix |
text |
|
|
day_phone |
text |
|
|
evening_phone |
text |
|
|
other_phone |
text |
|
|
mailing_address |
integer |
|
|
billing_address |
integer |
|
|
home_ou |
integer |
|
|
dob |
timestamp with time zone |
|
|
active |
boolean |
|
|
master_account |
boolean |
|
|
super_user |
boolean |
|
|
barred |
boolean |
|
|
deleted |
boolean |
|
|
usrgroup |
integer |
|
|
claims_returned_count |
integer |
|
|
credit_forward_balance |
numeric |
|
|
last_xact_id |
text |
|
|
alert_message |
text |
|
|
create_date |
timestamp with time zone |
|
|
expire_date |
timestamp with time zone |
|
SELECT now
() AS audit_time
,'C' AS audit_action
, usr.id
, usr.card
, usr.profile
, usr.usrname
, usr.email
, usr.passwd
, usr.standing
, usr.ident_type
, usr.ident_value
, usr.ident_type2
, usr.ident_value2
, usr.net_access_level
, usr.photo_url
, usr.prefix
, usr.first_given_name
, usr.second_given_name
, usr.family_name
, usr.suffix
, usr.day_phone
, usr.evening_phone
, usr.other_phone
, usr.mailing_address
, usr.billing_address
, usr.home_ou
, usr.dob
, usr.active
, usr.master_account
, usr.super_user
, usr.barred
, usr.deleted
, usr.usrgroup
, usr.claims_returned_count
, usr.credit_forward_balance
, usr.last_xact_id
, usr.alert_message
, usr.create_date
, usr.expire_date
FROM actor.usr
UNION ALLSELECT actor_usr_history.audit_time
, actor_usr_history.audit_action
, actor_usr_history.id
, actor_usr_history.card
, actor_usr_history.profile
, actor_usr_history.usrname
, actor_usr_history.email
, actor_usr_history.passwd
, actor_usr_history.standing
, actor_usr_history.ident_type
, actor_usr_history.ident_value
, actor_usr_history.ident_type2
, actor_usr_history.ident_value2
, actor_usr_history.net_access_level
, actor_usr_history.photo_url
, actor_usr_history.prefix
, actor_usr_history.first_given_name
, actor_usr_history.second_given_name
, actor_usr_history.family_name
, actor_usr_history.suffix
, actor_usr_history.day_phone
, actor_usr_history.evening_phone
, actor_usr_history.other_phone
, actor_usr_history.mailing_address
, actor_usr_history.billing_address
, actor_usr_history.home_ou
, actor_usr_history.dob
, actor_usr_history.active
, actor_usr_history.master_account
, actor_usr_history.super_user
, actor_usr_history.barred
, actor_usr_history.deleted
, actor_usr_history.usrgroup
, actor_usr_history.claims_returned_count
, actor_usr_history.credit_forward_balance
, actor_usr_history.last_xact_id
, actor_usr_history.alert_message
, actor_usr_history.create_date
, actor_usr_history.expire_date
FROM auditor.actor_usr_history;
Permissions which apply to auditor.actor_usr_lifecycle
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.asset_call_number_history Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
NOT NULL
|
|
audit_action |
text |
NOT NULL
|
|
id |
bigint |
NOT NULL
|
|
creator |
bigint |
NOT NULL
|
|
create_date |
timestamp with time zone |
|
|
editor |
bigint |
NOT NULL
|
|
edit_date |
timestamp with time zone |
|
|
record |
bigint |
NOT NULL
|
|
owning_lib |
integer |
NOT NULL
|
|
label |
text |
NOT NULL
|
|
deleted |
boolean |
NOT NULL
|
Permissions which apply to auditor.asset_call_number_history
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.asset_call_number_lifecycle Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
|
|
audit_action |
text |
|
|
id |
bigint |
|
|
creator |
bigint |
|
|
create_date |
timestamp with time zone |
|
|
editor |
bigint |
|
|
edit_date |
timestamp with time zone |
|
|
record |
bigint |
|
|
owning_lib |
integer |
|
|
label |
text |
|
|
deleted |
boolean |
|
SELECT now
() AS audit_time
,'C' AS audit_action
, call_number.id
, call_number.creator
, call_number.create_date
, call_number.editor
, call_number.edit_date
, call_number.record
, call_number.owning_lib
, call_number.label
, call_number.deleted
FROM asset.call_number
UNION ALLSELECT asset_call_number_history.audit_time
, asset_call_number_history.audit_action
, asset_call_number_history.id
, asset_call_number_history.creator
, asset_call_number_history.create_date
, asset_call_number_history.editor
, asset_call_number_history.edit_date
, asset_call_number_history.record
, asset_call_number_history.owning_lib
, asset_call_number_history.label
, asset_call_number_history.deleted
FROM auditor.asset_call_number_history;
Permissions which apply to auditor.asset_call_number_lifecycle
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.asset_copy_history Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
NOT NULL
|
|
audit_action |
text |
NOT NULL
|
|
id |
bigint |
NOT NULL
|
|
circ_lib |
integer |
NOT NULL
|
|
creator |
bigint |
NOT NULL
|
|
call_number |
bigint |
NOT NULL
|
|
editor |
bigint |
NOT NULL
|
|
create_date |
timestamp with time zone |
|
|
edit_date |
timestamp with time zone |
|
|
copy_number |
integer |
|
|
status |
integer |
NOT NULL
|
|
location |
integer |
NOT NULL
|
|
loan_duration |
integer |
NOT NULL
|
|
fine_level |
integer |
NOT NULL
|
|
age_protect |
integer |
|
|
circulate |
boolean |
NOT NULL
|
|
deposit |
boolean |
NOT NULL
|
|
ref |
boolean |
NOT NULL
|
|
holdable |
boolean |
NOT NULL
|
|
deposit_amount |
numeric(6,2) |
NOT NULL
|
|
price |
numeric(8,2) |
NOT NULL
|
|
barcode |
text |
NOT NULL
|
|
circ_modifier |
text |
|
|
circ_as_type |
text |
|
|
dummy_title |
text |
|
|
dummy_author |
text |
|
|
alert_message |
text |
|
|
opac_visible |
boolean |
NOT NULL
|
|
deleted |
boolean |
NOT NULL
|
Permissions which apply to auditor.asset_copy_history
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.asset_copy_lifecycle Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
|
|
audit_action |
text |
|
|
id |
bigint |
|
|
circ_lib |
integer |
|
|
creator |
bigint |
|
|
call_number |
bigint |
|
|
editor |
bigint |
|
|
create_date |
timestamp with time zone |
|
|
edit_date |
timestamp with time zone |
|
|
copy_number |
integer |
|
|
status |
integer |
|
|
location |
integer |
|
|
loan_duration |
integer |
|
|
fine_level |
integer |
|
|
age_protect |
integer |
|
|
circulate |
boolean |
|
|
deposit |
boolean |
|
|
ref |
boolean |
|
|
holdable |
boolean |
|
|
deposit_amount |
numeric |
|
|
price |
numeric |
|
|
barcode |
text |
|
|
circ_modifier |
text |
|
|
circ_as_type |
text |
|
|
dummy_title |
text |
|
|
dummy_author |
text |
|
|
alert_message |
text |
|
|
opac_visible |
boolean |
|
|
deleted |
boolean |
|
SELECT now
() AS audit_time
,'C' AS audit_action
,"copy".id
,"copy".circ_lib
,"copy".creator
,"copy".call_number
,"copy".editor
,"copy".create_date
,"copy".edit_date
,"copy".copy_number
,"copy".status
,"copy"."location"
,"copy".loan_duration
,"copy".fine_level
,"copy".age_protect
,"copy".circulate
,"copy".deposit
,"copy".ref
,"copy".holdable
,"copy".deposit_amount
,"copy".price
,"copy".barcode
,"copy".circ_modifier
,"copy".circ_as_type
,"copy".dummy_title
,"copy".dummy_author
,"copy".alert_message
,"copy".opac_visible
,"copy".deleted
FROM asset."copy"
UNION ALLSELECT asset_copy_history.audit_time
, asset_copy_history.audit_action
, asset_copy_history.id
, asset_copy_history.circ_lib
, asset_copy_history.creator
, asset_copy_history.call_number
, asset_copy_history.editor
, asset_copy_history.create_date
, asset_copy_history.edit_date
, asset_copy_history.copy_number
, asset_copy_history.status
, asset_copy_history."location"
, asset_copy_history.loan_duration
, asset_copy_history.fine_level
, asset_copy_history.age_protect
, asset_copy_history.circulate
, asset_copy_history.deposit
, asset_copy_history.ref
, asset_copy_history.holdable
, asset_copy_history.deposit_amount
, asset_copy_history.price
, asset_copy_history.barcode
, asset_copy_history.circ_modifier
, asset_copy_history.circ_as_type
, asset_copy_history.dummy_title
, asset_copy_history.dummy_author
, asset_copy_history.alert_message
, asset_copy_history.opac_visible
, asset_copy_history.deleted
FROM auditor.asset_copy_history;
Permissions which apply to auditor.asset_copy_lifecycle
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.biblio_record_entry_history Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
NOT NULL
|
|
audit_action |
text |
NOT NULL
|
|
id |
bigint |
NOT NULL
|
|
creator |
integer |
NOT NULL
|
|
editor |
integer |
NOT NULL
|
|
source |
integer |
|
|
quality |
integer |
|
|
create_date |
timestamp with time zone |
NOT NULL
|
|
edit_date |
timestamp with time zone |
NOT NULL
|
|
active |
boolean |
NOT NULL
|
|
deleted |
boolean |
NOT NULL
|
|
fingerprint |
text |
|
|
tcn_source |
text |
NOT NULL
|
|
tcn_value |
text |
NOT NULL
|
|
marc |
text |
NOT NULL
|
|
last_xact_id |
text |
NOT NULL
|
Permissions which apply to auditor.biblio_record_entry_history
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
auditor.biblio_record_entry_lifecycle Structure
F-Key |
Name |
Type |
Description |
|
audit_time |
timestamp with time zone |
|
|
audit_action |
text |
|
|
id |
bigint |
|
|
creator |
integer |
|
|
editor |
integer |
|
|
source |
integer |
|
|
quality |
integer |
|
|
create_date |
timestamp with time zone |
|
|
edit_date |
timestamp with time zone |
|
|
active |
boolean |
|
|
deleted |
boolean |
|
|
fingerprint |
text |
|
|
tcn_source |
text |
|
|
tcn_value |
text |
|
|
marc |
text |
|
|
last_xact_id |
text |
|
SELECT now
() AS audit_time
,'C' AS audit_action
, record_entry.id
, record_entry.creator
, record_entry.editor
, record_entry.source
, record_entry.quality
, record_entry.create_date
, record_entry.edit_date
, record_entry.active
, record_entry.deleted
, record_entry.fingerprint
, record_entry.tcn_source
, record_entry.tcn_value
, record_entry.marc
, record_entry.last_xact_id
FROM biblio.record_entry
UNION ALLSELECT biblio_record_entry_history.audit_time
, biblio_record_entry_history.audit_action
, biblio_record_entry_history.id
, biblio_record_entry_history.creator
, biblio_record_entry_history.editor
, biblio_record_entry_history.source
, biblio_record_entry_history.quality
, biblio_record_entry_history.create_date
, biblio_record_entry_history.edit_date
, biblio_record_entry_history.active
, biblio_record_entry_history.deleted
, biblio_record_entry_history.fingerprint
, biblio_record_entry_history.tcn_source
, biblio_record_entry_history.tcn_value
, biblio_record_entry_history.marc
, biblio_record_entry_history.last_xact_id
FROM auditor.biblio_record_entry_history;
Permissions which apply to auditor.biblio_record_entry_lifecycle
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema auditor
Returns: "trigger"
Language: PLPGSQL
BEGIN
INSERT INTO auditor.actor_org_unit_history
SELECT now(), SUBSTR(TG_OP,1,1), OLD.*;
RETURN NULL;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
INSERT INTO auditor.actor_usr_address_history
SELECT now(), SUBSTR(TG_OP,1,1), OLD.*;
RETURN NULL;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
INSERT INTO auditor.actor_usr_history
SELECT now(), SUBSTR(TG_OP,1,1), OLD.*;
RETURN NULL;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
INSERT INTO auditor.asset_call_number_history
SELECT now(), SUBSTR(TG_OP,1,1), OLD.*;
RETURN NULL;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
INSERT INTO auditor.asset_copy_history
SELECT now(), SUBSTR(TG_OP,1,1), OLD.*;
RETURN NULL;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
INSERT INTO auditor.biblio_record_entry_history
SELECT now(), SUBSTR(TG_OP,1,1), OLD.*;
RETURN NULL;
END;
Returns: boolean
Language: PLPGSQL
BEGIN
EXECUTE $$
CREATE TABLE auditor.$$ || sch || $$_$$ || tbl || $$_history (
audit_time TIMESTAMP WITH TIME ZONE NOT NULL,
audit_action TEXT NOT NULL,
LIKE $$ || sch || $$.$$ || tbl || $$
);
$$;
EXECUTE $$
CREATE FUNCTION auditor.audit_$$ || sch || $$_$$ || tbl || $$_func ()
RETURNS TRIGGER AS $func$
BEGIN
INSERT INTO auditor.$$ || sch || $$_$$ || tbl || $$_history
SELECT now(), SUBSTR(TG_OP,1,1), OLD.*;
RETURN NULL;
END;
$func$ LANGUAGE 'plpgsql';
$$;
EXECUTE $$
CREATE TRIGGER audit_$$ || sch || $$_$$ || tbl || $$_update_trigger
AFTER UPDATE OR DELETE ON $$ || sch || $$.$$ || tbl || $$ FOR EACH ROW
EXECUTE PROCEDURE auditor.audit_$$ || sch || $$_$$ || tbl || $$_func ();
$$;
EXECUTE $$
CREATE VIEW auditor.$$ || sch || $$_$$ || tbl || $$_lifecycle AS
SELECT now() as audit_time, 'C' as audit_action, *
FROM $$ || sch || $$.$$ || tbl || $$
UNION ALL
SELECT *
FROM auditor.$$ || sch || $$_$$ || tbl || $$_history;
$$;
RETURN TRUE;
END;
Schema authority
authority.full_rec Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
record |
bigint |
NOT NULL
|
|
tag |
character(3) |
NOT NULL
|
|
ind1 |
text |
|
|
ind2 |
text |
|
|
subfield |
text |
|
|
value |
text |
NOT NULL
|
|
index_vector |
tsvector |
NOT NULL
|
Permissions which apply to authority.full_rec
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema authority
authority.rec_descriptor Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
record |
bigint |
|
|
record_status |
text |
|
|
char_encoding |
text |
|
Permissions which apply to authority.rec_descriptor
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema authority
authority.record_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
arn_source |
text |
NOT NULL
DEFAULT 'AUTOGEN'::text
|
|
arn_value |
text |
NOT NULL
|
|
creator |
integer |
NOT NULL
DEFAULT 1
|
|
editor |
integer |
NOT NULL
DEFAULT 1
|
|
create_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
edit_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
active |
boolean |
NOT NULL
DEFAULT true
|
|
deleted |
boolean |
NOT NULL
DEFAULT false
|
|
source |
integer |
|
|
marc |
text |
NOT NULL
|
|
last_xact_id |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to authority.record_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema authority
authority.record_note Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
authority.record_entry.id
|
record |
bigint |
NOT NULL
|
|
value |
text |
NOT NULL
|
|
creator |
integer |
NOT NULL
DEFAULT 1
|
|
editor |
integer |
NOT NULL
DEFAULT 1
|
|
create_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
edit_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Permissions which apply to authority.record_note
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema authority
authority.tracing_links Structure
F-Key |
Name |
Type |
Description |
|
record |
bigint |
|
|
main_id |
bigint |
|
|
main_tag |
character(3) |
|
|
main_value |
text |
|
|
relationship |
text |
|
|
use_restriction |
text |
|
|
deprecation |
text |
|
|
display_restriction |
text |
|
|
link_id |
bigint |
|
|
link_tag |
character(3) |
|
|
link_value |
text |
|
SELECT main.record
, main.id AS main_id
, main.tag AS main_tag
, main.value AS main_value
, substr
(link.value
, 1
, 1
) AS relationship
, substr
(link.value
, 2
, 1
) AS use_restriction
, substr
(link.value
, 3
, 1
) AS deprecation
, substr
(link.value
, 4
, 1
) AS display_restriction
, link_value.id AS link_id
, link_value.tag AS link_tag
, link_value.value AS link_value
FROM (
(authority.full_rec main
JOIN authority.full_rec link
ON (
(
(
(link.record = main.record)
AND (
(
(link.tag)::text =
(
(
(main.tag)::integer + 400
)
)::text
)
OR (
(link.tag)::text =
(
(
(main.tag)::integer + 300
)
)::text
)
)
)
AND (link.subfield = 'w'::text)
)
)
)
JOIN authority.full_rec link_value
ON (
(
(
(link_value.record = main.record)
AND (link_value.tag = link.tag)
)
AND (link_value.subfield = 'a'::text)
)
)
)
WHERE (
(
(
(
(
(
(
(
(
(
(
(main.tag = '100'::bpchar)
OR (main.tag = '110'::bpchar)
)
OR (main.tag = '111'::bpchar)
)
OR (main.tag = '130'::bpchar)
)
OR (main.tag = '150'::bpchar)
)
OR (main.tag = '151'::bpchar)
)
OR (main.tag = '155'::bpchar)
)
OR (main.tag = '180'::bpchar)
)
OR (main.tag = '181'::bpchar)
)
OR (main.tag = '182'::bpchar)
)
OR (main.tag = '185'::bpchar)
)
AND (main.subfield = 'a'::text)
);
Permissions which apply to authority.tracing_links
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema authority
Schema biblio
biblio.record_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.usr.id
|
creator |
integer |
NOT NULL
DEFAULT 1
|
actor.usr.id
|
editor |
integer |
NOT NULL
DEFAULT 1
|
|
source |
integer |
|
|
quality |
integer |
|
|
create_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
edit_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
active |
boolean |
NOT NULL
DEFAULT true
|
|
deleted |
boolean |
NOT NULL
DEFAULT false
|
|
fingerprint |
text |
|
|
tcn_source |
text |
NOT NULL
DEFAULT 'AUTOGEN'::text
|
|
tcn_value |
text |
NOT NULL
DEFAULT next_autogen_tcn_value()
|
|
marc |
text |
NOT NULL
|
|
last_xact_id |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to biblio.record_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema biblio
biblio.record_note Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
biblio.record_entry.id
|
record |
bigint |
NOT NULL
|
|
value |
text |
NOT NULL
|
actor.usr.id
|
creator |
integer |
NOT NULL
DEFAULT 1
|
actor.usr.id
|
editor |
integer |
NOT NULL
DEFAULT 1
|
|
pub |
boolean |
NOT NULL
DEFAULT false
|
|
create_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
edit_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Permissions which apply to biblio.record_note
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema biblio
Returns: text
Language: PLPGSQL
BEGIN RETURN 'AUTOGENERATED_' || nextval('biblio.autogen_tcn_value_seq'::TEXT); END;
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander
*
* The config schema holds static configuration data for the
* Open-ILS installation.
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.audience_map Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
|
value |
text |
NOT NULL
|
|
description |
text |
|
Permissions which apply to config.audience_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
config.bib_level_map Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
|
value |
text |
NOT NULL
|
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Valid sources of MARC records
*
* This is table is used to set up the relative "quality" of each
* MARC source, such as OCLC.
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.bib_source Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
quality |
integer |
|
|
source |
text |
UNIQUE
NOT NULL
|
|
transcendant |
boolean |
NOT NULL
DEFAULT false
|
config.bib_source Constraints
Name |
Constraint |
bib_source_quality_check |
CHECK (((quality >= 0) AND (quality <= 100))) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.bib_source
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
Index -
Schema config
Tables referencing this one via Foreign Key Constraints:
Index -
Schema config
Index -
Schema config
config.circ_matrix_test Structure
F-Key |
Name |
Type |
Description |
config.circ_matrix_matchpoint.id
|
matchpoint |
integer |
PRIMARY KEY
|
|
circulate |
boolean |
NOT NULL
DEFAULT true
|
|
max_items_out |
integer |
|
|
max_overdue |
integer |
|
|
max_fines |
numeric(8,2) |
|
|
org_depth |
integer |
|
|
script_test |
text |
|
Index -
Schema config
config.circ_modifier Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
|
description |
text |
NOT NULL
|
|
sip2_media_type |
text |
NOT NULL
|
|
magnetic_media |
boolean |
NOT NULL
DEFAULT true
|
Tables referencing this one via Foreign Key Constraints:
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Copy Statuses
*
* The available copy statuses, and whether a copy in that
* status is available for hold request capture. 0 (zero) is
* the only special number in this set, meaning that the item
* is available for imediate checkout, and is counted as available
* in the OPAC.
*
* Statuses with an ID below 100 are not removable, and have special
* meaning in the code. Do not change them except to translate the
* textual name.
*
* You may add and remove statuses above 100, and these can be used
* to remove items from normal circulation without affecting the rest
* of the copy's values or it's location.
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.copy_status Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
|
holdable |
boolean |
NOT NULL
DEFAULT false
|
|
opac_visible |
boolean |
NOT NULL
DEFAULT false
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.copy_status
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
Tables referencing this one via Foreign Key Constraints:
Index -
Schema config
config.hold_matrix_test Structure
F-Key |
Name |
Type |
Description |
config.hold_matrix_matchpoint.id
|
matchpoint |
integer |
PRIMARY KEY
|
|
holdable |
boolean |
NOT NULL
DEFAULT true
|
|
distance_is_from_owner |
boolean |
NOT NULL
DEFAULT false
|
actor.org_unit_type.id
|
transit_range |
integer |
|
|
max_holds |
integer |
|
|
include_frozen_holds |
boolean |
NOT NULL
DEFAULT true
|
|
stop_blocked_user |
boolean |
NOT NULL
DEFAULT false
|
config.rule_age_hold_protect.id
|
age_hold_protect_rule |
integer |
|
Index -
Schema config
config.i18n_core Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
fq_field |
text |
NOT NULL
|
|
identity_value |
text |
NOT NULL
|
config.i18n_locale.code
|
translation |
text |
NOT NULL
|
|
string |
text |
NOT NULL
|
Index -
Schema config
config.i18n_locale Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
config.language_map.code
|
marc_code |
text |
NOT NULL
|
|
name |
text |
UNIQUE
NOT NULL
|
|
description |
text |
|
Tables referencing this one via Foreign Key Constraints:
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Types of valid patron identification.
*
* Each patron must display at least one valid form of identification
* in order to get a library card. This table lists those forms.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.identification_type Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.identification_type
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
config.item_form_map Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
|
value |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.item_form_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
config.item_type_map Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
|
value |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.item_type_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
config.language_map Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
|
value |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.language_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
config.lit_form_map Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
|
value |
text |
NOT NULL
|
|
description |
text |
|
Permissions which apply to config.lit_form_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* XPath used for WoRMing
*
* This table contains the XPath used to chop up MODS into it's
* indexable parts. Each XPath entry is named and assigned to
* a "class" of either title, subject, author, keyword or series.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.metabib_field Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
field_class |
text |
NOT NULL
|
|
name |
text |
NOT NULL
|
|
xpath |
text |
NOT NULL
|
|
weight |
integer |
NOT NULL
DEFAULT 1
|
|
format |
text |
NOT NULL
DEFAULT 'mods32'::text
|
|
search_field |
boolean |
NOT NULL
DEFAULT true
|
|
facet_field |
boolean |
NOT NULL
DEFAULT false
|
config.metabib_field Constraints
Name |
Constraint |
metabib_field_field_class_check |
CHECK ((((((lower(field_class) = 'title'::text) OR (lower(field_class) = 'author'::text)) OR (lower(field_class) = 'subject'::text)) OR (lower(field_class) = 'keyword'::text)) OR (lower(field_class) = 'series'::text))) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.metabib_field
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Patron Network Access level
*
* This will be used to inform the in-library firewall of how much
* internet access the using patron should be allowed.
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.net_access_level Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.net_access_level
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Types of valid non-cataloged items.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.non_cataloged_type Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
owning_lib |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
circ_duration |
interval |
NOT NULL
DEFAULT '14 days'::interval
|
|
in_house |
boolean |
NOT NULL
DEFAULT false
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.non_cataloged_type
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Hold Item Age Protection rules
*
* A hold request can only capture new(ish) items when they are
* within a particular proximity of the home_ou of the requesting
* user. The proximity ('prox' column) is calculated by counting
* the number of tree edges beween the user's home_ou and the owning_lib
* of the copy that could fulfill the hold.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.rule_age_hold_protect Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
|
age |
interval |
NOT NULL
|
|
prox |
integer |
NOT NULL
|
config.rule_age_hold_protect Constraints
Name |
Constraint |
rule_age_hold_protect_name_check |
CHECK ((name ~ E'^\\w+$'::text)) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.rule_age_hold_protect
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Circulation Duration rules
*
* Each circulation is given a duration based on one of these rules.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.rule_circ_duration Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
|
extended |
interval |
NOT NULL
|
|
normal |
interval |
NOT NULL
|
|
shrt |
interval |
NOT NULL
|
|
max_renewals |
integer |
NOT NULL
|
config.rule_circ_duration Constraints
Name |
Constraint |
rule_circ_duration_name_check |
CHECK ((name ~ E'^\\w+$'::text)) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.rule_circ_duration
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Circulation Max Fine rules
*
* Each circulation is given a maximum fine based on one of
* these rules.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.rule_max_fine Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
is_percent |
boolean |
NOT NULL
DEFAULT false
|
config.rule_max_fine Constraints
Name |
Constraint |
rule_max_fine_name_check |
CHECK ((name ~ E'^\\w+$'::text)) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.rule_max_fine
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Circulation Recuring Fine rules
*
* Each circulation is given a recuring fine amount based on one of
* these rules. The recurance_interval should not be any shorter
* than the interval between runs of the fine_processor.pl script
* (which is run from CRON), or you could miss fines.
*
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.rule_recuring_fine Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
|
high |
numeric(6,2) |
NOT NULL
|
|
normal |
numeric(6,2) |
NOT NULL
|
|
low |
numeric(6,2) |
NOT NULL
|
|
recurance_interval |
interval |
NOT NULL
DEFAULT '1 day'::interval
|
config.rule_recuring_fine Constraints
Name |
Constraint |
rule_recuring_fine_name_check |
CHECK ((name ~ E'^\\w+$'::text)) |
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to config.rule_recuring_fine
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
/*
* Copyright (C) 2005 Georgia Public Library Service
* Mike Rylander <mrylander@gmail.com>
*
* Patron Standings
*
* This table contains the values that can be applied to a patron
* by a staff member. These values should not be changed, other
* that for translation, as the ID column is currently a "magic
* number" in the source. :(
*
* ****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
config.standing Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
value |
text |
UNIQUE
NOT NULL
|
Permissions which apply to config.standing
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema config
config.upgrade_log Structure
F-Key |
Name |
Type |
Description |
|
version |
text |
PRIMARY KEY
|
|
install_date |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Index -
Schema config
config.videorecording_format_map Structure
F-Key |
Name |
Type |
Description |
|
code |
text |
PRIMARY KEY
|
|
value |
text |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Index -
Schema config
config.xml_transform Structure
F-Key |
Name |
Type |
Description |
|
name |
text |
PRIMARY KEY
|
|
namespace_uri |
text |
NOT NULL
|
|
prefix |
text |
NOT NULL
|
|
xslt |
text |
NOT NULL
|
Index -
Schema config
config.z3950_attr Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
config.z3950_source.name
|
source |
text |
UNIQUE#1
NOT NULL
|
|
name |
text |
NOT NULL
|
|
label |
text |
NOT NULL
|
|
code |
integer |
UNIQUE#1
NOT NULL
|
|
format |
integer |
UNIQUE#1
NOT NULL
|
|
truncation |
integer |
NOT NULL
|
Index -
Schema config
config.z3950_source Structure
F-Key |
Name |
Type |
Description |
|
name |
text |
PRIMARY KEY
|
|
label |
text |
UNIQUE
NOT NULL
|
|
host |
text |
NOT NULL
|
|
port |
integer |
NOT NULL
|
|
db |
text |
NOT NULL
|
|
record_format |
text |
NOT NULL
DEFAULT 'FI'::text
|
|
transmission_format |
text |
NOT NULL
DEFAULT 'usmarc'::text
|
|
auth |
boolean |
NOT NULL
DEFAULT true
|
Tables referencing this one via Foreign Key Constraints:
Index -
Schema config
Schema container
container.biblio_record_entry_bucket Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
btype |
text |
UNIQUE#1
NOT NULL
DEFAULT 'misc'::text
|
|
pub |
boolean |
NOT NULL
DEFAULT false
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to container.biblio_record_entry_bucket
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema container
Permissions which apply to container.biblio_record_entry_bucket_item
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema container
container.call_number_bucket Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
btype |
text |
UNIQUE#1
NOT NULL
DEFAULT 'misc'::text
|
|
pub |
boolean |
NOT NULL
DEFAULT false
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to container.call_number_bucket
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema container
container.call_number_bucket_item Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
container.call_number_bucket.id
|
bucket |
integer |
NOT NULL
|
asset.call_number.id
|
target_call_number |
integer |
NOT NULL
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Permissions which apply to container.call_number_bucket_item
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema container
container.copy_bucket Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
btype |
text |
UNIQUE#1
NOT NULL
DEFAULT 'misc'::text
|
|
pub |
boolean |
NOT NULL
DEFAULT false
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to container.copy_bucket
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema container
container.copy_bucket_item Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
container.copy_bucket.id
|
bucket |
integer |
NOT NULL
|
asset.copy.id
|
target_copy |
integer |
NOT NULL
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Permissions which apply to container.copy_bucket_item
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema container
container.user_bucket Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
btype |
text |
UNIQUE#1
NOT NULL
DEFAULT 'misc'::text
|
|
pub |
boolean |
NOT NULL
DEFAULT false
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to container.user_bucket
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema container
container.user_bucket_item Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
container.user_bucket.id
|
bucket |
integer |
NOT NULL
|
actor.usr.id
|
target_user |
integer |
NOT NULL
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
Permissions which apply to container.user_bucket_item
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema container
Schema extend_reporter
extend_reporter.full_circ_count Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
circ_count |
bigint |
|
SELECT cp.id
, (COALESCE
(sum
(c.circ_count)
, (0)::bigint
) + COALESCE
(count
(circ.id)
, (0)::bigint
)
) AS circ_count
FROM (
(asset."copy" cp
LEFT JOIN extend_reporter.legacy_circ_count c
USING (id)
)
LEFT JOIN"action".all_circulation circ
ON (
(circ.target_copy = cp.id)
)
)
GROUP BY cp.id;
Index -
Schema extend_reporter
extend_reporter.global_bibs_by_holding_update Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
holding_update |
timestamp with time zone |
|
|
update_type |
text |
|
SELECT DISTINCT
ON (x.id) x.id
, x.holding_update
, x.update_type
FROM (
SELECT b.id
,"last"
(cp.create_date) AS holding_update
,'add' AS update_type
FROM (
(biblio.record_entry b
JOIN asset.call_number cn
ON (
(cn.record = b.id)
)
)
JOIN asset."copy" cp
ON (
(cp.call_number = cn.id)
)
)
WHERE (
(NOT cp.deleted)
AND (b.id > 0)
)
GROUP BY b.id
UNIONSELECT b.id
,"last"
(cp.edit_date) AS holding_update
,'delete' AS update_type
FROM (
(biblio.record_entry b
JOIN asset.call_number cn
ON (
(cn.record = b.id)
)
)
JOIN asset."copy" cp
ON (
(cp.call_number = cn.id)
)
)
WHERE (cp.deleted
AND (b.id > 0)
)
GROUP BY b.id
) x
ORDER BY x.id
, x.holding_update;
Index -
Schema extend_reporter
extend_reporter.legacy_circ_count Structure
F-Key |
Name |
Type |
Description |
asset.copy.id
|
id |
bigserial |
PRIMARY KEY
|
|
circ_count |
integer |
NOT NULL
|
Index -
Schema extend_reporter
Schema metabib
metabib.author_field_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
biblio.record_entry.id
|
source |
bigint |
NOT NULL
|
config.metabib_field.id
|
field |
integer |
NOT NULL
|
|
value |
text |
NOT NULL
|
|
index_vector |
tsvector |
NOT NULL
|
Permissions which apply to metabib.author_field_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
metabib.full_rec Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
record |
bigint |
|
|
tag |
character(3) |
|
|
ind1 |
text |
|
|
ind2 |
text |
|
|
subfield |
text |
|
|
value |
text |
|
|
index_vector |
tsvector |
|
SELECT real_full_rec.id
, real_full_rec.record
, real_full_rec.tag
, real_full_rec.ind1
, real_full_rec.ind2
, real_full_rec.subfield
,"substring"
(real_full_rec.value
, 1
, 1024
) AS value
, real_full_rec.index_vector
FROM metabib.real_full_rec;
Index -
Schema metabib
metabib.keyword_field_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
biblio.record_entry.id
|
source |
bigint |
NOT NULL
|
config.metabib_field.id
|
field |
integer |
NOT NULL
|
|
value |
text |
NOT NULL
|
|
index_vector |
tsvector |
NOT NULL
|
Permissions which apply to metabib.keyword_field_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
metabib.metarecord Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
fingerprint |
text |
NOT NULL
|
biblio.record_entry.id
|
master_record |
bigint |
|
|
mods |
text |
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to metabib.metarecord
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
Permissions which apply to metabib.metarecord_source_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
metabib.real_full_rec Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
biblio.record_entry.id
|
record |
bigint |
NOT NULL
|
|
tag |
character(3) |
NOT NULL
|
|
ind1 |
text |
|
|
ind2 |
text |
|
|
subfield |
text |
|
|
value |
text |
NOT NULL
|
|
index_vector |
tsvector |
NOT NULL
|
Permissions which apply to metabib.real_full_rec
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
metabib.rec_descriptor Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
biblio.record_entry.id
|
record |
bigint |
|
|
item_type |
text |
|
|
item_form |
text |
|
|
bib_level |
text |
|
|
control_type |
text |
|
|
char_encoding |
text |
|
|
enc_level |
text |
|
|
audience |
text |
|
|
lit_form |
text |
|
|
type_mat |
text |
|
|
cat_form |
text |
|
|
pub_status |
text |
|
|
item_lang |
text |
|
|
vr_format |
text |
|
|
date1 |
text |
|
|
date2 |
text |
|
Permissions which apply to metabib.rec_descriptor
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
metabib.series_field_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
source |
bigint |
NOT NULL
|
|
field |
integer |
NOT NULL
|
|
value |
text |
NOT NULL
|
|
index_vector |
tsvector |
NOT NULL
|
Permissions which apply to metabib.series_field_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
metabib.subject_field_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
biblio.record_entry.id
|
source |
bigint |
NOT NULL
|
config.metabib_field.id
|
field |
integer |
NOT NULL
|
|
value |
text |
NOT NULL
|
|
index_vector |
tsvector |
NOT NULL
|
Permissions which apply to metabib.subject_field_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
metabib.title_field_entry Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
biblio.record_entry.id
|
source |
bigint |
NOT NULL
|
config.metabib_field.id
|
field |
integer |
NOT NULL
|
|
value |
text |
NOT NULL
|
|
index_vector |
tsvector |
NOT NULL
|
Permissions which apply to metabib.title_field_entry
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema metabib
Schema money
money.billable_xact Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
NOT NULL
|
|
xact_start |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
xact_finish |
timestamp with time zone |
|
|
unrecovered |
boolean |
|
Permissions which apply to money.billable_xact
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.billable_xact_summary Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
total_paid |
numeric |
|
|
last_payment_ts |
timestamp with time zone |
|
|
last_payment_note |
text |
|
|
last_payment_type |
name |
|
|
total_owed |
numeric |
|
|
last_billing_ts |
timestamp with time zone |
|
|
last_billing_note |
text |
|
|
last_billing_type |
text |
|
|
balance_owed |
numeric |
|
|
xact_type |
name |
|
SELECT xact.id
, xact.usr
, xact.xact_start
, xact.xact_finish
, credit.amount AS total_paid
, credit.payment_ts AS last_payment_ts
, credit.note AS last_payment_note
, credit.payment_type AS last_payment_type
, debit.amount AS total_owed
, debit.billing_ts AS last_billing_ts
, debit.note AS last_billing_note
, debit.billing_type AS last_billing_type
, (COALESCE
(debit.amount
, (0)::numeric
) - COALESCE
(credit.amount
, (0)::numeric
)
) AS balance_owed
, p.relname AS xact_type
FROM (
(
(money.billable_xact xact
JOIN pg_class p
ON (
(xact.tableoid = p.oid)
)
)
LEFT JOIN (
SELECT billing.xact
, sum
(billing.amount) AS amount
, max
(billing.billing_ts) AS billing_ts
,"last"
(billing.note) AS note
,"last"
(billing.billing_type) AS billing_type
FROM money.billing
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact
) debit
ON (
(xact.id = debit.xact)
)
)
LEFT JOIN (
SELECT payment_view.xact
, sum
(payment_view.amount) AS amount
, max
(payment_view.payment_ts) AS payment_ts
,"last"
(payment_view.note) AS note
,"last"
(payment_view.payment_type) AS payment_type
FROM money.payment_view
WHERE (payment_view.voided IS FALSE)
GROUP BY payment_view.xact
) credit
ON (
(xact.id = credit.xact)
)
)
ORDER BY debit.billing_ts
, credit.payment_ts;
Permissions which apply to money.billable_xact_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.billable_xact_with_void_summary Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
total_paid |
numeric |
|
|
last_payment_ts |
timestamp with time zone |
|
|
last_payment_note |
text |
|
|
last_payment_type |
name |
|
|
total_owed |
numeric |
|
|
last_billing_ts |
timestamp with time zone |
|
|
last_billing_note |
text |
|
|
last_billing_type |
text |
|
|
balance_owed |
numeric |
|
|
xact_type |
name |
|
SELECT xact.id
, xact.usr
, xact.xact_start
, xact.xact_finish
, credit.amount AS total_paid
, credit.payment_ts AS last_payment_ts
, credit.note AS last_payment_note
, credit.payment_type AS last_payment_type
, debit.amount AS total_owed
, debit.billing_ts AS last_billing_ts
, debit.note AS last_billing_note
, debit.billing_type AS last_billing_type
, (COALESCE
(debit.amount
, (0)::numeric
) - COALESCE
(credit.amount
, (0)::numeric
)
) AS balance_owed
, p.relname AS xact_type
FROM (
(
(money.billable_xact xact
JOIN pg_class p
ON (
(xact.tableoid = p.oid)
)
)
LEFT JOIN (
SELECT billing.xact
, sum
(billing.amount) AS amount
, max
(billing.billing_ts) AS billing_ts
,"last"
(billing.note) AS note
,"last"
(billing.billing_type) AS billing_type
FROM money.billing
GROUP BY billing.xact
) debit
ON (
(xact.id = debit.xact)
)
)
LEFT JOIN (
SELECT payment_view.xact
, sum
(payment_view.amount) AS amount
, max
(payment_view.payment_ts) AS payment_ts
,"last"
(payment_view.note) AS note
,"last"
(payment_view.payment_type) AS payment_type
FROM money.payment_view
GROUP BY payment_view.xact
) credit
ON (
(xact.id = credit.xact)
)
)
ORDER BY debit.billing_ts
, credit.payment_ts;
Permissions which apply to money.billable_xact_with_void_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.billing Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
xact |
bigint |
NOT NULL
|
|
billing_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
voider |
integer |
|
|
void_time |
timestamp with time zone |
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
billing_type |
text |
NOT NULL
|
|
note |
text |
|
Permissions which apply to money.billing
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.bnm_desk_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
actor.workstation.id
|
cash_drawer |
integer |
|
Permissions which apply to money.bnm_desk_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.bnm_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
Permissions which apply to money.bnm_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.bnm_payment_view Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
xact |
bigint |
|
|
payment_ts |
timestamp with time zone |
|
|
voided |
boolean |
|
|
amount |
numeric(6,2) |
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
|
|
accepting_usr |
integer |
|
|
payment_type |
name |
|
SELECT p.id
, p.xact
, p.payment_ts
, p.voided
, p.amount
, p.note
, p.amount_collected
, p.accepting_usr
, c.relname AS payment_type
FROM (money.bnm_payment p
JOIN pg_class c
ON (
(p.tableoid = c.oid)
)
);
Permissions which apply to money.bnm_payment_view
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.cash_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
|
cash_drawer |
integer |
|
Permissions which apply to money.cash_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.cashdrawer_payment_view Structure
F-Key |
Name |
Type |
Description |
|
org_unit |
integer |
|
|
cashdrawer |
integer |
|
|
payment_type |
name |
|
|
payment_ts |
timestamp with time zone |
|
|
amount |
numeric(6,2) |
|
|
voided |
boolean |
|
|
note |
text |
|
SELECT ou.id AS org_unit
, ws.id AS cashdrawer
, t.payment_type
, p.payment_ts
, p.amount
, p.voided
, p.note
FROM (
(
(actor.org_unit ou
JOIN actor.workstation ws
ON (
(ou.id = ws.owning_lib)
)
)
LEFT JOIN money.bnm_desk_payment p
ON (
(ws.id = p.cash_drawer)
)
)
LEFT JOIN money.payment_view t
ON (
(p.id = t.id)
)
);
Permissions which apply to money.cashdrawer_payment_view
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.check_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
|
cash_drawer |
integer |
|
|
check_number |
text |
NOT NULL
|
Permissions which apply to money.check_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.collections_tracker Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
NOT NULL
|
actor.usr.id
|
collector |
integer |
NOT NULL
|
actor.org_unit.id
|
location |
integer |
NOT NULL
|
|
enter_time |
timestamp with time zone |
|
Permissions which apply to money.collections_tracker
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.credit_card_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
|
cash_drawer |
integer |
|
|
cc_type |
text |
|
|
cc_number |
text |
|
|
expire_month |
integer |
|
|
expire_year |
integer |
|
|
approval_code |
text |
|
Permissions which apply to money.credit_card_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.credit_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
Permissions which apply to money.credit_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.desk_payment_view Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
xact |
bigint |
|
|
payment_ts |
timestamp with time zone |
|
|
voided |
boolean |
|
|
amount |
numeric(6,2) |
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
|
|
accepting_usr |
integer |
|
|
cash_drawer |
integer |
|
|
payment_type |
name |
|
SELECT p.id
, p.xact
, p.payment_ts
, p.voided
, p.amount
, p.note
, p.amount_collected
, p.accepting_usr
, p.cash_drawer
, c.relname AS payment_type
FROM (money.bnm_desk_payment p
JOIN pg_class c
ON (
(p.tableoid = c.oid)
)
);
Permissions which apply to money.desk_payment_view
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.forgive_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
Permissions which apply to money.forgive_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.goods_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('money.payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
Permissions which apply to money.goods_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.grocery Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('billable_xact_id_seq'::regclass)
|
|
usr |
integer |
NOT NULL
|
|
xact_start |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
xact_finish |
timestamp with time zone |
|
|
billing_location |
integer |
NOT NULL
|
|
note |
text |
|
|
unrecovered |
boolean |
|
Permissions which apply to money.grocery
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.live_billing_total Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
amount |
numeric |
|
|
last_billing_ts |
timestamp with time zone |
|
|
last_note |
text |
|
SELECT billing.xact
, sum
(billing.amount) AS amount
, max
(billing.billing_ts) AS last_billing_ts
,"last"
(billing.note) AS last_note
FROM money.billing
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact;
Permissions which apply to money.live_billing_total
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.live_payment_total Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
amount |
numeric |
|
|
last_payment_ts |
timestamp with time zone |
|
|
last_note |
text |
|
SELECT payment.xact
, sum
(payment.amount) AS amount
, max
(payment.payment_ts) AS last_payment_ts
,"last"
(payment.note) AS last_note
FROM money.payment
WHERE (payment.voided IS FALSE)
GROUP BY payment.xact;
Permissions which apply to money.live_payment_total
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.non_drawer_payment_view Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
xact |
bigint |
|
|
payment_ts |
timestamp with time zone |
|
|
voided |
boolean |
|
|
amount |
numeric(6,2) |
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
|
|
accepting_usr |
integer |
|
|
payment_type |
name |
|
SELECT p.id
, p.xact
, p.payment_ts
, p.voided
, p.amount
, p.note
, p.amount_collected
, p.accepting_usr
, c.relname AS payment_type
FROM (money.bnm_payment p
JOIN pg_class c
ON (
(p.tableoid = c.oid)
)
)
WHERE (
(
(c.relname <> 'cash_payment'::name)
AND (c.relname <> 'check_payment'::name)
)
AND (c.relname <> 'credit_card_payment'::name)
);
Permissions which apply to money.non_drawer_payment_view
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.open_balance_by_circ_and_owning_lib Structure
F-Key |
Name |
Type |
Description |
|
circ_lib |
integer |
|
|
owning_lib |
integer |
|
|
billing_types |
text |
|
|
balance |
numeric |
|
SELECT x.circ_lib
, x.owning_lib
, array_to_string
(array_accum
(DISTINCT x.billing_type)
,', '::text
) AS billing_types
, (sum
(x.billed) - sum
(COALESCE
(
(
SELECT sum
(payment.amount) AS paid
FROM money.payment
WHERE (
(NOT payment.voided)
AND (payment.xact = x.id)
)
)
, (0)::numeric
)
)
) AS balance
FROM money.open_circ_balance_by_circ_and_owning_lib x
GROUP BY x.circ_lib
, x.owning_lib;
Index -
Schema money
money.open_balance_by_owning_lib Structure
F-Key |
Name |
Type |
Description |
|
owning_lib |
integer |
|
|
billing_types |
text |
|
|
balance |
numeric |
|
SELECT x.owning_lib
, array_to_string
(array_accum
(DISTINCT x.billing_type)
,', '::text
) AS billing_types
, (sum
(x.billed) - sum
(COALESCE
(
(
SELECT sum
(payment.amount) AS paid
FROM money.payment
WHERE (
(NOT payment.voided)
AND (payment.xact = x.id)
)
)
, (0)::numeric
)
)
) AS balance
FROM money.open_circ_balance_by_owning_lib x
GROUP BY x.owning_lib;
Index -
Schema money
money.open_balance_by_usr_home_and_owning_lib Structure
F-Key |
Name |
Type |
Description |
|
home_ou |
integer |
|
|
owning_lib |
integer |
|
|
billing_types |
text |
|
|
balance |
numeric |
|
SELECT x.home_ou
, x.owning_lib
, array_to_string
(array_accum
(DISTINCT x.billing_type)
,', '::text
) AS billing_types
, (sum
(x.billed) - sum
(COALESCE
(
(
SELECT sum
(payment.amount) AS paid
FROM money.payment
WHERE (
(NOT payment.voided)
AND (payment.xact = x.id)
)
)
, (0)::numeric
)
)
) AS balance
FROM money.open_circ_balance_by_usr_home_and_owning_lib x
GROUP BY x.home_ou
, x.owning_lib;
Index -
Schema money
money.open_billable_xact_summary Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
billing_location |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
total_paid |
numeric |
|
|
last_payment_ts |
timestamp with time zone |
|
|
last_payment_note |
text |
|
|
last_payment_type |
name |
|
|
total_owed |
numeric |
|
|
last_billing_ts |
timestamp with time zone |
|
|
last_billing_note |
text |
|
|
last_billing_type |
text |
|
|
balance_owed |
numeric |
|
|
xact_type |
name |
|
SELECT xact.id
, xact.usr
, COALESCE
(circ.circ_lib
, groc.billing_location
) AS billing_location
, xact.xact_start
, xact.xact_finish
, sum
(credit.amount) AS total_paid
, max
(credit.payment_ts) AS last_payment_ts
,"last"
(credit.note) AS last_payment_note
,"last"
(credit.payment_type) AS last_payment_type
, sum
(debit.amount) AS total_owed
, max
(debit.billing_ts) AS last_billing_ts
,"last"
(debit.note) AS last_billing_note
,"last"
(debit.billing_type) AS last_billing_type
, (COALESCE
(sum
(debit.amount)
, (0)::numeric
) - COALESCE
(sum
(credit.amount)
, (0)::numeric
)
) AS balance_owed
, p.relname AS xact_type
FROM (
(
(
(
(money.billable_xact xact
JOIN pg_class p
ON (
(xact.tableoid = p.oid)
)
)
LEFT JOIN"action".circulation circ
ON (
(circ.id = xact.id)
)
)
LEFT JOIN money.grocery groc
ON (
(groc.id = xact.id)
)
)
LEFT JOIN (
SELECT billing.xact
, billing.voided
, sum
(billing.amount) AS amount
, max
(billing.billing_ts) AS billing_ts
,"last"
(billing.note) AS note
,"last"
(billing.billing_type) AS billing_type
FROM money.billing
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact
, billing.voided
) debit
ON (
(
(xact.id = debit.xact)
AND (debit.voided IS FALSE)
)
)
)
LEFT JOIN (
SELECT payment_view.xact
, payment_view.voided
, sum
(payment_view.amount) AS amount
, max
(payment_view.payment_ts) AS payment_ts
,"last"
(payment_view.note) AS note
,"last"
(payment_view.payment_type) AS payment_type
FROM money.payment_view
WHERE (payment_view.voided IS FALSE)
GROUP BY payment_view.xact
, payment_view.voided
) credit
ON (
(
(xact.id = credit.xact)
AND (credit.voided IS FALSE)
)
)
)
WHERE (xact.xact_finish IS NULL)
GROUP BY xact.id
, xact.usr
, COALESCE
(circ.circ_lib
, groc.billing_location
)
, xact.xact_start
, xact.xact_finish
, p.relname
ORDER BY max
(debit.billing_ts)
, max
(credit.payment_ts);
Permissions which apply to money.open_billable_xact_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.open_circ_balance Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
billing_types |
text |
|
|
balance |
numeric |
|
SELECT x.id
, x.billing_types
, (x.billed - COALESCE
(
(
SELECT sum
(payment.amount) AS paid
FROM money.payment
WHERE (
(NOT payment.voided)
AND (payment.xact = x.id)
)
)
, (0)::numeric
)
) AS balance
FROM (
SELECT circ.id
, array_to_string
(array_accum
(DISTINCT bill.billing_type)
,', '::text
) AS billing_types
, sum
(bill.amount) AS billed
FROM ("action".circulation circ
JOIN money.billing bill
ON (
(circ.id = bill.xact)
)
)
WHERE (
(circ.xact_finish IS NULL)
AND (NOT bill.voided)
)
GROUP BY circ.id
ORDER BY circ.id
, array_to_string
(array_accum
(DISTINCT bill.billing_type)
,', '::text
)
) x
WHERE (
(x.billed - COALESCE
(
(
SELECT sum
(payment.amount) AS paid
FROM money.payment
WHERE (
(NOT payment.voided)
AND (payment.xact = x.id)
)
)
, (0)::numeric
)
) >
(0)::numeric
);
Index -
Schema money
money.open_circ_balance_by_circ_and_owning_lib Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
circ_lib |
integer |
|
|
owning_lib |
integer |
|
|
billing_type |
text |
|
|
billed |
numeric |
|
SELECT circ.id
, circ.circ_lib
, cn.owning_lib
, bill.billing_type
, sum
(bill.amount) AS billed
FROM (
(
("action".circulation circ
JOIN money.billing bill
ON (
(circ.id = bill.xact)
)
)
JOIN asset."copy" cp
ON (
(circ.target_copy = cp.id)
)
)
JOIN asset.call_number cn
ON (
(cn.id = cp.call_number)
)
)
WHERE (
(circ.xact_finish IS NULL)
AND (NOT bill.voided)
)
GROUP BY circ.id
, circ.circ_lib
, cn.owning_lib
, bill.billing_type
ORDER BY circ.id
, circ.circ_lib
, cn.owning_lib
, bill.billing_type;
Index -
Schema money
money.open_circ_balance_by_owning_lib Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
owning_lib |
integer |
|
|
billing_type |
text |
|
|
billed |
numeric |
|
SELECT circ.id
, cn.owning_lib
, bill.billing_type
, sum
(bill.amount) AS billed
FROM (
(
("action".circulation circ
JOIN money.billing bill
ON (
(circ.id = bill.xact)
)
)
JOIN asset."copy" cp
ON (
(circ.target_copy = cp.id)
)
)
JOIN asset.call_number cn
ON (
(cn.id = cp.call_number)
)
)
WHERE (
(circ.xact_finish IS NULL)
AND (NOT bill.voided)
)
GROUP BY circ.id
, cn.owning_lib
, bill.billing_type
ORDER BY circ.id
, cn.owning_lib
, bill.billing_type;
Index -
Schema money
money.open_circ_balance_by_usr_home_and_owning_lib Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
home_ou |
integer |
|
|
owning_lib |
integer |
|
|
billing_type |
text |
|
|
billed |
numeric |
|
SELECT circ.id
, usr.home_ou
, cn.owning_lib
, bill.billing_type
, sum
(bill.amount) AS billed
FROM (
(
(
("action".circulation circ
JOIN money.billing bill
ON (
(circ.id = bill.xact)
)
)
JOIN asset."copy" cp
ON (
(circ.target_copy = cp.id)
)
)
JOIN asset.call_number cn
ON (
(cn.id = cp.call_number)
)
)
JOIN actor.usr usr
ON (
(circ.usr = usr.id)
)
)
WHERE (
(circ.xact_finish IS NULL)
AND (NOT bill.voided)
)
GROUP BY circ.id
, usr.home_ou
, cn.owning_lib
, bill.billing_type
ORDER BY circ.id
, usr.home_ou
, cn.owning_lib
, bill.billing_type;
Index -
Schema money
money.open_transaction_billing_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_billing_type |
text |
|
|
last_billing_note |
text |
|
|
last_billing_ts |
timestamp with time zone |
|
|
total_owed |
numeric |
|
SELECT billing.xact
,"last"
(billing.billing_type) AS last_billing_type
,"last"
(billing.note) AS last_billing_note
, max
(billing.billing_ts) AS last_billing_ts
, sum
(COALESCE
(billing.amount
, (0)::numeric
)
) AS total_owed
FROM money.billing
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact
ORDER BY max
(billing.billing_ts);
Permissions which apply to money.open_transaction_billing_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.open_transaction_billing_type_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_billing_type |
text |
|
|
last_billing_note |
text |
|
|
last_billing_ts |
timestamp with time zone |
|
|
total_owed |
numeric |
|
SELECT billing.xact
, billing.billing_type AS last_billing_type
,"last"
(billing.note) AS last_billing_note
, max
(billing.billing_ts) AS last_billing_ts
, sum
(COALESCE
(billing.amount
, (0)::numeric
)
) AS total_owed
FROM money.billing
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact
, billing.billing_type
ORDER BY max
(billing.billing_ts);
Permissions which apply to money.open_transaction_billing_type_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.open_transaction_payment_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_payment_type |
name |
|
|
last_payment_note |
text |
|
|
last_payment_ts |
timestamp with time zone |
|
|
total_paid |
numeric |
|
SELECT payment_view.xact
,"last"
(payment_view.payment_type) AS last_payment_type
,"last"
(payment_view.note) AS last_payment_note
, max
(payment_view.payment_ts) AS last_payment_ts
, sum
(COALESCE
(payment_view.amount
, (0)::numeric
)
) AS total_paid
FROM money.payment_view
WHERE (payment_view.voided IS FALSE)
GROUP BY payment_view.xact
ORDER BY max
(payment_view.payment_ts);
Permissions which apply to money.open_transaction_payment_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.open_transaction_type_class_location_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_billing_type |
text |
|
|
transactions_class |
name |
|
|
location |
integer |
|
|
last_billing_note |
text |
|
|
last_billing_ts |
timestamp with time zone |
|
|
total_owed |
numeric |
|
SELECT billing.xact
, billing.billing_type AS last_billing_type
, p.relname AS transactions_class
, COALESCE
(g.billing_location
, c.circ_lib
) AS "location"
,"last"
(billing.note) AS last_billing_note
, max
(billing.billing_ts) AS last_billing_ts
, sum
(COALESCE
(billing.amount
, (0)::numeric
)
) AS total_owed
FROM (
(
(
(money.billing
JOIN money.billable_xact x
ON (
(x.id = billing.xact)
)
)
JOIN pg_class p
ON (
(x.tableoid = p.oid)
)
)
LEFT JOIN money.grocery g
ON (
(g.id = x.id)
)
)
LEFT JOIN"action".circulation c
ON (
(c.id = x.id)
)
)
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact
, billing.billing_type
, p.relname
, COALESCE
(g.billing_location
, c.circ_lib
)
ORDER BY max
(billing.billing_ts);
Index -
Schema money
money.open_transaction_type_class_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_billing_type |
text |
|
|
transactions_class |
name |
|
|
last_billing_note |
text |
|
|
last_billing_ts |
timestamp with time zone |
|
|
total_owed |
numeric |
|
SELECT billing.xact
, billing.billing_type AS last_billing_type
, p.relname AS transactions_class
,"last"
(billing.note) AS last_billing_note
, max
(billing.billing_ts) AS last_billing_ts
, sum
(COALESCE
(billing.amount
, (0)::numeric
)
) AS total_owed
FROM (
(money.billing
JOIN money.billable_xact x
ON (
(x.id = billing.xact)
)
)
JOIN pg_class p
ON (
(x.tableoid = p.oid)
)
)
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact
, billing.billing_type
, p.relname
ORDER BY max
(billing.billing_ts);
Index -
Schema money
money.open_usr_circulation_summary Structure
F-Key |
Name |
Type |
Description |
|
usr |
integer |
|
|
total_paid |
numeric |
|
|
total_owed |
numeric |
|
|
balance_owed |
numeric |
|
SELECT open_billable_xact_summary.usr
, sum
(open_billable_xact_summary.total_paid) AS total_paid
, sum
(open_billable_xact_summary.total_owed) AS total_owed
, sum
(open_billable_xact_summary.balance_owed) AS balance_owed
FROM money.open_billable_xact_summary
WHERE (open_billable_xact_summary.xact_type = 'circulation'::name)
GROUP BY open_billable_xact_summary.usr;
Permissions which apply to money.open_usr_circulation_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.open_usr_summary Structure
F-Key |
Name |
Type |
Description |
|
usr |
integer |
|
|
total_paid |
numeric |
|
|
total_owed |
numeric |
|
|
balance_owed |
numeric |
|
SELECT open_billable_xact_summary.usr
, sum
(open_billable_xact_summary.total_paid) AS total_paid
, sum
(open_billable_xact_summary.total_owed) AS total_owed
, sum
(open_billable_xact_summary.balance_owed) AS balance_owed
FROM money.open_billable_xact_summary
GROUP BY open_billable_xact_summary.usr;
Permissions which apply to money.open_usr_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
Permissions which apply to money.payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.payment_view Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
xact |
bigint |
|
|
payment_ts |
timestamp with time zone |
|
|
voided |
boolean |
|
|
amount |
numeric(6,2) |
|
|
note |
text |
|
|
payment_type |
name |
|
SELECT p.id
, p.xact
, p.payment_ts
, p.voided
, p.amount
, p.note
, c.relname AS payment_type
FROM (money.payment p
JOIN pg_class c
ON (
(p.tableoid = c.oid)
)
);
Permissions which apply to money.payment_view
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.transaction_billing_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_billing_type |
text |
|
|
last_billing_note |
text |
|
|
last_billing_ts |
timestamp with time zone |
|
|
total_owed |
numeric |
|
SELECT billing.xact
,"last"
(billing.billing_type) AS last_billing_type
,"last"
(billing.note) AS last_billing_note
, max
(billing.billing_ts) AS last_billing_ts
, sum
(COALESCE
(billing.amount
, (0)::numeric
)
) AS total_owed
FROM money.billing
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact
ORDER BY max
(billing.billing_ts);
Permissions which apply to money.transaction_billing_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.transaction_billing_type_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_billing_type |
text |
|
|
last_billing_note |
text |
|
|
last_billing_ts |
timestamp with time zone |
|
|
total_owed |
numeric |
|
SELECT billing.xact
, billing.billing_type AS last_billing_type
,"last"
(billing.note) AS last_billing_note
, max
(billing.billing_ts) AS last_billing_ts
, sum
(COALESCE
(billing.amount
, (0)::numeric
)
) AS total_owed
FROM money.billing
WHERE (billing.voided IS FALSE)
GROUP BY billing.xact
, billing.billing_type
ORDER BY max
(billing.billing_ts);
Permissions which apply to money.transaction_billing_type_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.transaction_billing_with_void_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_billing_type |
text |
|
|
last_billing_note |
text |
|
|
last_billing_ts |
timestamp with time zone |
|
|
total_owed |
numeric |
|
SELECT billing.xact
,"last"
(billing.billing_type) AS last_billing_type
,"last"
(billing.note) AS last_billing_note
, max
(billing.billing_ts) AS last_billing_ts
, sum
(CASE WHEN billing.voided THEN
(0)::numeric ELSE COALESCE
(billing.amount
, (0)::numeric
) END
) AS total_owed
FROM money.billing
GROUP BY billing.xact
ORDER BY max
(billing.billing_ts);
Permissions which apply to money.transaction_billing_with_void_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.transaction_payment_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_payment_type |
name |
|
|
last_payment_note |
text |
|
|
last_payment_ts |
timestamp with time zone |
|
|
total_paid |
numeric |
|
SELECT payment_view.xact
,"last"
(payment_view.payment_type) AS last_payment_type
,"last"
(payment_view.note) AS last_payment_note
, max
(payment_view.payment_ts) AS last_payment_ts
, sum
(COALESCE
(payment_view.amount
, (0)::numeric
)
) AS total_paid
FROM money.payment_view
WHERE (payment_view.voided IS FALSE)
GROUP BY payment_view.xact
ORDER BY max
(payment_view.payment_ts);
Permissions which apply to money.transaction_payment_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.transaction_payment_with_void_summary Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
last_payment_type |
name |
|
|
last_payment_note |
text |
|
|
last_payment_ts |
timestamp with time zone |
|
|
total_paid |
numeric |
|
SELECT payment_view.xact
,"last"
(payment_view.payment_type) AS last_payment_type
,"last"
(payment_view.note) AS last_payment_note
, max
(payment_view.payment_ts) AS last_payment_ts
, sum
(CASE WHEN payment_view.voided THEN
(0)::numeric ELSE COALESCE
(payment_view.amount
, (0)::numeric
) END
) AS total_paid
FROM money.payment_view
GROUP BY payment_view.xact
ORDER BY max
(payment_view.payment_ts);
Permissions which apply to money.transaction_payment_with_void_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.usr_circulation_summary Structure
F-Key |
Name |
Type |
Description |
|
usr |
integer |
|
|
total_paid |
numeric |
|
|
total_owed |
numeric |
|
|
balance_owed |
numeric |
|
SELECT billable_xact_summary.usr
, sum
(billable_xact_summary.total_paid) AS total_paid
, sum
(billable_xact_summary.total_owed) AS total_owed
, sum
(billable_xact_summary.balance_owed) AS balance_owed
FROM money.billable_xact_summary
WHERE (billable_xact_summary.xact_type = 'circulation'::name)
GROUP BY billable_xact_summary.usr;
Permissions which apply to money.usr_circulation_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.usr_summary Structure
F-Key |
Name |
Type |
Description |
|
usr |
integer |
|
|
total_paid |
numeric |
|
|
total_owed |
numeric |
|
|
balance_owed |
numeric |
|
SELECT billable_xact_summary.usr
, sum
(billable_xact_summary.total_paid) AS total_paid
, sum
(billable_xact_summary.total_owed) AS total_owed
, sum
(billable_xact_summary.balance_owed) AS balance_owed
FROM money.billable_xact_summary
GROUP BY billable_xact_summary.usr;
Permissions which apply to money.usr_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
money.work_payment Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('payment_id_seq'::regclass)
|
|
xact |
bigint |
NOT NULL
|
|
payment_ts |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
voided |
boolean |
NOT NULL
DEFAULT false
|
|
amount |
numeric(6,2) |
NOT NULL
|
|
note |
text |
|
|
amount_collected |
numeric(6,2) |
NOT NULL
|
|
accepting_usr |
integer |
NOT NULL
|
Permissions which apply to money.work_payment
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema money
Schema offline
offline.script Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
session |
text |
NOT NULL
|
|
requestor |
integer |
NOT NULL
|
|
create_time |
integer |
NOT NULL
|
|
workstation |
text |
NOT NULL
|
|
logfile |
text |
NOT NULL
|
|
time_delta |
integer |
NOT NULL
|
|
count |
integer |
NOT NULL
|
Permissions which apply to offline.script
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema offline
offline.session Structure
F-Key |
Name |
Type |
Description |
|
key |
text |
PRIMARY KEY
|
|
org |
integer |
NOT NULL
|
|
description |
text |
|
|
creator |
integer |
NOT NULL
|
|
create_time |
integer |
NOT NULL
|
|
in_process |
integer |
NOT NULL
|
|
start_time |
integer |
|
|
end_time |
integer |
|
|
num_complete |
integer |
NOT NULL
|
Permissions which apply to offline.session
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema offline
Schema permission
permission.grp_perm_map Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
permission.grp_tree.id
|
grp |
integer |
UNIQUE#1
NOT NULL
|
permission.perm_list.id
|
perm |
integer |
UNIQUE#1
NOT NULL
|
|
depth |
integer |
NOT NULL
|
|
grantable |
boolean |
NOT NULL
DEFAULT false
|
Permissions which apply to permission.grp_perm_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema permission
permission.grp_tree Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
name |
text |
UNIQUE
NOT NULL
|
permission.grp_tree.id
|
parent |
integer |
|
|
usergroup |
boolean |
NOT NULL
DEFAULT true
|
|
perm_interval |
interval |
NOT NULL
DEFAULT '3 years'::interval
|
|
description |
text |
|
|
application_perm |
text |
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to permission.grp_tree
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema permission
permission.perm_list Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
code |
text |
UNIQUE
NOT NULL
|
|
description |
text |
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to permission.perm_list
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema permission
permission.usr_grp_map Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
UNIQUE#1
NOT NULL
|
permission.grp_tree.id
|
grp |
integer |
UNIQUE#1
NOT NULL
|
Permissions which apply to permission.usr_grp_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema permission
permission.usr_object_perm_map Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
UNIQUE#1
NOT NULL
|
permission.perm_list.id
|
perm |
integer |
UNIQUE#1
NOT NULL
|
|
object_type |
text |
UNIQUE#1
NOT NULL
|
|
object_id |
text |
UNIQUE#1
NOT NULL
|
|
grantable |
boolean |
NOT NULL
DEFAULT false
|
Index -
Schema permission
permission.usr_perm_map Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
UNIQUE#1
NOT NULL
|
permission.perm_list.id
|
perm |
integer |
UNIQUE#1
NOT NULL
|
|
depth |
integer |
NOT NULL
|
|
grantable |
boolean |
NOT NULL
DEFAULT false
|
Permissions which apply to permission.usr_perm_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema permission
permission.usr_work_ou_map Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
usr |
integer |
UNIQUE#1
NOT NULL
|
actor.org_unit.id
|
work_ou |
integer |
UNIQUE#1
NOT NULL
|
Index -
Schema permission
Returns: SET OF grp_tree
Language: SQL
SELECT a.*
FROM connectby('permission.grp_tree'::text,'parent'::text,'id'::text,'name'::text,$1::text,100,'.'::text)
AS t(keyid text, parent_keyid text, level int, branch text,pos int)
JOIN permission.grp_tree a ON a.id::text = t.keyid::text
ORDER BY
CASE WHEN a.parent IS NULL
THEN 0
ELSE 1
END, a.name;
Returns: SET OF grp_tree
Language: SQL
SELECT *
FROM permission.grp_ancestors($1)
UNION
SELECT *
FROM permission.grp_ancestors($2);
Returns: SET OF grp_tree
Language: SQL
SELECT *
FROM permission.grp_ancestors($1)
INTERSECT
SELECT *
FROM permission.grp_ancestors($2);
Returns: SET OF grp_tree
Language: SQL
SELECT a.*
FROM connectby('permission.grp_tree'::text,'id'::text,'parent'::text,'name'::text,$1::text,100,'.'::text)
AS t(keyid text, parent_keyid text, level int, branch text,pos int)
JOIN permission.grp_tree a ON a.id::text = t.keyid::text
ORDER BY CASE WHEN a.parent IS NULL THEN 0 ELSE 1 END, a.name;
Returns: SET OF grp_tree
Language: SQL
SELECT *
FROM permission.grp_ancestors($1)
UNION
SELECT *
FROM permission.grp_descendants($1);
Returns: integer
Language: SQL
SELECT COUNT(id)::INT FROM (
SELECT id FROM permission.grp_combined_ancestors($1, $2)
EXCEPT
SELECT id FROM permission.grp_common_ancestors($1, $2)
) z;
Returns: boolean
Language: PLPGSQL
DECLARE
r_usr actor.usr%ROWTYPE;
r_perm permission.usr_perm_map%ROWTYPE;
BEGIN
SELECT * INTO r_usr FROM actor.usr WHERE id = iuser;
IF r_usr.active = FALSE THEN
RETURN FALSE;
END IF;
IF r_usr.super_user = TRUE THEN
RETURN TRUE;
END IF;
FOR r_perm IN SELECT *
FROM permission.usr_perms(iuser) p
JOIN permission.perm_list l
ON (l.id = p.perm)
WHERE (l.code = tperm AND p.grantable IS TRUE)
LOOP
PERFORM *
FROM actor.org_unit_descendants(target_ou,r_perm.depth)
WHERE id = r_usr.home_ou;
IF FOUND THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END LOOP;
RETURN FALSE;
END;
Returns: boolean
Language: PLPGSQL
DECLARE
r_usr actor.usr%ROWTYPE;
r_perm permission.usr_perm_map%ROWTYPE;
BEGIN
SELECT * INTO r_usr FROM actor.usr WHERE id = iuser;
IF r_usr.active = FALSE THEN
RETURN FALSE;
END IF;
IF r_usr.super_user = TRUE THEN
RETURN TRUE;
END IF;
FOR r_perm IN SELECT *
FROM permission.usr_perms(iuser) p
JOIN permission.perm_list l
ON (l.id = p.perm)
WHERE l.code = tperm
OR p.perm = -1 LOOP
PERFORM *
FROM actor.org_unit_descendants(target_ou,r_perm.depth)
WHERE id = r_usr.home_ou;
IF FOUND THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END LOOP;
RETURN FALSE;
END;
Returns: boolean
Language: SQL
SELECT permission.usr_has_object_perm( $1, $2, $3, $4, -1 );
Returns: boolean
Language: PLPGSQL
DECLARE
r_usr actor.usr%ROWTYPE;
res BOOL;
BEGIN
SELECT * INTO r_usr FROM actor.usr WHERE id = iuser;
IF r_usr.active = FALSE THEN
RETURN FALSE;
END IF;
IF r_usr.super_user = TRUE THEN
RETURN TRUE;
END IF;
SELECT TRUE INTO res FROM permission.usr_object_perm_map WHERE usr = r_usr.id AND object_type = obj_type AND object_id = obj_id;
IF FOUND THEN
RETURN TRUE;
END IF;
IF target_ou > -1 THEN
RETURN permission.usr_has_perm( iuser, tperm, target_ou);
END IF;
RETURN FALSE;
END;
Returns: boolean
Language: SQL
SELECT CASE
WHEN permission.usr_has_home_perm( $1, $2, $3 ) THEN TRUE
WHEN permission.usr_has_work_perm( $1, $2, $3 ) THEN TRUE
ELSE FALSE
END;
Returns: boolean
Language: PLPGSQL
DECLARE
r_woum permission.usr_work_ou_map%ROWTYPE;
r_usr actor.usr%ROWTYPE;
r_perm permission.usr_perm_map%ROWTYPE;
BEGIN
SELECT * INTO r_usr FROM actor.usr WHERE id = iuser;
IF r_usr.active = FALSE THEN
RETURN FALSE;
END IF;
IF r_usr.super_user = TRUE THEN
RETURN TRUE;
END IF;
FOR r_perm IN SELECT *
FROM permission.usr_perms(iuser) p
JOIN permission.perm_list l
ON (l.id = p.perm)
WHERE l.code = tperm
OR p.perm = -1
LOOP
FOR r_woum IN SELECT *
FROM permission.usr_work_ou_map
WHERE usr = iuser
LOOP
PERFORM *
FROM actor.org_unit_descendants(target_ou,r_perm.depth)
WHERE id = r_woum.work_ou;
IF FOUND THEN
RETURN TRUE;
END IF;
END LOOP;
END LOOP;
RETURN FALSE;
END;
Returns: SET OF usr_perm_map
Language: SQL
SELECT DISTINCT ON (usr,perm) *
FROM (
(SELECT * FROM permission.usr_perm_map WHERE usr = $1)
UNION ALL
(SELECT -p.id, $1 AS usr, p.perm, p.depth, p.grantable
FROM permission.grp_perm_map p
WHERE p.grp IN (
SELECT (permission.grp_ancestors(
(SELECT profile FROM actor.usr WHERE id = $1)
)).id
)
)
UNION ALL
(SELECT -p.id, $1 AS usr, p.perm, p.depth, p.grantable
FROM permission.grp_perm_map p
WHERE p.grp IN (SELECT (permission.grp_ancestors(m.grp)).id FROM permission.usr_grp_map m WHERE usr = $1))
) AS x
ORDER BY 2, 3, 1 DESC, 5 DESC ;
Schema public
Standard public schema
public.blackshear_fps Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
item_form |
text |
|
|
date1 |
text |
|
|
record_type |
text |
|
|
bib_lvl |
text |
|
|
title |
text |
|
Index -
Schema public
public.blackshear_pines_fps Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
item_form |
text |
|
|
date1 |
text |
|
|
record_type |
text |
|
|
bib_lvl |
text |
|
|
title |
text |
|
Index -
Schema public
public.catoosa_id_list Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
Index -
Schema public
public.circ_07 Structure
F-Key |
Name |
Type |
Description |
|
month |
text |
|
|
type |
text |
|
|
count |
bigint |
|
Permissions which apply to public.circ_07
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.cn_hold_fix Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
target |
bigint |
|
|
current_copy |
bigint |
|
|
hold_type |
text |
|
|
pickup_lib |
integer |
|
|
selection_ou |
integer |
|
|
selection_depth |
integer |
|
|
request_time |
date |
|
|
capture_time |
timestamp with time zone |
|
|
request_lib |
integer |
|
|
requestor |
integer |
|
|
usr |
integer |
|
Permissions which apply to public.cn_hold_fix
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.copy_cnt_fix Structure
F-Key |
Name |
Type |
Description |
|
item_id |
text |
|
|
item_key |
integer |
|
Permissions which apply to public.copy_cnt_fix
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.copy_hold_fix Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
target |
bigint |
|
|
current_copy |
bigint |
|
|
hold_type |
text |
|
|
pickup_lib |
integer |
|
|
selection_ou |
integer |
|
|
selection_depth |
integer |
|
|
request_time |
date |
|
|
capture_time |
timestamp with time zone |
|
|
request_lib |
integer |
|
|
requestor |
integer |
|
|
usr |
integer |
|
Permissions which apply to public.copy_hold_fix
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.existing_record_fp Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
item_form |
text |
|
|
date1 |
text |
|
|
item_type |
text |
|
|
bib_level |
text |
|
|
title |
text |
|
|
author |
text |
|
|
isbn |
text |
|
|
issn |
text |
|
|
lccn |
text |
|
|
pages |
text |
|
|
publisher |
text |
|
|
pubyear |
text |
|
|
edition |
text |
|
Permissions which apply to public.existing_record_fp
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.fix_brad Structure
F-Key |
Name |
Type |
Description |
|
lib |
text |
|
|
amount |
text |
|
Permissions which apply to public.fix_brad
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.fix_fixme Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
recuring_fine |
numeric(6,2) |
|
|
max_fine |
numeric |
|
Permissions which apply to public.fix_fixme
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.holds_per_user_by_tens Structure
F-Key |
Name |
Type |
Description |
|
users |
bigint |
|
|
tens_group |
text |
|
SELECT count
(x.usr) AS users
, x.tens_group
FROM (
SELECT hold_request.usr
, (
(
(
(
(
(count
(*) / 10
) * 10
) + 1
)
)::text || ' - '::text
) ||
(
(
(
(count
(*) / 10
) * 10
) + 10
)
)::text
) AS tens_group
FROM"action".hold_request
WHERE (
(hold_request.cancel_time IS NULL)
AND (hold_request.fulfillment_time IS NULL)
)
GROUP BY hold_request.usr
) x
GROUP BY x.tens_group
ORDER BY character_length
(x.tens_group)
, x.tens_group;
Permissions which apply to public.holds_per_user_by_tens
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.joined_billing Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
numeric |
numeric(8,2) |
|
Permissions which apply to public.joined_billing
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.joined_legacy Structure
F-Key |
Name |
Type |
Description |
|
cat_1 |
text |
|
|
creation_date |
date |
|
|
cat_2 |
text |
|
|
current_location |
text |
|
|
item_id |
text |
|
|
cat_key |
integer |
|
|
call_key |
integer |
|
|
item_key |
integer |
|
|
price |
numeric(8,2) |
|
|
item_type |
text |
|
|
owning_library |
text |
|
|
shadow |
boolean |
|
|
item_comment |
text |
|
|
last_import_date |
date |
|
|
home_location |
text |
|
|
call_num |
text |
|
Permissions which apply to public.joined_legacy
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_baduser_map Structure
F-Key |
Name |
Type |
Description |
|
barcode |
text |
|
|
id |
integer |
|
|
type |
text |
|
Permissions which apply to public.legacy_baduser_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_bill_amount Structure
F-Key |
Name |
Type |
Description |
|
barcode |
text |
|
|
bill |
integer |
|
Permissions which apply to public.legacy_bill_amount
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_callnum Structure
F-Key |
Name |
Type |
Description |
|
call_num |
text |
|
|
cat_key |
integer |
|
|
call_key |
integer |
|
|
shadow |
boolean |
|
Permissions which apply to public.legacy_callnum
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_charge Structure
F-Key |
Name |
Type |
Description |
|
charge_date |
text |
|
|
due_date |
text |
|
|
renewal_date |
text |
|
|
charge_key1 |
integer |
|
|
charge_key2 |
integer |
|
|
charge_key3 |
integer |
|
|
charge_key4 |
integer |
|
|
user_key |
integer |
|
|
overdue |
boolean |
|
|
library |
text |
|
|
claim_return_date |
text |
|
Permissions which apply to public.legacy_charge
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_copy_status_map Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
name |
text |
|
Permissions which apply to public.legacy_copy_status_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_email Structure
F-Key |
Name |
Type |
Description |
|
user_key |
integer |
|
|
email |
text |
|
Permissions which apply to public.legacy_email
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_hold Structure
F-Key |
Name |
Type |
Description |
|
available |
text |
|
|
status |
text |
|
|
notified |
date |
|
|
num_of_notices |
integer |
|
|
cat_key |
integer |
|
|
call_key |
integer |
|
|
item_key |
integer |
|
|
hold_key |
integer |
|
|
user_key |
integer |
|
|
hold_date |
date |
|
|
hold_range |
text |
|
|
pickup_lib |
text |
|
|
placing_lib |
text |
|
|
owning_lib |
text |
|
|
inactive_date |
date |
|
|
inactive_reason |
text |
|
|
hold_level |
text |
|
Permissions which apply to public.legacy_hold
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_item Structure
F-Key |
Name |
Type |
Description |
|
cat_1 |
text |
|
|
creation_date |
date |
|
|
cat_2 |
text |
|
|
current_location |
text |
|
|
item_id |
text |
|
|
cat_key |
integer |
|
|
call_key |
integer |
|
|
item_key |
integer |
|
|
price |
numeric(8,2) |
|
|
item_type |
text |
|
|
owning_library |
text |
|
|
shadow |
boolean |
|
|
item_comment |
text |
|
|
last_import_date |
date |
|
|
home_location |
text |
|
Permissions which apply to public.legacy_item
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_lib_change_circ Structure
F-Key |
Name |
Type |
Description |
|
lib |
integer |
|
|
item |
bigint |
|
Permissions which apply to public.legacy_lib_change_circ
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_lib_max_fine Structure
F-Key |
Name |
Type |
Description |
|
lib |
text |
|
|
max_fine |
numeric(6,2) |
|
Permissions which apply to public.legacy_lib_max_fine
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_non_real_user Structure
F-Key |
Name |
Type |
Description |
|
profile |
text |
|
|
lib |
text |
|
|
barcode |
text |
|
Permissions which apply to public.legacy_non_real_user
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_piece_count Structure
F-Key |
Name |
Type |
Description |
|
barcode |
text |
|
|
cnt |
integer |
|
Permissions which apply to public.legacy_piece_count
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_pre_cat Structure
F-Key |
Name |
Type |
Description |
|
barcode |
text |
|
|
lib |
text |
|
|
title |
text |
|
|
author |
text |
|
Permissions which apply to public.legacy_pre_cat
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_proc_fees Structure
F-Key |
Name |
Type |
Description |
|
lib |
text |
|
|
amount |
text |
|
Permissions which apply to public.legacy_proc_fees
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_recirc_lib Structure
F-Key |
Name |
Type |
Description |
|
barcode |
text |
|
|
lib |
text |
|
Permissions which apply to public.legacy_recirc_lib
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_renewal_count Structure
F-Key |
Name |
Type |
Description |
|
barcode |
text |
|
|
cnt |
integer |
|
Permissions which apply to public.legacy_renewal_count
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_status_change_circ Structure
F-Key |
Name |
Type |
Description |
|
profile |
text |
|
|
item |
bigint |
|
Permissions which apply to public.legacy_status_change_circ
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_transit Structure
F-Key |
Name |
Type |
Description |
|
destination_lib |
text |
|
|
owning_lib |
text |
|
|
starting_lib |
text |
|
|
transit_date |
timestamp with time zone |
|
|
transit_reason |
text |
|
|
cat_key |
integer |
|
|
call_key |
integer |
|
|
item_key |
integer |
|
|
hold_key |
integer |
|
Permissions which apply to public.legacy_transit
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.legacy_type_circ_map Structure
F-Key |
Name |
Type |
Description |
|
item_type |
text |
|
|
recuring_fine |
numeric(6,2) |
|
|
renewals |
integer |
|
Permissions which apply to public.legacy_type_circ_map
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.non_match_rec_list Structure
F-Key |
Name |
Type |
Description |
|
pines_id |
bigint |
|
|
th_id |
integer |
|
|
item_form |
text |
|
|
date1 |
text |
|
|
item_type |
text |
|
|
bib_level |
text |
|
|
title |
text |
|
Permissions which apply to public.non_match_rec_list
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.non_unique Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
creator |
integer |
|
|
editor |
integer |
|
|
source |
integer |
|
|
quality |
integer |
|
|
create_date |
timestamp with time zone |
|
|
edit_date |
timestamp with time zone |
|
|
active |
boolean |
|
|
deleted |
boolean |
|
|
fingerprint |
text |
|
|
tcn_source |
text |
|
|
tcn_value |
text |
|
|
marc |
text |
|
|
last_xact_id |
text |
|
Permissions which apply to public.non_unique
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.note_temp_table Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
note |
text |
|
Permissions which apply to public.note_temp_table
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pg_ts_cfg Structure
F-Key |
Name |
Type |
Description |
|
ts_name |
text |
PRIMARY KEY
|
|
prs_name |
text |
NOT NULL
|
|
locale |
text |
|
Permissions which apply to public.pg_ts_cfg
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pg_ts_cfgmap Structure
F-Key |
Name |
Type |
Description |
|
ts_name |
text |
PRIMARY KEY
|
|
tok_alias |
text |
PRIMARY KEY
|
|
dict_name |
text[] |
|
Permissions which apply to public.pg_ts_cfgmap
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pg_ts_dict Structure
F-Key |
Name |
Type |
Description |
|
dict_name |
text |
PRIMARY KEY
|
|
dict_init |
regprocedure |
|
|
dict_initoption |
text |
|
|
dict_lexize |
regprocedure |
NOT NULL
|
|
dict_comment |
text |
|
Permissions which apply to public.pg_ts_dict
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pg_ts_parser Structure
F-Key |
Name |
Type |
Description |
|
prs_name |
text |
PRIMARY KEY
|
|
prs_start |
regprocedure |
NOT NULL
|
|
prs_nexttoken |
regprocedure |
NOT NULL
|
|
prs_end |
regprocedure |
NOT NULL
|
|
prs_headline |
regprocedure |
NOT NULL
|
|
prs_lextype |
regprocedure |
NOT NULL
|
|
prs_comment |
text |
|
Permissions which apply to public.pg_ts_parser
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pines_260_pubdate Structure
F-Key |
Name |
Type |
Description |
|
record |
bigint |
|
|
date1 |
text |
|
Permissions which apply to public.pines_260_pubdate
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pines_all_pubdate Structure
F-Key |
Name |
Type |
Description |
|
record |
bigint |
|
|
date1 |
text |
|
Permissions which apply to public.pines_all_pubdate
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pines_both_pubdate Structure
F-Key |
Name |
Type |
Description |
|
record |
bigint |
|
|
date1 |
text |
|
Permissions which apply to public.pines_both_pubdate
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pines_fp Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
item_form |
text |
|
|
item_type |
text |
|
|
bib_level |
text |
|
|
title |
text |
|
|
secondary_a |
text |
|
|
secondary_b |
text |
|
|
secondary_c |
text |
|
|
secondary_d |
text |
|
|
secondary_e |
text |
|
|
secondary_f |
text |
|
Permissions which apply to public.pines_fp
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pines_pubdate Structure
F-Key |
Name |
Type |
Description |
|
record |
bigint |
|
|
date1 |
text |
|
Permissions which apply to public.pines_pubdate
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.pines_title Structure
F-Key |
Name |
Type |
Description |
|
record |
bigint |
|
|
title |
text |
|
Permissions which apply to public.pines_title
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.prematurely_closed_xacs Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
total_paid |
numeric |
|
|
last_payment_ts |
timestamp with time zone |
|
|
last_payment_note |
text |
|
|
last_payment_type |
name |
|
|
total_owed |
numeric |
|
|
last_billing_ts |
timestamp with time zone |
|
|
last_billing_note |
text |
|
|
last_billing_type |
text |
|
|
balance_owed |
numeric |
|
|
xact_type |
name |
|
Index -
Schema public
public.quitman_full_fingerprint_set Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
item_form |
text |
|
|
substring |
text |
|
|
item_type |
text |
|
|
bib_level |
text |
|
|
title |
text |
|
Index -
Schema public
public.rec_list Structure
F-Key |
Name |
Type |
Description |
|
pines_id |
bigint |
|
|
th_id |
integer |
|
|
item_form |
text |
|
|
date1 |
text |
|
|
item_type |
text |
|
|
bib_level |
text |
|
|
title |
text |
|
Permissions which apply to public.rec_list
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.secondary_rec_list Structure
F-Key |
Name |
Type |
Description |
|
pines_id |
bigint |
|
|
th_id |
integer |
|
|
item_form |
text |
|
|
date1 |
text |
|
|
item_type |
text |
|
|
bib_level |
text |
|
|
title |
text |
|
Permissions which apply to public.secondary_rec_list
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.secondary_rec_list2 Structure
F-Key |
Name |
Type |
Description |
|
pines_id |
bigint |
|
|
th_id |
integer |
|
|
item_form |
text |
|
|
date1 |
text |
|
|
item_type |
text |
|
|
bib_level |
text |
|
|
title |
text |
|
Permissions which apply to public.secondary_rec_list2
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.testview Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
metarecord |
bigint |
|
|
fingerprint |
text |
|
|
quality |
integer |
|
|
tcn_source |
text |
|
|
tcn_value |
text |
|
|
title |
text |
|
|
author |
text |
|
|
publisher |
text |
|
|
pubdate |
text |
|
|
isbn |
text |
|
|
issn |
text |
|
|
series_title |
text |
|
|
series_statement |
text |
|
|
summary |
text |
|
|
topic_subject |
text |
|
|
geographic_subject |
text |
|
|
genre |
text |
|
|
name_subject |
text |
|
|
corporate_subject |
text |
|
|
external_uri |
text |
|
SELECT r.id
, s.metarecord
, r.fingerprint
, r.quality
, r.tcn_source
, r.tcn_value
, (
SELECT"first"
(full_rec.value) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '245'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
) AS title
, (
SELECT"first"
(full_rec.value) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '100'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
) AS author
, (
SELECT"first"
(full_rec.value) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '260'::bpchar)
AND (full_rec.subfield = 'b'::text)
)
AND (full_rec.record = r.id)
)
) AS publisher
, (
SELECT"first"
("substring"
(full_rec.value
, E'\\d+'::text
)
) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '260'::bpchar)
AND (full_rec.subfield = 'c'::text)
)
AND (full_rec.record = r.id)
)
) AS pubdate
, (
SELECT"first"
("substring"
(full_rec.value
, E'^\\w+'::text
)
) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(
(full_rec.tag = '020'::bpchar)
OR (full_rec.tag = '024'::bpchar)
)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
) AS isbn
, (
SELECT"first"
("substring"
(full_rec.value
, E'^\\S+'::text
)
) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '022'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
) AS issn
, (
SELECT"first"
(full_rec.value) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(
(full_rec.tag = '830'::bpchar)
OR (full_rec.tag = '440'::bpchar)
)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
) AS series_title
, (
SELECT"first"
(full_rec.value) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '490'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
) AS series_statement
, (
SELECT"first"
(full_rec.value) AS title
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '520'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
) AS summary
, (
('["'::text || array_to_string
(ARRAY
(
SELECT DISTINCT "replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
) AS "replace"
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '650'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY"replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
)
)
,'","'::text
)
) || '"]'::text
) AS topic_subject
, (
('["'::text || array_to_string
(ARRAY
(
SELECT DISTINCT "replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
) AS "replace"
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '651'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY"replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
)
)
,'","'::text
)
) || '"]'::text
) AS geographic_subject
, (
('["'::text || array_to_string
(ARRAY
(
SELECT DISTINCT "replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
) AS "replace"
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '655'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY"replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
)
)
,'","'::text
)
) || '"]'::text
) AS genre
, (
('["'::text || array_to_string
(ARRAY
(
SELECT DISTINCT "replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
) AS "replace"
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '600'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY"replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
)
)
,'","'::text
)
) || '"]'::text
) AS name_subject
, (
('["'::text || array_to_string
(ARRAY
(
SELECT DISTINCT "replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
) AS "replace"
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '610'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY"replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
)
)
,'","'::text
)
) || '"]'::text
) AS corporate_subject
, (
('["'::text || array_to_string
(ARRAY
(
SELECT"replace"
("replace"
(full_rec.value
,'"'::text
,'"'::text
)
, E'\\'::text
, E'\\\\'::text
) AS "replace"
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '856'::bpchar)
AND (
(
(full_rec.subfield = '3'::text)
OR (full_rec.subfield = 'y'::text)
)
OR (full_rec.subfield = 'u'::text)
)
)
AND (full_rec.record = r.id)
)
ORDER BY CASE WHEN
(
(full_rec.subfield = '3'::text)
OR (full_rec.subfield = 'y'::text)
) THEN 0 ELSE 1 END
)
,'","'::text
)
) || '"]'::text
) AS external_uri
FROM (biblio.record_entry r
JOIN metabib.metarecord_source_map s
ON (
(s.source = r.id)
)
)
WHERE (r.deleted IS FALSE)
GROUP BY r.id
, s.metarecord
, r.fingerprint
, r.quality
, r.tcn_source
, r.tcn_value;
Permissions which apply to public.testview
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.th_fingerprint_round_7 Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
item_form |
text |
|
|
date1 |
text |
|
|
item_type |
text |
|
|
bib_level |
text |
|
|
title |
text |
|
Permissions which apply to public.th_fingerprint_round_7
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.th_rank Structure
F-Key |
Name |
Type |
Description |
|
pines_id |
bigint |
|
|
subtitle |
text |
|
|
items |
bigint |
|
Permissions which apply to public.th_rank
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
public.title_hold_fix Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
target |
integer |
|
|
current_copy |
bigint |
|
|
hold_type |
text |
|
|
pickup_lib |
integer |
|
|
selection_ou |
integer |
|
|
selection_depth |
integer |
|
|
request_time |
date |
|
|
capture_time |
timestamp with time zone |
|
|
request_lib |
integer |
|
|
requestor |
integer |
|
|
usr |
integer |
|
Permissions which apply to public.title_hold_fix
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema public
Returns: text
Language: SQL
select prs_name from pg_ts_cfg where oid = show_curcfg()
Returns: text
Language: INTERNAL
aggregate_dummy
Returns: tsvector
Language: INTERNAL
aggregate_dummy
Returns: anyarray
Language: INTERNAL
aggregate_dummy
Returns: text
Language: PLPERLU
my $txt = shift;
$txt =~ s/^\s+//o;
$txt =~ s/[\[\]\{\}\(\)`'"#<>\*\?\-\+\$\\]+//og;
$txt =~ s/\s+$//o;
if ($txt =~ /(\d{3}(?:\.\d+)?)/o) {
return $1;
} else {
return (split /\s+/, $txt)[0];
}
Returns: text
Language: SQL
SELECT SUBSTRING(call_number_dewey($1) FROM 1 FOR $2);
Returns: tsvector
Language: C
concat
Returns: SET OF record
Language: C
connectby_text
Returns: SET OF record
Language: C
connectby_text
Returns: SET OF record
Language: C
connectby_text_serial
Returns: SET OF record
Language: C
connectby_text_serial
Returns: SET OF record
Language: C
crosstab
Returns: SET OF record
Language: C
crosstab
Returns: SET OF record
Language: C
crosstab_hash
Returns: SET OF tablefunc_crosstab_2
Language: C
crosstab
Returns: SET OF tablefunc_crosstab_3
Language: C
crosstab
Returns: SET OF tablefunc_crosstab_4
Language: C
crosstab
Returns: internal
Language: C
dex_init
Returns: internal
Language: C
dex_lexize
Returns: text
Language: PLPERLU
use Unicode::Normalize;
my $x = NFC(shift);
$x =~ s/([\x{0080}-\x{fffd}])/sprintf('&#x%X;',ord($1))/sgoe;
return $x;
Returns: boolean
Language: C
boolean operation with text index
exectsq
Returns: SET OF anyelement
Language: SQL
SELECT ($1)[s] FROM generate_series(1, array_upper($1, 1)) AS s;
Returns: text
Language: SQL
SELECT public.extract_marc_field($1,$2,$3,'');
Returns: text
Language: SQL
SELECT regexp_replace(array_to_string( array_accum( output ),' ' ),$4,'','g') FROM xpath_table('id', 'marc', $1, $3, 'id='||$2)x(id INT, output TEXT);
Returns: anyelement
Language: INTERNAL
aggregate_dummy
Returns: text
Language: SQL
SELECT SUBSTRING( $1, 1, 5);
Returns: anyelement
Language: SQL
SELECT CASE WHEN $1 IS NULL THEN $2 ELSE $1 END;
Returns: text
Language: SQL
SELECT SUBSTRING( $1 FROM $_$^\S+$_$);
Returns: internal
Language: C
gbt_bit_compress
Returns: boolean
Language: C
gbt_bit_consistent
Returns: internal
Language: C
gbt_bit_penalty
Returns: internal
Language: C
gbt_bit_picksplit
Returns: internal
Language: C
gbt_bit_same
Returns: gbtreekey_var
Language: C
gbt_bit_union
Returns: internal
Language: C
gbt_bpchar_compress
Returns: boolean
Language: C
gbt_bpchar_consistent
Returns: internal
Language: C
gbt_bytea_compress
Returns: boolean
Language: C
gbt_bytea_consistent
Returns: internal
Language: C
gbt_bytea_penalty
Returns: internal
Language: C
gbt_bytea_picksplit
Returns: internal
Language: C
gbt_bytea_same
Returns: gbtreekey_var
Language: C
gbt_bytea_union
Returns: internal
Language: C
gbt_cash_compress
Returns: boolean
Language: C
gbt_cash_consistent
Returns: internal
Language: C
gbt_cash_penalty
Returns: internal
Language: C
gbt_cash_picksplit
Returns: internal
Language: C
gbt_cash_same
Returns: gbtreekey8
Language: C
gbt_cash_union
Returns: internal
Language: C
gbt_cidr_compress
Returns: boolean
Language: C
gbt_cidr_consistent
Returns: internal
Language: C
gbt_date_compress
Returns: boolean
Language: C
gbt_date_consistent
Returns: internal
Language: C
gbt_date_penalty
Returns: internal
Language: C
gbt_date_picksplit
Returns: internal
Language: C
gbt_date_same
Returns: gbtreekey8
Language: C
gbt_date_union
Returns: internal
Language: C
gbt_decompress
Returns: internal
Language: C
gbt_float4_compress
Returns: boolean
Language: C
gbt_float4_consistent
Returns: internal
Language: C
gbt_float4_penalty
Returns: internal
Language: C
gbt_float4_picksplit
Returns: internal
Language: C
gbt_float4_same
Returns: gbtreekey8
Language: C
gbt_float4_union
Returns: internal
Language: C
gbt_float8_compress
Returns: boolean
Language: C
gbt_float8_consistent
Returns: internal
Language: C
gbt_float8_penalty
Returns: internal
Language: C
gbt_float8_picksplit
Returns: internal
Language: C
gbt_float8_same
Returns: gbtreekey16
Language: C
gbt_float8_union
Returns: internal
Language: C
gbt_inet_compress
Returns: boolean
Language: C
gbt_inet_consistent
Returns: internal
Language: C
gbt_inet_penalty
Returns: internal
Language: C
gbt_inet_picksplit
Returns: internal
Language: C
gbt_inet_same
Returns: gbtreekey16
Language: C
gbt_inet_union
Returns: internal
Language: C
gbt_int2_compress
Returns: boolean
Language: C
gbt_int2_consistent
Returns: internal
Language: C
gbt_int2_penalty
Returns: internal
Language: C
gbt_int2_picksplit
Returns: internal
Language: C
gbt_int2_same
Returns: gbtreekey4
Language: C
gbt_int2_union
Returns: internal
Language: C
gbt_int4_compress
Returns: boolean
Language: C
gbt_int4_consistent
Returns: internal
Language: C
gbt_int4_penalty
Returns: internal
Language: C
gbt_int4_picksplit
Returns: internal
Language: C
gbt_int4_same
Returns: gbtreekey8
Language: C
gbt_int4_union
Returns: internal
Language: C
gbt_int8_compress
Returns: boolean
Language: C
gbt_int8_consistent
Returns: internal
Language: C
gbt_int8_penalty
Returns: internal
Language: C
gbt_int8_picksplit
Returns: internal
Language: C
gbt_int8_same
Returns: gbtreekey16
Language: C
gbt_int8_union
Returns: internal
Language: C
gbt_intv_compress
Returns: boolean
Language: C
gbt_intv_consistent
Returns: internal
Language: C
gbt_intv_decompress
Returns: internal
Language: C
gbt_intv_penalty
Returns: internal
Language: C
gbt_intv_picksplit
Returns: internal
Language: C
gbt_intv_same
Returns: gbtreekey32
Language: C
gbt_intv_union
Returns: internal
Language: C
gbt_macad_compress
Returns: boolean
Language: C
gbt_macad_consistent
Returns: internal
Language: C
gbt_macad_penalty
Returns: internal
Language: C
gbt_macad_picksplit
Returns: internal
Language: C
gbt_macad_same
Returns: gbtreekey16
Language: C
gbt_macad_union
Returns: internal
Language: C
gbt_numeric_compress
Returns: boolean
Language: C
gbt_numeric_consistent
Returns: internal
Language: C
gbt_numeric_penalty
Returns: internal
Language: C
gbt_numeric_picksplit
Returns: internal
Language: C
gbt_numeric_same
Returns: gbtreekey_var
Language: C
gbt_numeric_union
Returns: internal
Language: C
gbt_oid_compress
Returns: boolean
Language: C
gbt_oid_consistent
Returns: internal
Language: C
gbt_oid_penalty
Returns: internal
Language: C
gbt_oid_picksplit
Returns: internal
Language: C
gbt_oid_same
Returns: gbtreekey8
Language: C
gbt_oid_union
Returns: internal
Language: C
gbt_text_compress
Returns: boolean
Language: C
gbt_text_consistent
Returns: internal
Language: C
gbt_text_penalty
Returns: internal
Language: C
gbt_text_picksplit
Returns: internal
Language: C
gbt_text_same
Returns: gbtreekey_var
Language: C
gbt_text_union
Returns: internal
Language: C
gbt_time_compress
Returns: boolean
Language: C
gbt_time_consistent
Returns: internal
Language: C
gbt_time_penalty
Returns: internal
Language: C
gbt_time_picksplit
Returns: internal
Language: C
gbt_time_same
Returns: gbtreekey16
Language: C
gbt_time_union
Returns: internal
Language: C
gbt_timetz_compress
Returns: boolean
Language: C
gbt_timetz_consistent
Returns: internal
Language: C
gbt_ts_compress
Returns: boolean
Language: C
gbt_ts_consistent
Returns: internal
Language: C
gbt_ts_penalty
Returns: internal
Language: C
gbt_ts_picksplit
Returns: internal
Language: C
gbt_ts_same
Returns: gbtreekey16
Language: C
gbt_ts_union
Returns: internal
Language: C
gbt_tstz_compress
Returns: boolean
Language: C
gbt_tstz_consistent
Returns: internal
Language: C
gbt_var_decompress
Returns: gbtreekey16
Language: C
gbtreekey_in
Returns: cstring
Language: C
gbtreekey_out
Returns: gbtreekey32
Language: C
gbtreekey_in
Returns: cstring
Language: C
gbtreekey_out
Returns: gbtreekey4
Language: C
gbtreekey_in
Returns: cstring
Language: C
gbtreekey_out
Returns: gbtreekey8
Language: C
gbtreekey_in
Returns: cstring
Language: C
gbtreekey_out
Returns: gbtreekey_var
Language: C
gbtreekey_in
Returns: cstring
Language: C
gbtreekey_out
Returns: text
Language: C
get_covers
Returns: internal
Language: C
gtrgm_compress
Returns: boolean
Language: C
gtrgm_consistent
Returns: internal
Language: C
gtrgm_decompress
Returns: gtrgm
Language: C
gtrgm_in
Returns: cstring
Language: C
gtrgm_out
Returns: internal
Language: C
gtrgm_penalty
Returns: internal
Language: C
gtrgm_picksplit
Returns: internal
Language: C
gtrgm_same
Returns: integer[]
Language: C
gtrgm_union
Returns: internal
Language: C
gtsvector_compress
Returns: boolean
Language: C
gtsvector_consistent
Returns: internal
Language: C
gtsvector_decompress
Returns: gtsvector
Language: C
gtsvector_in
Returns: cstring
Language: C
gtsvector_out
Returns: internal
Language: C
gtsvector_penalty
Returns: internal
Language: C
gtsvector_picksplit
Returns: internal
Language: C
gtsvector_same
Returns: integer[]
Language: C
gtsvector_union
Returns: text
Language: C
headline
Returns: text
Language: C
headline
Returns: text
Language: C
headline_current
Returns: text
Language: C
headline_current
Returns: text
Language: C
headline_byname
Returns: text
Language: C
headline_byname
Returns: anyelement
Language: INTERNAL
aggregate_dummy
Returns: anyelement
Language: SQL
SELECT $2;
Returns: integer
Language: C
tsvector_length
Returns: text[]
Language: C
lexize
Returns: text[]
Language: C
lexize_bycurrent
Returns: text[]
Language: C
lexize_byname
Returns: text
Language: PLPERLU
return lc(shift);
Returns: text
Language: SQL
SELECT public.naco_normalize($1,'');
Returns: text
Language: PLPERLU
use Unicode::Normalize;
my $txt = lc(shift);
my $sf = shift;
$txt = NFD($txt);
$txt =~ s/\pM+//go; # Remove diacritics
$txt =~ s/\xE6/AE/go; # Convert ae digraph
$txt =~ s/\x{153}/OE/go;# Convert oe digraph
$txt =~ s/\xFE/TH/go; # Convert Icelandic thorn
$txt =~ tr/\x{2070}\x{2071}\x{2072}\x{2073}\x{2074}\x{2075}\x{2076}\x{2077}\x{2078}\x{2079}\x{207A}\x{207B}/0123456789+-/;# Convert superscript numbers
$txt =~ tr/\x{2080}\x{2081}\x{2082}\x{2083}\x{2084}\x{2085}\x{2086}\x{2087}\x{2088}\x{2089}\x{208A}\x{208B}/0123456889+-/;# Convert subscript numbers
$txt =~ tr/\x{0251}\x{03B1}\x{03B2}\x{0262}\x{03B3}/AABGG/; # Convert Latin and Greek
$txt =~ tr/\x{2113}\xF0\!\"\(\)\-\{\}\<\>\;\:\.\?\xA1\xBF\/\\\@\*\%\=\xB1\+\xAE\xA9\x{2117}\$\xA3\x{FFE1}\xB0\^\_\~\`/LD /; # Convert Misc
$txt =~ tr/\'\[\]\|//d; # Remove Misc
if ($sf && $sf =~ /^a/o) {
my $commapos = index($txt,',');
if ($commapos > -1) {
if ($commapos != length($txt) - 1) {
my @list = split /,/, $txt;
my $first = shift @list;
$txt = $first . ',' . join(' ', @list);
} else {
$txt =~ s/,/ /go;
}
}
} else {
$txt =~ s/,/ /go;
}
$txt =~ s/\s+/ /go; # Compress multiple spaces
$txt =~ s/^\s+//o; # Remove leading space
$txt =~ s/\s+$//o; # Remove trailing space
return $txt;
Returns: text
Language: SQL
SELECT SUBSTRING(
REGEXP_REPLACE(
REGEXP_REPLACE(
$1,
'\\W*$',
''
),
' ',
' '
),
CASE
WHEN $2::INT NOT BETWEEN 48 AND 57 THEN 1
ELSE $2::TEXT::INT + 1
END
);
Returns: SET OF double precision
Language: C
normal_rand
Returns: text
Language: SQL
SELECT regexp_replace(regexp_replace(regexp_replace($1, E'\\n', ' ', 'g'), E'(?:^\\s+)|(\\s+$)', '', 'g'), E'\\s+', ' ', 'g');
Returns: text
Language: SQL
SELECT $2;
Returns: text
Language: SQL
SELECT $2;
Returns: text
Language: PLPGSQL
DECLARE
locale TEXT := REGEXP_REPLACE( REGEXP_REPLACE( raw_locale, E'[;, ].+$', '' ), E'_', '-', 'g' );
language TEXT := REGEXP_REPLACE( locale, E'-.+$', '' );
result config.i18n_core%ROWTYPE;
fallback TEXT;
keyfield TEXT := keyclass || '.' || keycol;
BEGIN
-- Try the full locale
SELECT * INTO result
FROM config.i18n_core
WHERE fq_field = keyfield
AND identity_value = keyvalue
AND translation = locale;
-- Try just the language
IF NOT FOUND THEN
SELECT * INTO result
FROM config.i18n_core
WHERE fq_field = keyfield
AND identity_value = keyvalue
AND translation = language;
END IF;
-- Fall back to the string we passed in in the first place
IF NOT FOUND THEN
EXECUTE
'SELECT ' ||
keycol ||
' FROM ' || keytable ||
' WHERE ' || identcol || ' = ' || quote_literal(keyvalue)
INTO fallback;
RETURN fallback;
END IF;
RETURN result.string;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
NEW.index_vector = to_tsvector(TG_ARGV[0], NEW.value);
RETURN NEW;
END;
Returns: SET OF tokenout
Language: C
parse
Returns: SET OF tokenout
Language: C
parse_current
Returns: SET OF tokenout
Language: C
parse_byname
Returns: void
Language: C
prsd_end
Returns: integer
Language: C
prsd_getlexeme
Returns: internal
Language: C
prsd_headline
Returns: internal
Language: C
prsd_lextype
Returns: internal
Language: C
prsd_start
Returns: text
Language: C
tsquerytree
Returns: real
Language: C
rank_def
Returns: real
Language: C
rank_def
Returns: real
Language: C
rank
Returns: real
Language: C
rank
Returns: real
Language: C
rank_cd
Returns: real
Language: C
rank_cd
Returns: real
Language: C
rank_cd_def
Returns: real
Language: C
rank_cd_def
Returns: text
Language: PLPERLU
use Unicode::Normalize;
my $x = NFD(shift);
$x =~ s/\pM+//go;
return $x;
Returns: void
Language: C
reset_tsearch
Returns: boolean
Language: C
boolean operation with text index
rexectsq
Returns: void
Language: C
set_curcfg
Returns: void
Language: C
set_curcfg_byname
Returns: void
Language: C
set_curdict
Returns: void
Language: C
set_curdict_byname
Returns: void
Language: C
set_curprs
Returns: void
Language: C
set_curprs_byname
Returns: real
Language: C
set_limit
Returns: tsvector
Language: C
setweight
Returns: oid
Language: C
show_curcfg
Returns: real
Language: C
show_limit
Returns: text[]
Language: C
show_trgm
Returns: real
Language: C
similarity
Returns: boolean
Language: C
similarity_op
Returns: internal
Language: C
snb_en_init
Returns: internal
Language: C
snb_lexize
Returns: internal
Language: C
snb_ru_init
Returns: internal
Language: C
spell_init
Returns: internal
Language: C
spell_lexize
Returns: SET OF statinfo
Language: C
ts_stat
Returns: SET OF statinfo
Language: C
ts_stat
Returns: tsvector
Language: C
strip
Returns: internal
Language: C
syn_init
Returns: internal
Language: C
syn_lexize
Returns: text
Language: PLPGSQL
BEGIN
RETURN $1::regclass;
END;
Returns: text
Language: SQL
SELECT
CASE WHEN $1 IS NULL
THEN $2
WHEN $2 IS NULL
THEN $1
ELSE $1 || ' ' || $2
END;
Returns: tsquery
Language: C
to_tsquery
Returns: tsquery
Language: C
to_tsquery_current
Returns: tsquery
Language: C
to_tsquery_name
Returns: tsvector
Language: C
to_tsvector
Returns: tsvector
Language: C
to_tsvector_current
Returns: tsvector
Language: C
to_tsvector_name
Returns: SET OF tokentype
Language: C
token_type_current
Returns: SET OF tokentype
Language: C
token_type
Returns: SET OF tokentype
Language: C
token_type_byname
Returns: SET OF tsdebug
Language: SQL
select
m.ts_name,
t.alias as tok_type,
t.descr as description,
p.token,
m.dict_name,
strip(to_tsvector(p.token)) as tsvector
from
parse( _get_parser_from_curcfg(), $1 ) as p,
token_type() as t,
pg_ts_cfgmap as m,
pg_ts_cfg as c
where
t.tokid=p.tokid and
t.alias = m.tok_alias and
m.ts_name=c.ts_name and
c.oid=show_curcfg()
Returns: "trigger"
Language: C
tsearch2
Returns: tsquery
Language: C
tsquery_in
Returns: cstring
Language: C
tsquery_out
Returns: integer
Language: C
tsvector_cmp
Returns: tsvector
Language: SQL
SELECT
CASE WHEN $1 IS NULL
THEN $2
WHEN $2 IS NULL
THEN $1
ELSE $1 || ' ' || $2
END;
Returns: boolean
Language: C
tsvector_eq
Returns: boolean
Language: C
tsvector_ge
Returns: boolean
Language: C
tsvector_gt
Returns: tsvector
Language: C
tsvector_in
Returns: boolean
Language: C
tsvector_le
Returns: boolean
Language: C
tsvector_lt
Returns: boolean
Language: C
tsvector_ne
Returns: cstring
Language: C
tsvector_out
Returns: text
Language: PLPERLU
return uc(shift);
Returns: text
Language: C
xml_encode_special_chars
Returns: boolean
Language: C
xml_valid
Returns: boolean
Language: C
xpath_bool
Returns: text
Language: SQL
SELECT xpath_list($1,$2,',')
Returns: text
Language: C
xpath_list
Returns: text
Language: SQL
SELECT xpath_nodeset($1,$2,'','')
Returns: text
Language: SQL
SELECT xpath_nodeset($1,$2,'',$3)
Returns: text
Language: C
xpath_nodeset
Returns: real
Language: C
xpath_number
Returns: text
Language: C
xpath_string
Returns: SET OF record
Language: C
xpath_table
Returns: text
Language: C
xslt_process
Returns: text
Language: C
xslt_process
Schema reporter
reporter.circ_type Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
type |
text |
|
SELECT circulation.id
, CASE WHEN
(
(circulation.opac_renewal
OR circulation.phone_renewal
)
OR circulation.desk_renewal
) THEN 'RENEWAL'::text ELSE 'CHECKOUT'::text END AS "type"
FROM"action".circulation;
Permissions which apply to reporter.circ_type
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.classic_current_billing_summary Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
billing_location_shortname |
text |
|
|
billing_location_name |
text |
|
|
billing_location |
integer |
|
|
barcode |
text |
|
|
usr_home_ou |
integer |
|
|
usr_home_ou_shortname |
text |
|
|
usr_home_ou_name |
text |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
xact_type |
name |
|
|
total_paid |
numeric |
|
|
total_owed |
numeric |
|
|
balance_owed |
numeric |
|
|
last_payment_ts |
timestamp with time zone |
|
|
last_payment_note |
text |
|
|
last_payment_type |
name |
|
|
last_billing_ts |
timestamp with time zone |
|
|
last_billing_note |
text |
|
|
last_billing_type |
text |
|
|
patron_county |
text |
|
|
patron_city |
text |
|
|
patron_zip |
text |
|
|
profile_group |
text |
|
|
demographic_general_division |
text |
|
SELECT x.id
, x.usr
, bl.shortname AS billing_location_shortname
, bl.name AS billing_location_name
, x.billing_location
, c.barcode
, u.home_ou AS usr_home_ou
, ul.shortname AS usr_home_ou_shortname
, ul.name AS usr_home_ou_name
, x.xact_start
, x.xact_finish
, x.xact_type
, x.total_paid
, x.total_owed
, x.balance_owed
, x.last_payment_ts
, x.last_payment_note
, x.last_payment_type
, x.last_billing_ts
, x.last_billing_note
, x.last_billing_type
, paddr.county AS patron_county
, paddr.city AS patron_city
, paddr.post_code AS patron_zip
, g.name AS profile_group
, dem.general_division AS demographic_general_division
FROM (
(
(
(
(
(
(money.open_billable_xact_summary x
JOIN actor.org_unit bl
ON (
(x.billing_location = bl.id)
)
)
JOIN actor.usr u
ON (
(u.id = x.usr)
)
)
JOIN actor.org_unit ul
ON (
(u.home_ou = ul.id)
)
)
JOIN actor.card c
ON (
(u.card = c.id)
)
)
JOIN permission.grp_tree g
ON (
(u.profile = g.id)
)
)
JOIN reporter.demographic dem
ON (
(dem.id = u.id)
)
)
JOIN actor.usr_address paddr
ON (
(paddr.id = u.billing_address)
)
);
Permissions which apply to reporter.classic_current_billing_summary
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.classic_current_circ Structure
F-Key |
Name |
Type |
Description |
|
circ_lib |
text |
|
|
circ_lib_id |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
circ_type |
text |
|
|
copy_id |
bigint |
|
|
circ_modifier |
text |
|
|
owning_lib_name |
text |
|
|
language |
text |
|
|
lit_form |
text |
|
|
item_form |
text |
|
|
item_type |
text |
|
|
shelving_location |
text |
|
|
patron_id |
integer |
|
|
profile_group |
text |
|
|
demographic_general_division |
text |
|
|
id |
bigint |
|
|
call_number |
bigint |
|
|
call_number_label |
text |
|
|
dewey |
text |
|
|
dewey_block_tens |
text |
|
|
dewey_block_hundreds |
text |
|
|
dewey_range_tens |
text |
|
|
dewey_range_hundreds |
text |
|
|
patron_home_lib |
integer |
|
|
patron_home_lib_shortname |
text |
|
|
patron_county |
text |
|
|
patron_city |
text |
|
|
patron_zip |
text |
|
|
stat_cat_1 |
integer |
|
|
stat_cat_2 |
integer |
|
|
stat_cat_1_value |
text |
|
|
stat_cat_2_value |
text |
|
SELECT cl.shortname AS circ_lib
, cl.id AS circ_lib_id
, circ.xact_start
, circ_type."type" AS circ_type
, cp.id AS copy_id
, cp.circ_modifier
, ol.shortname AS owning_lib_name
, lm.value AS "language"
, lfm.value AS lit_form
, ifm.value AS item_form
, itm.value AS item_type
, sl.name AS shelving_location
, p.id AS patron_id
, g.name AS profile_group
, dem.general_division AS demographic_general_division
, circ.id
, cn.id AS call_number
, cn.label AS call_number_label
, call_number_dewey
(cn.label) AS dewey
, CASE WHEN
(call_number_dewey
(cn.label) ~ '^[0-9.]+$'::text
) THEN btrim
(to_char
(
(
(10)::double precision * floor
(
(
(call_number_dewey
(cn.label)
)::double precision /
(10)::double precision
)
)
)
,'000'::text
)
) ELSE NULL::text END AS dewey_block_tens
, CASE WHEN
(call_number_dewey
(cn.label) ~ '^[0-9.]+$'::text
) THEN btrim
(to_char
(
(
(100)::double precision * floor
(
(
(call_number_dewey
(cn.label)
)::double precision /
(100)::double precision
)
)
)
,'000'::text
)
) ELSE NULL::text END AS dewey_block_hundreds
, CASE WHEN
(call_number_dewey
(cn.label) ~ '^[0-9.]+$'::text
) THEN
(
(btrim
(to_char
(
(
(10)::double precision * floor
(
(
(call_number_dewey
(cn.label)
)::double precision /
(10)::double precision
)
)
)
,'000'::text
)
) || '-'::text
) || btrim
(to_char
(
(
(
(10)::double precision * floor
(
(
(call_number_dewey
(cn.label)
)::double precision /
(10)::double precision
)
)
) +
(9)::double precision
)
,'000'::text
)
)
) ELSE NULL::text END AS dewey_range_tens
, CASE WHEN
(call_number_dewey
(cn.label) ~ '^[0-9.]+$'::text
) THEN
(
(btrim
(to_char
(
(
(100)::double precision * floor
(
(
(call_number_dewey
(cn.label)
)::double precision /
(100)::double precision
)
)
)
,'000'::text
)
) || '-'::text
) || btrim
(to_char
(
(
(
(100)::double precision * floor
(
(
(call_number_dewey
(cn.label)
)::double precision /
(100)::double precision
)
)
) +
(99)::double precision
)
,'000'::text
)
)
) ELSE NULL::text END AS dewey_range_hundreds
, hl.id AS patron_home_lib
, hl.shortname AS patron_home_lib_shortname
, paddr.county AS patron_county
, paddr.city AS patron_city
, paddr.post_code AS patron_zip
, sc1.stat_cat_entry AS stat_cat_1
, sc2.stat_cat_entry AS stat_cat_2
, sce1.value AS stat_cat_1_value
, sce2.value AS stat_cat_2_value
FROM (
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
("action".circulation circ
JOIN reporter.circ_type circ_type
ON (
(circ.id = circ_type.id)
)
)
JOIN asset."copy" cp
ON (
(cp.id = circ.target_copy)
)
)
JOIN asset.copy_location sl
ON (
(cp."location" = sl.id)
)
)
JOIN asset.call_number cn
ON (
(cp.call_number = cn.id)
)
)
JOIN actor.org_unit ol
ON (
(cn.owning_lib = ol.id)
)
)
JOIN metabib.rec_descriptor rd
ON (
(rd.record = cn.record)
)
)
JOIN actor.org_unit cl
ON (
(circ.circ_lib = cl.id)
)
)
JOIN actor.usr p
ON (
(p.id = circ.usr)
)
)
JOIN actor.org_unit hl
ON (
(p.home_ou = hl.id)
)
)
JOIN permission.grp_tree g
ON (
(p.profile = g.id)
)
)
JOIN reporter.demographic dem
ON (
(dem.id = p.id)
)
)
JOIN actor.usr_address paddr
ON (
(paddr.id = p.billing_address)
)
)
LEFT JOIN config.language_map lm
ON (
(rd.item_lang = lm.code)
)
)
LEFT JOIN config.lit_form_map lfm
ON (
(rd.lit_form = lfm.code)
)
)
LEFT JOIN config.item_form_map ifm
ON (
(rd.item_form = ifm.code)
)
)
LEFT JOIN config.item_type_map itm
ON (
(rd.item_type = itm.code)
)
)
LEFT JOIN asset.stat_cat_entry_copy_map sc1
ON (
(
(sc1.owning_copy = cp.id)
AND (sc1.stat_cat = 1)
)
)
)
LEFT JOIN asset.stat_cat_entry sce1
ON (
(sce1.id = sc1.stat_cat_entry)
)
)
LEFT JOIN asset.stat_cat_entry_copy_map sc2
ON (
(
(sc2.owning_copy = cp.id)
AND (sc2.stat_cat = 2)
)
)
)
LEFT JOIN asset.stat_cat_entry sce2
ON (
(sce2.id = sc2.stat_cat_entry)
)
);
Permissions which apply to reporter.classic_current_circ
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.classic_item_list Structure
F-Key |
Name |
Type |
Description |
|
title |
text |
|
|
author |
text |
|
|
pubdate |
text |
|
|
id |
bigint |
|
|
price |
numeric(8,2) |
|
|
barcode |
text |
|
|
call_number_label |
text |
|
|
dewey_block_tens |
text |
|
|
dewey_block_hundreds |
text |
|
|
use_count |
bigint |
|
|
circ_modifier |
text |
|
|
shelving_location |
text |
|
|
stat_cat_1 |
integer |
|
|
stat_cat_2 |
integer |
|
|
stat_cat_1_value |
text |
|
|
stat_cat_2_value |
text |
|
|
edit_date |
timestamp with time zone |
|
|
create_date |
timestamp with time zone |
|
|
owning_lib_name |
text |
|
|
owning_lib |
integer |
|
|
circ_lib_name |
text |
|
|
circ_lib |
integer |
|
|
creator |
bigint |
|
|
age_protect |
integer |
|
|
opac_visible |
boolean |
|
|
ref |
boolean |
|
|
deposit_amount |
numeric(6,2) |
|
|
deleted |
boolean |
|
|
tcn_value |
text |
|
|
status |
integer |
|
|
stop_fines |
text |
|
|
due_date |
timestamp with time zone |
|
|
patron_barcode |
text |
|
|
patron_name |
text |
|
SELECT t.value AS title
, a.value AS author
, p.value AS pubdate
, cp.id
, cp.price
, cp.barcode
, cn.label AS call_number_label
, CASE WHEN
(call_number_dewey
(cn.label) ~ '^[0-9.]+$'::text
) THEN btrim
(to_char
(
(
(10)::double precision * floor
(
(
(call_number_dewey
(cn.label)
)::double precision /
(10)::double precision
)
)
)
,'000'::text
)
) ELSE NULL::text END AS dewey_block_tens
, CASE WHEN
(call_number_dewey
(cn.label) ~ '^[0-9.]+$'::text
) THEN btrim
(to_char
(
(
(100)::double precision * floor
(
(
(call_number_dewey
(cn.label)
)::double precision /
(100)::double precision
)
)
)
,'000'::text
)
) ELSE NULL::text END AS dewey_block_hundreds
, (
SELECT count
(*) AS count
FROM"action".circulation
WHERE (circulation.target_copy = cp.id)
) AS use_count
, cp.circ_modifier
, sl.name AS shelving_location
, sc1.stat_cat_entry AS stat_cat_1
, sc2.stat_cat_entry AS stat_cat_2
, sce1.value AS stat_cat_1_value
, sce2.value AS stat_cat_2_value
, cp.edit_date
, cp.create_date
, ol.shortname AS owning_lib_name
, cn.owning_lib
, cl.shortname AS circ_lib_name
, cl.id AS circ_lib
, cp.creator
, cp.age_protect
, cp.opac_visible
, cp.ref
, cp.deposit_amount
, cp.deleted
, b.tcn_value
, cp.status
, circ.stop_fines
, circ.due_date
, circ_card.barcode AS patron_barcode
, (
(circ_u.first_given_name || ' '::text) || circ_u.family_name
) AS patron_name
FROM (
(
(
(
(
(
(
(
(
(
(
(
(
(
(asset."copy" cp
JOIN asset.copy_location sl
ON (
(cp."location" = sl.id)
)
)
JOIN asset.call_number cn
ON (
(cp.call_number = cn.id)
)
)
JOIN biblio.record_entry b
ON (
(cn.record = b.id)
)
)
JOIN actor.org_unit ol
ON (
(cn.owning_lib = ol.id)
)
)
JOIN actor.org_unit cl
ON (
(cp.circ_lib = cl.id)
)
)
LEFT JOIN metabib.real_full_rec t
ON (
(
(
(cn.record = t.record)
AND (t.tag = '245'::bpchar)
)
AND (t.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec a
ON (
(
(
(cn.record = a.record)
AND (a.tag = '100'::bpchar)
)
AND (a.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec p
ON (
(
(
(cn.record = p.record)
AND (p.tag = '260'::bpchar)
)
AND (p.subfield = 'c'::text)
)
)
)
LEFT JOIN"action".circulation circ
ON (
(
(circ.target_copy = cp.id)
AND (circ.checkin_time IS NULL)
)
)
)
LEFT JOIN actor.usr circ_u
ON (
(circ_u.id = circ.usr)
)
)
LEFT JOIN actor.card circ_card
ON (
(circ_u.id = circ_card.usr)
)
)
LEFT JOIN asset.stat_cat_entry_copy_map sc1
ON (
(
(sc1.owning_copy = cp.id)
AND (sc1.stat_cat = 1)
)
)
)
LEFT JOIN asset.stat_cat_entry sce1
ON (
(sce1.id = sc1.stat_cat_entry)
)
)
LEFT JOIN asset.stat_cat_entry_copy_map sc2
ON (
(
(sc2.owning_copy = cp.id)
AND (sc2.stat_cat = 2)
)
)
)
LEFT JOIN asset.stat_cat_entry sce2
ON (
(sce2.id = sc2.stat_cat_entry)
)
);
Index -
Schema reporter
reporter.currently_running Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
runner_barcode |
text |
|
|
name |
text |
|
|
run_time |
timestamp with time zone |
|
|
start_time |
timestamp with time zone |
|
|
start_lag |
interval |
|
|
duration |
interval |
|
SELECT s.id
, c.barcode AS runner_barcode
, r.name
, s.run_time
, s.start_time
, (s.start_time - s.run_time) AS start_lag
, (now
() - s.start_time
) AS duration
FROM (
(
(reporter.schedule s
JOIN reporter.report r
ON (
(r.id = s.report)
)
)
JOIN actor.usr u
ON (
(s.runner = u.id)
)
)
JOIN actor.card c
ON (
(c.id = u.card)
)
)
WHERE (
(s.start_time IS NOT NULL)
AND (s.complete_time IS NULL)
);
Permissions which apply to reporter.currently_running
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.demographic Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
dob |
timestamp with time zone |
|
|
general_division |
text |
|
SELECT u.id
, u.dob
, CASE WHEN
(u.dob IS NULL) THEN 'Adult'::text WHEN
(age
(u.dob) > '18 years'::interval
) THEN 'Adult'::text ELSE 'Juvenile'::text END AS general_division
FROM actor.usr u;
Permissions which apply to reporter.demographic
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.hold_request_record Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
target |
bigint |
|
|
hold_type |
text |
|
|
bib_record |
bigint |
|
SELECT ahr.id
, ahr.target
, ahr.hold_type
, CASE WHEN
(ahr.hold_type = 'T'::text) THEN ahr.target WHEN
(ahr.hold_type = 'V'::text) THEN
(
SELECT cn.record
FROM asset.call_number cn
WHERE (cn.id = ahr.target)
) WHEN
(ahr.hold_type = 'C'::text) THEN
(
SELECT cn.record
FROM (asset.call_number cn
JOIN asset."copy" cp
ON (
(cn.id = cp.call_number)
)
)
WHERE (cp.id = ahr.target)
) WHEN
(ahr.hold_type = 'M'::text) THEN
(
SELECT mr.master_record
FROM metabib.metarecord mr
WHERE (mr.id = ahr.target)
) ELSE NULL::bigint END AS bib_record
FROM"action".hold_request ahr;
Permissions which apply to reporter.hold_request_record
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.legacy_cat1 Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
owner |
integer |
|
|
value |
text |
|
SELECT stat_cat_entry.id
, stat_cat_entry."owner"
, stat_cat_entry.value
FROM asset.stat_cat_entry
WHERE (stat_cat_entry.stat_cat = 1);
Permissions which apply to reporter.legacy_cat1
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.legacy_cat2 Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
owner |
integer |
|
|
value |
text |
|
SELECT stat_cat_entry.id
, stat_cat_entry."owner"
, stat_cat_entry.value
FROM asset.stat_cat_entry
WHERE (stat_cat_entry.stat_cat = 2);
Permissions which apply to reporter.legacy_cat2
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.materialized_simple_record Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
|
|
fingerprint |
text |
|
|
quality |
integer |
|
|
tcn_source |
text |
|
|
tcn_value |
text |
|
|
title |
text |
|
|
author |
text |
|
|
publisher |
text |
|
|
pubdate |
text |
|
|
isbn |
text[] |
|
|
issn |
text[] |
|
Index -
Schema reporter
reporter.old_super_simple_record Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
fingerprint |
text |
|
|
quality |
integer |
|
|
tcn_source |
text |
|
|
tcn_value |
text |
|
|
title |
text |
|
|
author |
text |
|
|
publisher |
text |
|
|
pubdate |
text |
|
|
isbn |
text[] |
|
|
issn |
text[] |
|
SELECT r.id
, r.fingerprint
, r.quality
, r.tcn_source
, r.tcn_value
, title.value AS title
,"first"
(author.value) AS author
, publisher.value AS publisher
,"substring"
(pubdate.value
, E'\\d+'::text
) AS pubdate
, array_accum
("substring"
(isbn.value
, E'^\\S+'::text
)
) AS isbn
, array_accum
("substring"
(issn.value
, E'^\\S+'::text
)
) AS issn
FROM (
(
(
(
(
(biblio.record_entry r
LEFT JOIN metabib.real_full_rec title
ON (
(
(
(r.id = title.record)
AND (title.tag = '245'::bpchar)
)
AND (title.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec author
ON (
(
(
(r.id = author.record)
AND (
(
(author.tag = '100'::bpchar)
OR (author.tag = '110'::bpchar)
)
OR (author.tag = '111'::bpchar)
)
)
AND (author.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec publisher
ON (
(
(
(r.id = publisher.record)
AND (publisher.tag = '260'::bpchar)
)
AND (publisher.subfield = 'b'::text)
)
)
)
LEFT JOIN metabib.real_full_rec pubdate
ON (
(
(
(r.id = pubdate.record)
AND (pubdate.tag = '260'::bpchar)
)
AND (pubdate.subfield = 'c'::text)
)
)
)
LEFT JOIN metabib.real_full_rec isbn
ON (
(
(
(r.id = isbn.record)
AND (
(isbn.tag = '024'::bpchar)
OR (isbn.tag = '020'::bpchar)
)
)
AND (
(isbn.subfield = 'a'::text)
OR (isbn.subfield = 'z'::text)
)
)
)
)
LEFT JOIN metabib.real_full_rec issn
ON (
(
(
(r.id = issn.record)
AND (issn.tag = '022'::bpchar)
)
AND (issn.subfield = 'a'::text)
)
)
)
GROUP BY r.id
, r.fingerprint
, r.quality
, r.tcn_source
, r.tcn_value
, title.value
, publisher.value
,"substring"
(pubdate.value
, E'\\d+'::text
);
Index -
Schema reporter
reporter.output_folder Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
reporter.output_folder.id
|
parent |
integer |
|
actor.usr.id
|
owner |
integer |
NOT NULL
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
name |
text |
NOT NULL
|
|
shared |
boolean |
NOT NULL
DEFAULT false
|
actor.org_unit.id
|
share_with |
integer |
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to reporter.output_folder
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.overdue_circs Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
target_copy |
bigint |
|
|
circ_lib |
integer |
|
|
circ_staff |
integer |
|
|
checkin_staff |
integer |
|
|
checkin_lib |
integer |
|
|
renewal_remaining |
integer |
|
|
due_date |
timestamp with time zone |
|
|
stop_fines_time |
timestamp with time zone |
|
|
checkin_time |
timestamp with time zone |
|
|
duration |
interval |
|
|
fine_interval |
interval |
|
|
recuring_fine |
numeric(6,2) |
|
|
max_fine |
numeric(6,2) |
|
|
phone_renewal |
boolean |
|
|
desk_renewal |
boolean |
|
|
opac_renewal |
boolean |
|
|
duration_rule |
text |
|
|
recuring_fine_rule |
text |
|
|
max_fine_rule |
text |
|
|
stop_fines |
text |
|
SELECT circulation.id
, circulation.usr
, circulation.xact_start
, circulation.xact_finish
, circulation.target_copy
, circulation.circ_lib
, circulation.circ_staff
, circulation.checkin_staff
, circulation.checkin_lib
, circulation.renewal_remaining
, circulation.due_date
, circulation.stop_fines_time
, circulation.checkin_time
, circulation.duration
, circulation.fine_interval
, circulation.recuring_fine
, circulation.max_fine
, circulation.phone_renewal
, circulation.desk_renewal
, circulation.opac_renewal
, circulation.duration_rule
, circulation.recuring_fine_rule
, circulation.max_fine_rule
, circulation.stop_fines
FROM"action".circulation
WHERE (
(
(circulation.checkin_time IS NULL)
AND (
(
(circulation.stop_fines <> 'LOST'::text)
AND (circulation.stop_fines <> 'CLAIMSRETURNED'::text)
)
OR (circulation.stop_fines IS NULL)
)
)
AND (circulation.due_date < now
()
)
);
Permissions which apply to reporter.overdue_circs
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.overdue_reports Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
runner_barcode |
text |
|
|
name |
text |
|
|
run_time |
timestamp with time zone |
|
|
scheduled_wait_time |
interval |
|
SELECT s.id
, c.barcode AS runner_barcode
, r.name
, s.run_time
, (s.run_time - now
()
) AS scheduled_wait_time
FROM (
(
(reporter.schedule s
JOIN reporter.report r
ON (
(r.id = s.report)
)
)
JOIN actor.usr u
ON (
(s.runner = u.id)
)
)
JOIN actor.card c
ON (
(c.id = u.card)
)
)
WHERE (
(s.start_time IS NULL)
AND (s.run_time < now
()
)
);
Permissions which apply to reporter.overdue_reports
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
|
|
|
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.pending_reports Structure
F-Key |
Name |
Type |
Description |
|
id |
integer |
|
|
runner_barcode |
text |
|
|
name |
text |
|
|
run_time |
timestamp with time zone |
|
|
scheduled_wait_time |
interval |
|
SELECT s.id
, c.barcode AS runner_barcode
, r.name
, s.run_time
, (s.run_time - now
()
) AS scheduled_wait_time
FROM (
(
(reporter.schedule s
JOIN reporter.report r
ON (
(r.id = s.report)
)
)
JOIN actor.usr u
ON (
(s.runner = u.id)
)
)
JOIN actor.card c
ON (
(c.id = u.card)
)
)
WHERE (s.start_time IS NULL);
Permissions which apply to reporter.pending_reports
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
|
|
|
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.report Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
owner |
integer |
NOT NULL
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
name |
text |
NOT NULL
DEFAULT ''::text
|
|
description |
text |
NOT NULL
DEFAULT ''::text
|
reporter.template.id
|
template |
integer |
NOT NULL
|
|
data |
text |
NOT NULL
|
reporter.report_folder.id
|
folder |
integer |
NOT NULL
|
|
recur |
boolean |
NOT NULL
DEFAULT false
|
|
recurance |
interval |
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to reporter.report
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.report_folder Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
reporter.report_folder.id
|
parent |
integer |
|
actor.usr.id
|
owner |
integer |
NOT NULL
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
name |
text |
NOT NULL
|
|
shared |
boolean |
NOT NULL
DEFAULT false
|
actor.org_unit.id
|
share_with |
integer |
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to reporter.report_folder
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.running_stats Structure
F-Key |
Name |
Type |
Description |
|
report_id |
integer |
|
|
usrname |
text |
|
|
run_time |
timestamp with time zone |
|
|
start_time |
timestamp with time zone |
|
|
duration |
interval |
|
|
template |
text |
|
|
report |
text |
|
SELECT s.report AS report_id
, a.usrname
, s.run_time
, s.start_time
, (now
() - s.start_time
) AS duration
, t.name AS "template"
, r.name AS report
FROM (
(
(reporter.schedule s
JOIN actor.usr a
ON (
(a.id = s.runner)
)
)
JOIN reporter.report r
ON (
(s.report = r.id)
)
)
JOIN reporter."template" t
ON (
(t.id = r."template")
)
)
WHERE (
(s.start_time IS NOT NULL)
AND (s.complete_time IS NULL)
)
ORDER BY s.start_time;
Permissions which apply to reporter.running_stats
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.schedule Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
reporter.report.id
|
report |
integer |
NOT NULL
|
reporter.output_folder.id
|
folder |
integer |
NOT NULL
|
actor.usr.id
|
runner |
integer |
NOT NULL
|
|
run_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
start_time |
timestamp with time zone |
|
|
complete_time |
timestamp with time zone |
|
|
email |
text |
|
|
excel_format |
boolean |
NOT NULL
DEFAULT true
|
|
html_format |
boolean |
NOT NULL
DEFAULT true
|
|
csv_format |
boolean |
NOT NULL
DEFAULT true
|
|
chart_pie |
boolean |
NOT NULL
DEFAULT false
|
|
chart_bar |
boolean |
NOT NULL
DEFAULT false
|
|
chart_line |
boolean |
NOT NULL
DEFAULT false
|
|
error_code |
integer |
|
|
error_text |
text |
|
Permissions which apply to reporter.schedule
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.simple_record Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
metarecord |
bigint |
|
|
fingerprint |
text |
|
|
quality |
integer |
|
|
tcn_source |
text |
|
|
tcn_value |
text |
|
|
title |
text |
|
|
uniform_title |
text |
|
|
author |
text |
|
|
publisher |
text |
|
|
pubdate |
text |
|
|
series_title |
text |
|
|
series_statement |
text |
|
|
summary |
text |
|
|
isbn |
text[] |
|
|
issn |
text[] |
|
|
topic_subject |
text[] |
|
|
geographic_subject |
text[] |
|
|
genre |
text[] |
|
|
name_subject |
text[] |
|
|
corporate_subject |
text[] |
|
|
external_uri |
text[] |
|
SELECT r.id
, s.metarecord
, r.fingerprint
, r.quality
, r.tcn_source
, r.tcn_value
, title.value AS title
, uniform_title.value AS uniform_title
, author.value AS author
, publisher.value AS publisher
,"substring"
(pubdate.value
, E'\\d+'::text
) AS pubdate
, series_title.value AS series_title
, series_statement.value AS series_statement
, summary.value AS summary
, array_accum
("substring"
(isbn.value
, E'^\\S+'::text
)
) AS isbn
, array_accum
("substring"
(issn.value
, E'^\\S+'::text
)
) AS issn
, ARRAY
(
SELECT DISTINCT full_rec.value
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '650'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY full_rec.value
) AS topic_subject
, ARRAY
(
SELECT DISTINCT full_rec.value
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '651'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY full_rec.value
) AS geographic_subject
, ARRAY
(
SELECT DISTINCT full_rec.value
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '655'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY full_rec.value
) AS genre
, ARRAY
(
SELECT DISTINCT full_rec.value
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '600'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY full_rec.value
) AS name_subject
, ARRAY
(
SELECT DISTINCT full_rec.value
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '610'::bpchar)
AND (full_rec.subfield = 'a'::text)
)
AND (full_rec.record = r.id)
)
ORDER BY full_rec.value
) AS corporate_subject
, ARRAY
(
SELECT full_rec.value
FROM metabib.real_full_rec full_rec
WHERE (
(
(full_rec.tag = '856'::bpchar)
AND (
(
(full_rec.subfield = '3'::text)
OR (full_rec.subfield = 'y'::text)
)
OR (full_rec.subfield = 'u'::text)
)
)
AND (full_rec.record = r.id)
)
ORDER BY CASE WHEN
(
(full_rec.subfield = '3'::text)
OR (full_rec.subfield = 'y'::text)
) THEN 0 ELSE 1 END
) AS external_uri
FROM (
(
(
(
(
(
(
(
(
(
(biblio.record_entry r
JOIN metabib.metarecord_source_map s
ON (
(s.source = r.id)
)
)
LEFT JOIN metabib.real_full_rec uniform_title
ON (
(
(
(r.id = uniform_title.record)
AND (uniform_title.tag = '240'::bpchar)
)
AND (uniform_title.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec title
ON (
(
(
(r.id = title.record)
AND (title.tag = '245'::bpchar)
)
AND (title.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec author
ON (
(
(
(r.id = author.record)
AND (author.tag = '100'::bpchar)
)
AND (author.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec publisher
ON (
(
(
(r.id = publisher.record)
AND (publisher.tag = '260'::bpchar)
)
AND (publisher.subfield = 'b'::text)
)
)
)
LEFT JOIN metabib.real_full_rec pubdate
ON (
(
(
(r.id = pubdate.record)
AND (pubdate.tag = '260'::bpchar)
)
AND (pubdate.subfield = 'c'::text)
)
)
)
LEFT JOIN metabib.real_full_rec isbn
ON (
(
(
(r.id = isbn.record)
AND (
(isbn.tag = '024'::bpchar)
OR (isbn.tag = '020'::bpchar)
)
)
AND (
(isbn.subfield = 'a'::text)
OR (isbn.subfield = 'z'::text)
)
)
)
)
LEFT JOIN metabib.real_full_rec issn
ON (
(
(
(r.id = issn.record)
AND (issn.tag = '022'::bpchar)
)
AND (issn.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec series_title
ON (
(
(
(r.id = series_title.record)
AND (
(series_title.tag = '830'::bpchar)
OR (series_title.tag = '440'::bpchar)
)
)
AND (series_title.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec series_statement
ON (
(
(
(r.id = series_statement.record)
AND (series_statement.tag = '490'::bpchar)
)
AND (series_statement.subfield = 'a'::text)
)
)
)
LEFT JOIN metabib.real_full_rec summary
ON (
(
(
(r.id = summary.record)
AND (summary.tag = '520'::bpchar)
)
AND (summary.subfield = 'a'::text)
)
)
)
WHERE (r.deleted IS FALSE)
GROUP BY r.id
, s.metarecord
, r.fingerprint
, r.quality
, r.tcn_source
, r.tcn_value
, title.value
, uniform_title.value
, author.value
, publisher.value
,"substring"
(pubdate.value
, E'\\d+'::text
)
, series_title.value
, series_statement.value
, summary.value;
Permissions which apply to reporter.simple_record
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.super_simple_record Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
fingerprint |
text |
|
|
quality |
integer |
|
|
tcn_source |
text |
|
|
tcn_value |
text |
|
|
title |
text |
|
|
author |
text |
|
|
publisher |
text |
|
|
pubdate |
text |
|
|
isbn |
text[] |
|
|
issn |
text[] |
|
SELECT materialized_simple_record.id
, materialized_simple_record.fingerprint
, materialized_simple_record.quality
, materialized_simple_record.tcn_source
, materialized_simple_record.tcn_value
, materialized_simple_record.title
, materialized_simple_record.author
, materialized_simple_record.publisher
, materialized_simple_record.pubdate
, materialized_simple_record.isbn
, materialized_simple_record.issn
FROM reporter.materialized_simple_record;
Permissions which apply to reporter.super_simple_record
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.template Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
actor.usr.id
|
owner |
integer |
NOT NULL
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
name |
text |
NOT NULL
|
|
description |
text |
NOT NULL
|
|
data |
text |
NOT NULL
|
reporter.template_folder.id
|
folder |
integer |
NOT NULL
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to reporter.template
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.template_folder Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
reporter.template_folder.id
|
parent |
integer |
|
actor.usr.id
|
owner |
integer |
NOT NULL
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
name |
text |
NOT NULL
|
|
shared |
boolean |
NOT NULL
DEFAULT false
|
actor.org_unit.id
|
share_with |
integer |
|
Tables referencing this one via Foreign Key Constraints:
Permissions which apply to reporter.template_folder
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.xact_billing_totals Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
unvoided |
numeric |
|
|
voided |
numeric |
|
|
total |
numeric |
|
SELECT b.xact
, sum
(CASE WHEN b.voided THEN
(0)::numeric ELSE b.amount END
) AS unvoided
, sum
(CASE WHEN b.voided THEN b.amount ELSE
(0)::numeric END
) AS voided
, sum
(b.amount) AS total
FROM money.billing b
GROUP BY b.xact;
Permissions which apply to reporter.xact_billing_totals
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
reporter.xact_paid_totals Structure
F-Key |
Name |
Type |
Description |
|
xact |
bigint |
|
|
unvoided |
numeric |
|
|
voided |
numeric |
|
|
total |
numeric |
|
SELECT b.xact
, sum
(CASE WHEN b.voided THEN
(0)::numeric ELSE b.amount END
) AS unvoided
, sum
(CASE WHEN b.voided THEN b.amount ELSE
(0)::numeric END
) AS voided
, sum
(b.amount) AS total
FROM money.payment b
GROUP BY b.xact;
Permissions which apply to reporter.xact_paid_totals
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema reporter
Returns: void
Language: SQL
DROP TRIGGER zzz_update_materialized_simple_record_tgr ON metabib.real_full_rec;
Returns: void
Language: SQL
TRUNCATE TABLE reporter.materialized_simple_record;
INSERT INTO reporter.materialized_simple_record
(id,fingerprint,quality,tcn_source,tcn_value,title,author,publisher,pubdate,isbn,issn)
SELECT DISTINCT ON (id) * FROM reporter.old_super_simple_record;
CREATE TRIGGER zzz_update_materialized_simple_record_tgr
AFTER INSERT OR UPDATE OR DELETE ON metabib.real_full_rec
FOR EACH ROW EXECUTE PROCEDURE reporter.simple_rec_sync();
Returns: void
Language: SQL
SELECT reporter.disable_materialized_simple_record_trigger();
SELECT reporter.enable_materialized_simple_record_trigger();
Returns: "trigger"
Language: PLPGSQL
DECLARE
r_id BIGINT;
new_data RECORD;
BEGIN
IF TG_OP IN ('DELETE') THEN
r_id := OLD.record;
ELSE
r_id := NEW.record;
END IF;
SELECT * INTO new_data FROM reporter.materialized_simple_record WHERE id = r_id FOR UPDATE;
DELETE FROM reporter.materialized_simple_record WHERE id = r_id;
IF TG_OP IN ('DELETE') THEN
RETURN OLD;
ELSE
INSERT INTO reporter.materialized_simple_record SELECT DISTINCT ON (id) * FROM reporter.old_super_simple_record WHERE id = NEW.record;
RETURN NEW;
END IF;
END;
Schema search
search.relevance_adjustment Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
active |
boolean |
NOT NULL
DEFAULT true
|
config.metabib_field.id
|
field |
integer |
NOT NULL
|
|
bump_type |
text |
NOT NULL
|
|
multiplier |
numeric |
NOT NULL
DEFAULT 1.0
|
search.relevance_adjustment Constraints
Name |
Constraint |
relevance_adjustment_bump_type_check |
CHECK ((((bump_type = 'word_order'::text) OR (bump_type = 'first_word'::text)) OR (bump_type = 'full_match'::text))) |
Index -
Schema search
Returns: SET OF anyelement
Language: SQL
SELECT ($1)[s] FROM generate_series(1, array_upper($1, 1)) AS s;
Returns: SET OF search_args
Language: PLPERLU
use JSON::XS;
my $json = shift;
my $args = decode_json( $json );
my $id = 1;
for my $k ( keys %$args ) {
(my $alias = $k) =~ s/\|/_/gso;
my ($class, $field) = split /\|/, $k;
my $part = $args->{$k};
for my $p ( keys %$part ) {
my $data = $part->{$p};
$data = [$data] if (!ref($data));
for my $datum ( @$data ) {
return_next(
{ field_class => $class,
field_name => $field,
term => $datum,
table_alias => $alias,
term_type => $p,
id => $id,
}
);
$id++;
}
}
}
return undef;
Returns: text
Language: SQL
SELECT CASE
WHEN $1 = 'author' THEN 'metabib.author_field_entry'
WHEN $1 = 'title' THEN 'metabib.title_field_entry'
WHEN $1 = 'subject' THEN 'metabib.subject_field_entry'
WHEN $1 = 'keyword' THEN 'metabib.keyword_field_entry'
WHEN $1 = 'series' THEN 'metabib.series_field_entry'
END;
Returns: numeric
Language: SQL
select 1 / (log(ceil($1 / $2)::int,x) + 1) from generate_series(1, ceil($1 / $2)::int) x;
Returns: SET OF search_result
Language: PLPGSQL
DECLARE
current_res search.search_result%ROWTYPE;
query_part search.search_args%ROWTYPE;
phrase_query_part search.search_args%ROWTYPE;
rank_adjust_id INT;
core_rel_limit INT;
core_chk_limit INT;
core_skip_chk INT;
rank_adjust search.relevance_adjustment%ROWTYPE;
query_table TEXT;
tmp_text TEXT;
tmp_int INT;
current_rank TEXT;
ranks TEXT[] := '{}';
query_table_alias TEXT;
from_alias_array TEXT[] := '{}';
used_ranks TEXT[] := '{}';
mb_field INT;
mb_field_list INT[];
search_org_list INT[];
select_clause TEXT := 'SELECT';
from_clause TEXT := ' FROM metabib.metarecord_source_map m JOIN metabib.rec_descriptor mrd ON (m.source = mrd.record) ';
where_clause TEXT := ' WHERE 1=1 ';
mrd_used BOOL := FALSE;
sort_desc BOOL := FALSE;
core_result RECORD;
core_cursor REFCURSOR;
core_rel_query TEXT;
vis_limit_query TEXT;
inner_where_clause TEXT;
total_count INT := 0;
check_count INT := 0;
deleted_count INT := 0;
visible_count INT := 0;
excluded_count INT := 0;
BEGIN
core_rel_limit := COALESCE( param_rel_limit, 25000 );
core_chk_limit := COALESCE( param_chk_limit, 1000 );
core_skip_chk := COALESCE( param_skip_chk, 1 );
IF metarecord THEN
select_clause := select_clause || ' m.metarecord as id, array_accum(distinct m.source) as records,';
ELSE
select_clause := select_clause || ' m.source as id, array_accum(distinct m.source) as records,';
END IF;
-- first we need to construct the base query
FOR query_part IN SELECT * FROM search.parse_search_args(param_searches) WHERE term_type = 'fts_query' LOOP
inner_where_clause := 'index_vector @@ ' || query_part.term;
-- RAISE NOTICE 'TSearch Query: %', query_part.term;
IF query_part.field_name IS NOT NULL THEN
SELECT id INTO mb_field
FROM config.metabib_field
WHERE field_class = query_part.field_class
AND name = query_part.field_name;
IF FOUND THEN
inner_where_clause := inner_where_clause ||
' AND ' || 'field = ' || mb_field;
END IF;
END IF;
-- moving on to the rank ...
SELECT * INTO query_part
FROM search.parse_search_args(param_searches)
WHERE term_type = 'fts_rank'
AND table_alias = query_part.table_alias;
current_rank := query_part.term || ' * ' || query_part.table_alias || '_weight.weight';
-- RAISE NOTICE 'Current rank: %', current_rank;
IF query_part.field_name IS NOT NULL THEN
SELECT array_accum(distinct id) INTO mb_field_list
FROM config.metabib_field
WHERE field_class = query_part.field_class
AND name = query_part.field_name;
ELSE
SELECT array_accum(distinct id) INTO mb_field_list
FROM config.metabib_field
WHERE field_class = query_part.field_class;
END IF;
FOR rank_adjust IN SELECT * FROM search.relevance_adjustment WHERE active AND field IN ( SELECT * FROM search.explode_array( mb_field_list ) ) LOOP
IF NOT rank_adjust.bump_type = ANY (used_ranks) THEN
IF rank_adjust.bump_type = 'first_word' THEN
SELECT term INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word'
ORDER BY id
LIMIT 1;
tmp_text := query_part.table_alias || '.value ILIKE ' || quote_literal( tmp_text || '%' );
ELSIF rank_adjust.bump_type = 'word_order' THEN
SELECT array_to_string( array_accum( term ), '%' ) INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word';
tmp_text := query_part.table_alias || '.value ILIKE ' || quote_literal( '%' || tmp_text || '%' );
ELSIF rank_adjust.bump_type = 'full_match' THEN
SELECT array_to_string( array_accum( term ), E'\\s+' ) INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word';
tmp_text := query_part.table_alias || '.value ~ ' || quote_literal( '^' || tmp_text || E'\\W*$' );
END IF;
IF tmp_text IS NOT NULL THEN
current_rank := current_rank || ' * ( CASE WHEN ' || tmp_text ||
' THEN ' || rank_adjust.multiplier || '::REAL ELSE 1.0 END )';
END IF;
-- RAISE NOTICE 'Current Weighted Rank: %', current_rank;
used_ranks := array_append( used_ranks, rank_adjust.bump_type );
END IF;
END LOOP;
ranks := array_append( ranks, current_rank );
used_ranks := '{}';
FOR phrase_query_part IN
SELECT *
FROM search.parse_search_args(param_searches)
WHERE term_type = 'phrase'
AND table_alias = query_part.table_alias LOOP
tmp_text := replace( phrase_query_part.term, '*', E'\\*' );
tmp_text := replace( tmp_text, '?', E'\\?' );
tmp_text := replace( tmp_text, '+', E'\\+' );
tmp_text := replace( tmp_text, '|', E'\\|' );
tmp_text := replace( tmp_text, '(', E'\\(' );
tmp_text := replace( tmp_text, ')', E'\\)' );
tmp_text := replace( tmp_text, '[', E'\\[' );
tmp_text := replace( tmp_text, ']', E'\\]' );
inner_where_clause := inner_where_clause || ' AND ' || 'value ~* ' || quote_literal( E'(^|\\W+)' || regexp_replace(tmp_text, E'\\s+',E'\\\\s+','g') || E'(\\W+|\$)' );
END LOOP;
query_table := search.pick_table(query_part.field_class);
from_clause := from_clause ||
' JOIN ( SELECT * FROM ' || query_table || ' WHERE ' || inner_where_clause ||
CASE WHEN core_rel_limit > 0 THEN ' LIMIT ' || core_rel_limit::TEXT ELSE '' END || ' ) AS ' || query_part.table_alias ||
' ON ( m.source = ' || query_part.table_alias || '.source )' ||
' JOIN config.metabib_field AS ' || query_part.table_alias || '_weight' ||
' ON ( ' || query_part.table_alias || '.field = ' || query_part.table_alias || '_weight.id AND ' || query_part.table_alias || '_weight.search_field)';
-- RAISE NOTICE 'FROM clause: %', from_clause;
from_alias_array := array_append(from_alias_array, query_part.table_alias);
END LOOP;
IF param_pref_lang IS NOT NULL AND param_pref_lang_multiplier IS NOT NULL THEN
current_rank := ' CASE WHEN mrd.item_lang = ' || quote_literal( param_pref_lang ) ||
' THEN ' || param_pref_lang_multiplier || '::REAL ELSE 1.0 END ';
--ranks := array_append( ranks, current_rank );
END IF;
current_rank := ' AVG( ( (' || array_to_string( ranks, ') + (' ) || ') ) * ' || current_rank || ' ) ';
-- RAISE NOTICE 'Ranks: %', current_rank;
select_clause := select_clause || current_rank || ' AS rel,';
-- RAISE NOTICE 'SELECT clause: %', select_clause;
sort_desc = param_sort_desc;
IF param_sort = 'pubdate' THEN
tmp_text := '999999';
IF param_sort_desc THEN tmp_text := '0'; END IF;
current_rank := $$
( COALESCE( FIRST ((
SELECT SUBSTRING(frp.value FROM E'\\d{4}')
FROM metabib.full_rec frp
WHERE frp.record = m.source
AND frp.tag = '260'
AND frp.subfield = 'c'
LIMIT 1
)), $$ || quote_literal(tmp_text) || $$ )::INT )
$$;
ELSIF param_sort = 'title' THEN
tmp_text := 'zzzzzz';
IF param_sort_desc THEN tmp_text := ' '; END IF;
current_rank := $$
( COALESCE( FIRST ((
SELECT LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM E'\\d+'),'0')::INT + 1 ))
FROM metabib.full_rec frt
WHERE frt.record = m.source
AND frt.tag = '245'
AND frt.subfield = 'a'
LIMIT 1
)),$$ || quote_literal(tmp_text) || $$))
$$;
ELSIF param_sort = 'author' THEN
tmp_text := 'zzzzzz';
IF param_sort_desc THEN tmp_text := ' '; END IF;
current_rank := $$
( COALESCE( FIRST ((
SELECT LTRIM(fra.value)
FROM metabib.full_rec fra
WHERE fra.record = m.source
AND fra.tag LIKE '1%'
AND fra.subfield = 'a'
ORDER BY fra.tag::text::int
LIMIT 1
)),$$ || quote_literal(tmp_text) || $$))
$$;
ELSIF param_sort = 'create_date' THEN
current_rank := $$( FIRST (( SELECT create_date FROM biblio.record_entry rbr WHERE rbr.id = m.source)) )$$;
ELSIF param_sort = 'edit_date' THEN
current_rank := $$( FIRST (( SELECT edit_date FROM biblio.record_entry rbr WHERE rbr.id = m.source)) )$$;
ELSE
sort_desc := NOT COALESCE(param_sort_desc, FALSE);
END IF;
select_clause := select_clause || current_rank || ' AS rank';
-- now add the other qualifiers
IF param_audience IS NOT NULL AND array_upper(param_audience, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.audience IN ('$$ || array_to_string(param_audience, $$','$$) || $$') $$;
END IF;
IF param_language IS NOT NULL AND array_upper(param_language, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_lang IN ('$$ || array_to_string(param_language, $$','$$) || $$') $$;
END IF;
IF param_lit_form IS NOT NULL AND array_upper(param_lit_form, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.lit_form IN ('$$ || array_to_string(param_lit_form, $$','$$) || $$') $$;
END IF;
IF param_types IS NOT NULL AND array_upper(param_types, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_type IN ('$$ || array_to_string(param_types, $$','$$) || $$') $$;
END IF;
IF param_forms IS NOT NULL AND array_upper(param_forms, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_form IN ('$$ || array_to_string(param_forms, $$','$$) || $$') $$;
END IF;
IF param_vformats IS NOT NULL AND array_upper(param_vformats, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.vr_format IN ('$$ || array_to_string(param_vformats, $$','$$) || $$') $$;
END IF;
core_rel_query := select_clause || from_clause || where_clause ||
' GROUP BY 1 ORDER BY 4' || CASE WHEN sort_desc THEN ' DESC' ELSE ' ASC' END || ';';
-- RAISE NOTICE 'Base Query: %', core_rel_query;
IF param_depth IS NOT NULL THEN
SELECT array_accum(distinct id) INTO search_org_list FROM actor.org_unit_descendants( param_search_ou, param_depth );
ELSE
SELECT array_accum(distinct id) INTO search_org_list FROM actor.org_unit_descendants( param_search_ou );
END IF;
OPEN core_cursor FOR EXECUTE core_rel_query;
LOOP
FETCH core_cursor INTO core_result;
EXIT WHEN NOT FOUND;
IF total_count % 1000 = 0 THEN
-- RAISE NOTICE ' % total, % checked so far ... ', total_count, check_count;
END IF;
IF core_chk_limit > 0 AND total_count - core_skip_chk + 1 >= core_chk_limit THEN
total_count := total_count + 1;
CONTINUE;
END IF;
total_count := total_count + 1;
CONTINUE WHEN param_skip_chk IS NOT NULL and total_count < param_skip_chk;
check_count := check_count + 1;
PERFORM 1 FROM biblio.record_entry b WHERE NOT b.deleted AND b.id IN ( SELECT * FROM search.explode_array( core_result.records ) );
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all deleted ... ', core_result.records;
deleted_count := deleted_count + 1;
CONTINUE;
END IF;
PERFORM 1
FROM biblio.record_entry b
JOIN config.bib_source s ON (b.source = s.id)
WHERE s.transcendant
AND b.id IN ( SELECT * FROM search.explode_array( core_result.records ) );
IF FOUND THEN
-- RAISE NOTICE ' % were all transcendant ... ', core_result.records;
visible_count := visible_count + 1;
current_res.id = core_result.id;
current_res.rel = core_result.rel;
tmp_int := 1;
IF metarecord THEN
SELECT COUNT(DISTINCT s.source) INTO tmp_int FROM metabib.metarecord_source_map s WHERE s.metarecord = core_result.id;
END IF;
IF tmp_int = 1 THEN
current_res.record = core_result.records[1];
ELSE
current_res.record = NULL;
END IF;
RETURN NEXT current_res;
CONTINUE;
END IF;
IF param_statuses IS NOT NULL AND array_upper(param_statuses, 1) > 0 THEN
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cp.status IN ( SELECT * FROM search.explode_array( param_statuses ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
LIMIT 1;
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all status-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
END IF;
IF staff IS NULL OR NOT staff THEN
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
JOIN actor.org_unit a ON (cp.circ_lib = a.id)
JOIN asset.copy_location cl ON (cp.location = cl.id)
JOIN config.copy_status cs ON (cp.status = cs.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cs.holdable
AND cl.opac_visible
AND cp.opac_visible
AND a.opac_visible
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all visibility-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
ELSE
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
JOIN actor.org_unit a ON (cp.circ_lib = a.id)
JOIN asset.copy_location cl ON (cp.location = cl.id)
JOIN config.copy_status cs ON (cp.status = cs.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF NOT FOUND THEN
PERFORM 1
FROM asset.call_number cn
WHERE cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF FOUND THEN
-- RAISE NOTICE ' % were all visibility-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
END IF;
END IF;
visible_count := visible_count + 1;
current_res.id = core_result.id;
current_res.rel = core_result.rel;
tmp_int := 1;
IF metarecord THEN
SELECT COUNT(DISTINCT s.source) INTO tmp_int FROM metabib.metarecord_source_map s WHERE s.metarecord = core_result.id;
END IF;
IF tmp_int = 1 THEN
current_res.record = core_result.records[1];
ELSE
current_res.record = NULL;
END IF;
RETURN NEXT current_res;
IF visible_count % 1000 = 0 THEN
-- RAISE NOTICE ' % visible so far ... ', visible_count;
END IF;
END LOOP;
current_res.id = NULL;
current_res.rel = NULL;
current_res.record = NULL;
current_res.total = total_count;
current_res.checked = check_count;
current_res.deleted = deleted_count;
current_res.visible = visible_count;
current_res.excluded = excluded_count;
CLOSE core_cursor;
RETURN NEXT current_res;
END;
Returns: SET OF search_result
Language: PLPGSQL
DECLARE
current_res search.search_result%ROWTYPE;
query_part search.search_args%ROWTYPE;
phrase_query_part search.search_args%ROWTYPE;
rank_adjust_id INT;
core_rel_limit INT;
core_chk_limit INT;
core_skip_chk INT;
rank_adjust search.relevance_adjustment%ROWTYPE;
query_table TEXT;
tmp_text TEXT;
tmp_int INT;
current_rank TEXT;
ranks TEXT[] := '{}';
query_table_alias TEXT;
from_alias_array TEXT[] := '{}';
used_ranks TEXT[] := '{}';
mb_field INT;
mb_field_list INT[];
search_org_list INT[];
select_clause TEXT := 'SELECT';
from_clause TEXT := ' FROM metabib.metarecord_source_map m JOIN metabib.rec_descriptor mrd ON (m.source = mrd.record) ';
where_clause TEXT := ' WHERE 1=1 ';
mrd_used BOOL := FALSE;
sort_desc BOOL := FALSE;
core_result RECORD;
core_cursor REFCURSOR;
core_rel_query TEXT;
vis_limit_query TEXT;
inner_where_clause TEXT;
total_count INT := 0;
check_count INT := 0;
deleted_count INT := 0;
visible_count INT := 0;
excluded_count INT := 0;
BEGIN
core_rel_limit := COALESCE( param_rel_limit, 25000 );
core_chk_limit := COALESCE( param_chk_limit, 1000 );
core_skip_chk := COALESCE( param_skip_chk, 1 );
IF metarecord THEN
select_clause := select_clause || ' m.metarecord as id, array_accum(distinct m.source) as records,';
ELSE
select_clause := select_clause || ' m.source as id, array_accum(distinct m.source) as records,';
END IF;
-- first we need to construct the base query
FOR query_part IN SELECT * FROM search.parse_search_args(param_searches) WHERE term_type = 'fts_query' LOOP
inner_where_clause := 'index_vector @@ ' || query_part.term;
IF query_part.field_name IS NOT NULL THEN
SELECT id INTO mb_field
FROM config.metabib_field
WHERE field_class = query_part.field_class
AND name = query_part.field_name;
IF FOUND THEN
inner_where_clause := inner_where_clause ||
' AND ' || 'field = ' || mb_field;
END IF;
END IF;
-- moving on to the rank ...
SELECT * INTO query_part
FROM search.parse_search_args(param_searches)
WHERE term_type = 'fts_rank'
AND table_alias = query_part.table_alias;
current_rank := query_part.term || ' * ' || query_part.table_alias || '_weight.weight';
IF query_part.field_name IS NOT NULL THEN
SELECT array_accum(distinct id) INTO mb_field_list
FROM config.metabib_field
WHERE field_class = query_part.field_class
AND name = query_part.field_name;
ELSE
SELECT array_accum(distinct id) INTO mb_field_list
FROM config.metabib_field
WHERE field_class = query_part.field_class;
END IF;
FOR rank_adjust IN SELECT * FROM search.relevance_adjustment WHERE active AND field IN ( SELECT * FROM search.explode_array( mb_field_list ) ) LOOP
IF NOT rank_adjust.bump_type = ANY (used_ranks) THEN
IF rank_adjust.bump_type = 'first_word' THEN
SELECT term INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word'
ORDER BY id
LIMIT 1;
tmp_text := query_part.table_alias || '.value ILIKE ' || quote_literal( tmp_text || '%' );
ELSIF rank_adjust.bump_type = 'word_order' THEN
SELECT array_to_string( array_accum( term ), '%' ) INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word';
tmp_text := query_part.table_alias || '.value ILIKE ' || quote_literal( '%' || tmp_text || '%' );
ELSIF rank_adjust.bump_type = 'full_match' THEN
SELECT array_to_string( array_accum( term ), E'\\s+' ) INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word';
tmp_text := query_part.table_alias || '.value ~ ' || quote_literal( '^' || tmp_text || E'\\W*$' );
END IF;
IF tmp_text IS NOT NULL THEN
current_rank := current_rank || ' * ( CASE WHEN ' || tmp_text ||
' THEN ' || rank_adjust.multiplier || '::REAL ELSE 1.0 END )';
END IF;
used_ranks := array_append( used_ranks, rank_adjust.bump_type );
END IF;
END LOOP;
ranks := array_append( ranks, current_rank );
used_ranks := '{}';
FOR phrase_query_part IN
SELECT *
FROM search.parse_search_args(param_searches)
WHERE term_type = 'phrase'
AND table_alias = query_part.table_alias LOOP
tmp_text := replace( phrase_query_part.term, '*', E'\\*' );
tmp_text := replace( tmp_text, '?', E'\\?' );
tmp_text := replace( tmp_text, '+', E'\\+' );
tmp_text := replace( tmp_text, '|', E'\\|' );
tmp_text := replace( tmp_text, '(', E'\\(' );
tmp_text := replace( tmp_text, ')', E'\\)' );
tmp_text := replace( tmp_text, '[', E'\\[' );
tmp_text := replace( tmp_text, ']', E'\\]' );
inner_where_clause := inner_where_clause || ' AND ' || 'value ~* ' || quote_literal( E'(^|\\W+)' || regexp_replace(tmp_text, E'\\s+',E'\\\\s+','g') || E'(\\W+|\$)' );
END LOOP;
query_table := search.pick_table(query_part.field_class);
from_clause := from_clause ||
' JOIN ( SELECT * FROM ' || query_table || ' WHERE ' || inner_where_clause ||
CASE WHEN core_rel_limit > 0 THEN ' LIMIT ' || core_rel_limit::TEXT ELSE '' END || ' ) AS ' || query_part.table_alias ||
' ON ( m.source = ' || query_part.table_alias || '.source )' ||
' JOIN config.metabib_field AS ' || query_part.table_alias || '_weight' ||
' ON ( ' || query_part.table_alias || '.field = ' || query_part.table_alias || '_weight.id AND ' || query_part.table_alias || '_weight.search_field)';
from_alias_array := array_append(from_alias_array, query_part.table_alias);
END LOOP;
IF param_pref_lang IS NOT NULL AND param_pref_lang_multiplier IS NOT NULL THEN
current_rank := ' CASE WHEN mrd.item_lang = ' || quote_literal( param_pref_lang ) ||
' THEN ' || param_pref_lang_multiplier || '::REAL ELSE 1.0 END ';
-- ranks := array_append( ranks, current_rank );
END IF;
current_rank := ' AVG( ( (' || array_to_string( ranks, ') + (' ) || ') ) * ' || current_rank || ' ) ';
select_clause := select_clause || current_rank || ' AS rel,';
sort_desc = param_sort_desc;
IF param_sort = 'pubdate' THEN
tmp_text := '999999';
IF param_sort_desc THEN tmp_text := '0'; END IF;
current_rank := $$ COALESCE( FIRST(NULLIF(REGEXP_REPLACE(mrd.date1, E'\\D+', '9', 'g'),'')), $$ || quote_literal(tmp_text) || $$ )::INT $$;
ELSIF param_sort = 'title' THEN
tmp_text := 'zzzzzz';
IF param_sort_desc THEN tmp_text := ' '; END IF;
current_rank := $$
( COALESCE( FIRST ((
SELECT LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM E'\\d+'),'0')::INT + 1 ))
FROM metabib.full_rec frt
WHERE frt.record = m.source
AND frt.tag = '245'
AND frt.subfield = 'a'
LIMIT 1
)),$$ || quote_literal(tmp_text) || $$))
$$;
ELSIF param_sort = 'author' THEN
tmp_text := 'zzzzzz';
IF param_sort_desc THEN tmp_text := ' '; END IF;
current_rank := $$
( COALESCE( FIRST ((
SELECT LTRIM(fra.value)
FROM metabib.full_rec fra
WHERE fra.record = m.source
AND fra.tag LIKE '1%'
AND fra.subfield = 'a'
ORDER BY fra.tag::text::int
LIMIT 1
)),$$ || quote_literal(tmp_text) || $$))
$$;
ELSIF param_sort = 'create_date' THEN
current_rank := $$( FIRST (( SELECT create_date FROM biblio.record_entry rbr WHERE rbr.id = m.source)) )$$;
ELSIF param_sort = 'edit_date' THEN
current_rank := $$( FIRST (( SELECT edit_date FROM biblio.record_entry rbr WHERE rbr.id = m.source)) )$$;
ELSE
sort_desc := NOT COALESCE(param_sort_desc, FALSE);
END IF;
select_clause := select_clause || current_rank || ' AS rank';
-- now add the other qualifiers
IF param_audience IS NOT NULL AND array_upper(param_audience, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.audience IN ('$$ || array_to_string(param_audience, $$','$$) || $$') $$;
END IF;
IF param_language IS NOT NULL AND array_upper(param_language, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_lang IN ('$$ || array_to_string(param_language, $$','$$) || $$') $$;
END IF;
IF param_lit_form IS NOT NULL AND array_upper(param_lit_form, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.lit_form IN ('$$ || array_to_string(param_lit_form, $$','$$) || $$') $$;
END IF;
IF param_types IS NOT NULL AND array_upper(param_types, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_type IN ('$$ || array_to_string(param_types, $$','$$) || $$') $$;
END IF;
IF param_forms IS NOT NULL AND array_upper(param_forms, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_form IN ('$$ || array_to_string(param_forms, $$','$$) || $$') $$;
END IF;
IF param_vformats IS NOT NULL AND array_upper(param_vformats, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.vr_format IN ('$$ || array_to_string(param_vformats, $$','$$) || $$') $$;
END IF;
IF param_bib_level IS NOT NULL AND array_upper(param_bib_level, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.bib_level IN ('$$ || array_to_string(param_bib_level, $$','$$) || $$') $$;
END IF;
IF param_before IS NOT NULL AND param_before <> '' THEN
where_clause = where_clause || $$ AND mrd.date1 <= $$ || quote_literal(param_before) || ' ';
END IF;
IF param_after IS NOT NULL AND param_after <> '' THEN
where_clause = where_clause || $$ AND mrd.date1 >= $$ || quote_literal(param_after) || ' ';
END IF;
IF param_during IS NOT NULL AND param_during <> '' THEN
where_clause = where_clause || $$ AND $$ || quote_literal(param_during) || $$ BETWEEN mrd.date1 AND mrd.date2 $$;
END IF;
IF param_between IS NOT NULL AND array_upper(param_between, 1) > 1 THEN
where_clause = where_clause || $$ AND mrd.date1 BETWEEN '$$ || array_to_string(param_between, $$' AND '$$) || $$' $$;
END IF;
core_rel_query := select_clause || from_clause || where_clause ||
' GROUP BY 1 ORDER BY 4' || CASE WHEN sort_desc THEN ' DESC' ELSE ' ASC' END || ';';
--RAISE NOTICE 'Base Query: %', core_rel_query;
IF param_search_ou > 0 THEN
IF param_depth IS NOT NULL THEN
SELECT array_accum(distinct id) INTO search_org_list FROM actor.org_unit_descendants( param_search_ou, param_depth );
ELSE
SELECT array_accum(distinct id) INTO search_org_list FROM actor.org_unit_descendants( param_search_ou );
END IF;
ELSIF param_search_ou < 0 THEN
SELECT array_accum(distinct org_unit) INTO search_org_list FROM actor.org_lasso_map WHERE lasso = -param_search_ou;
ELSIF param_search_ou = 0 THEN
-- reserved for user lassos (ou_buckets/type='lasso') with ID passed in depth ... hack? sure.
END IF;
OPEN core_cursor FOR EXECUTE core_rel_query;
LOOP
FETCH core_cursor INTO core_result;
EXIT WHEN NOT FOUND;
IF total_count % 1000 = 0 THEN
-- RAISE NOTICE ' % total, % checked so far ... ', total_count, check_count;
END IF;
IF core_chk_limit > 0 AND total_count - core_skip_chk + 1 >= core_chk_limit THEN
total_count := total_count + 1;
CONTINUE;
END IF;
total_count := total_count + 1;
CONTINUE WHEN param_skip_chk IS NOT NULL and total_count < param_skip_chk;
check_count := check_count + 1;
PERFORM 1 FROM biblio.record_entry b WHERE NOT b.deleted AND b.id IN ( SELECT * FROM search.explode_array( core_result.records ) );
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all deleted ... ', core_result.records;
deleted_count := deleted_count + 1;
CONTINUE;
END IF;
PERFORM 1
FROM biblio.record_entry b
JOIN config.bib_source s ON (b.source = s.id)
WHERE s.transcendant
AND b.id IN ( SELECT * FROM search.explode_array( core_result.records ) );
IF FOUND THEN
-- RAISE NOTICE ' % were all transcendant ... ', core_result.records;
visible_count := visible_count + 1;
current_res.id = core_result.id;
current_res.rel = core_result.rel;
tmp_int := 1;
IF metarecord THEN
SELECT COUNT(DISTINCT s.source) INTO tmp_int FROM metabib.metarecord_source_map s WHERE s.metarecord = core_result.id;
END IF;
IF tmp_int = 1 THEN
current_res.record = core_result.records[1];
ELSE
current_res.record = NULL;
END IF;
RETURN NEXT current_res;
CONTINUE;
END IF;
IF param_statuses IS NOT NULL AND array_upper(param_statuses, 1) > 0 THEN
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cp.status IN ( SELECT * FROM search.explode_array( param_statuses ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
LIMIT 1;
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all status-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
END IF;
IF param_locations IS NOT NULL AND array_upper(param_locations, 1) > 0 THEN
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cp.location IN ( SELECT * FROM search.explode_array( param_locations ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
LIMIT 1;
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all copy_location-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
END IF;
IF staff IS NULL OR NOT staff THEN
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
JOIN actor.org_unit a ON (cp.circ_lib = a.id)
JOIN asset.copy_location cl ON (cp.location = cl.id)
JOIN config.copy_status cs ON (cp.status = cs.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cs.opac_visible
AND cl.opac_visible
AND cp.opac_visible
AND a.opac_visible
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all visibility-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
ELSE
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
JOIN actor.org_unit a ON (cp.circ_lib = a.id)
JOIN asset.copy_location cl ON (cp.location = cl.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF NOT FOUND THEN
PERFORM 1
FROM asset.call_number cn
WHERE cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF FOUND THEN
-- RAISE NOTICE ' % were all visibility-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
END IF;
END IF;
visible_count := visible_count + 1;
current_res.id = core_result.id;
current_res.rel = core_result.rel;
tmp_int := 1;
IF metarecord THEN
SELECT COUNT(DISTINCT s.source) INTO tmp_int FROM metabib.metarecord_source_map s WHERE s.metarecord = core_result.id;
END IF;
IF tmp_int = 1 THEN
current_res.record = core_result.records[1];
ELSE
current_res.record = NULL;
END IF;
RETURN NEXT current_res;
IF visible_count % 1000 = 0 THEN
-- RAISE NOTICE ' % visible so far ... ', visible_count;
END IF;
END LOOP;
current_res.id = NULL;
current_res.rel = NULL;
current_res.record = NULL;
current_res.total = total_count;
current_res.checked = check_count;
current_res.deleted = deleted_count;
current_res.visible = visible_count;
current_res.excluded = excluded_count;
CLOSE core_cursor;
RETURN NEXT current_res;
END;
Returns: SET OF search_result
Language: PLPGSQL
DECLARE
current_res search.search_result%ROWTYPE;
query_part search.search_args%ROWTYPE;
phrase_query_part search.search_args%ROWTYPE;
rank_adjust_id INT;
core_rel_limit INT;
core_chk_limit INT;
core_skip_chk INT;
rank_adjust search.relevance_adjustment%ROWTYPE;
query_table TEXT;
tmp_text TEXT;
tmp_int INT;
current_rank TEXT;
ranks TEXT[] := '{}';
query_table_alias TEXT;
from_alias_array TEXT[] := '{}';
used_ranks TEXT[] := '{}';
mb_field INT;
mb_field_list INT[];
search_org_list INT[];
select_clause TEXT := 'SELECT';
from_clause TEXT := ' FROM metabib.metarecord_source_map m JOIN metabib.rec_descriptor mrd ON (m.source = mrd.record) ';
where_clause TEXT := ' WHERE 1=1 ';
mrd_used BOOL := FALSE;
sort_desc BOOL := FALSE;
core_result RECORD;
core_cursor REFCURSOR;
core_rel_query TEXT;
vis_limit_query TEXT;
inner_where_clause TEXT;
total_count INT := 0;
check_count INT := 0;
deleted_count INT := 0;
visible_count INT := 0;
excluded_count INT := 0;
BEGIN
core_rel_limit := COALESCE( param_rel_limit, 25000 );
core_chk_limit := COALESCE( param_chk_limit, 1000 );
core_skip_chk := COALESCE( param_skip_chk, 1 );
IF metarecord THEN
select_clause := select_clause || ' m.metarecord as id, array_accum(distinct m.source) as records,';
ELSE
select_clause := select_clause || ' m.source as id, array_accum(distinct m.source) as records,';
END IF;
-- first we need to construct the base query
FOR query_part IN SELECT * FROM search.parse_search_args(param_searches) WHERE term_type = 'fts_query' LOOP
inner_where_clause := 'index_vector @@ ' || query_part.term;
IF query_part.field_name IS NOT NULL THEN
SELECT id INTO mb_field
FROM config.metabib_field
WHERE field_class = query_part.field_class
AND name = query_part.field_name;
IF FOUND THEN
inner_where_clause := inner_where_clause ||
' AND ' || 'field = ' || mb_field;
END IF;
END IF;
-- moving on to the rank ...
SELECT * INTO query_part
FROM search.parse_search_args(param_searches)
WHERE term_type = 'fts_rank'
AND table_alias = query_part.table_alias;
current_rank := query_part.term || ' * ' || query_part.table_alias || '_weight.weight';
IF query_part.field_name IS NOT NULL THEN
SELECT array_accum(distinct id) INTO mb_field_list
FROM config.metabib_field
WHERE field_class = query_part.field_class
AND name = query_part.field_name;
ELSE
SELECT array_accum(distinct id) INTO mb_field_list
FROM config.metabib_field
WHERE field_class = query_part.field_class;
END IF;
FOR rank_adjust IN SELECT * FROM search.relevance_adjustment WHERE active AND field IN ( SELECT * FROM search.explode_array( mb_field_list ) ) LOOP
IF NOT rank_adjust.bump_type = ANY (used_ranks) THEN
IF rank_adjust.bump_type = 'first_word' THEN
SELECT term INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word'
ORDER BY id
LIMIT 1;
tmp_text := query_part.table_alias || '.value ILIKE ' || quote_literal( tmp_text || '%' );
ELSIF rank_adjust.bump_type = 'word_order' THEN
SELECT array_to_string( array_accum( term ), '%' ) INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word';
tmp_text := query_part.table_alias || '.value ILIKE ' || quote_literal( '%' || tmp_text || '%' );
ELSIF rank_adjust.bump_type = 'full_match' THEN
SELECT array_to_string( array_accum( term ), E'\\s+' ) INTO tmp_text
FROM search.parse_search_args(param_searches)
WHERE table_alias = query_part.table_alias AND term_type = 'word';
tmp_text := query_part.table_alias || '.value ~ ' || quote_literal( '^' || tmp_text || E'\\W*$' );
END IF;
IF tmp_text IS NOT NULL THEN
current_rank := current_rank || ' * ( CASE WHEN ' || tmp_text ||
' THEN ' || rank_adjust.multiplier || '::REAL ELSE 1.0 END )';
END IF;
used_ranks := array_append( used_ranks, rank_adjust.bump_type );
END IF;
END LOOP;
ranks := array_append( ranks, current_rank );
used_ranks := '{}';
FOR phrase_query_part IN
SELECT *
FROM search.parse_search_args(param_searches)
WHERE term_type = 'phrase'
AND table_alias = query_part.table_alias LOOP
tmp_text := replace( phrase_query_part.term, '*', E'\\*' );
tmp_text := replace( tmp_text, '?', E'\\?' );
tmp_text := replace( tmp_text, '+', E'\\+' );
tmp_text := replace( tmp_text, '|', E'\\|' );
tmp_text := replace( tmp_text, '(', E'\\(' );
tmp_text := replace( tmp_text, ')', E'\\)' );
tmp_text := replace( tmp_text, '[', E'\\[' );
tmp_text := replace( tmp_text, ']', E'\\]' );
inner_where_clause := inner_where_clause || ' AND ' || 'value ~* ' || quote_literal( E'(^|\\W+)' || regexp_replace(tmp_text, E'\\s+',E'\\\\s+','g') || E'(\\W+|\$)' );
END LOOP;
query_table := search.pick_table(query_part.field_class);
from_clause := from_clause ||
' JOIN ( SELECT * FROM ' || query_table || ' WHERE ' || inner_where_clause ||
CASE WHEN core_rel_limit > 0 THEN ' LIMIT ' || core_rel_limit::TEXT ELSE '' END || ' ) AS ' || query_part.table_alias ||
' ON ( m.source = ' || query_part.table_alias || '.source )' ||
' JOIN config.metabib_field AS ' || query_part.table_alias || '_weight' ||
' ON ( ' || query_part.table_alias || '.field = ' || query_part.table_alias || '_weight.id AND ' || query_part.table_alias || '_weight.search_field)';
from_alias_array := array_append(from_alias_array, query_part.table_alias);
END LOOP;
IF param_pref_lang IS NOT NULL AND param_pref_lang_multiplier IS NOT NULL THEN
current_rank := ' CASE WHEN mrd.item_lang = ' || quote_literal( param_pref_lang ) ||
' THEN ' || param_pref_lang_multiplier || '::REAL ELSE 1.0 END ';
--ranks := array_append( ranks, current_rank );
END IF;
current_rank := ' AVG( ( (' || array_to_string( ranks, ') + (' ) || ') ) * ' || current_rank || ' ) ';
select_clause := select_clause || current_rank || ' AS rel,';
sort_desc = param_sort_desc;
IF param_sort = 'pubdate' THEN
tmp_text := '999999';
IF param_sort_desc THEN tmp_text := '0'; END IF;
current_rank := $$
( COALESCE( FIRST ((
SELECT SUBSTRING(frp.value FROM E'\\d{4}')
FROM metabib.full_rec frp
WHERE frp.record = m.source
AND frp.tag = '260'
AND frp.subfield = 'c'
LIMIT 1
)), $$ || quote_literal(tmp_text) || $$ )::INT )
$$;
ELSIF param_sort = 'title' THEN
tmp_text := 'zzzzzz';
IF param_sort_desc THEN tmp_text := ' '; END IF;
current_rank := $$
( COALESCE( FIRST ((
SELECT LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM E'\\d+'),'0')::INT + 1 ))
FROM metabib.full_rec frt
WHERE frt.record = m.source
AND frt.tag = '245'
AND frt.subfield = 'a'
LIMIT 1
)),$$ || quote_literal(tmp_text) || $$))
$$;
ELSIF param_sort = 'author' THEN
tmp_text := 'zzzzzz';
IF param_sort_desc THEN tmp_text := ' '; END IF;
current_rank := $$
( COALESCE( FIRST ((
SELECT LTRIM(fra.value)
FROM metabib.full_rec fra
WHERE fra.record = m.source
AND fra.tag LIKE '1%'
AND fra.subfield = 'a'
ORDER BY fra.tag::text::int
LIMIT 1
)),$$ || quote_literal(tmp_text) || $$))
$$;
ELSIF param_sort = 'create_date' THEN
current_rank := $$( FIRST (( SELECT create_date FROM biblio.record_entry rbr WHERE rbr.id = m.source)) )$$;
ELSIF param_sort = 'edit_date' THEN
current_rank := $$( FIRST (( SELECT edit_date FROM biblio.record_entry rbr WHERE rbr.id = m.source)) )$$;
ELSE
sort_desc := NOT COALESCE(param_sort_desc, FALSE);
END IF;
select_clause := select_clause || current_rank || ' AS rank';
-- now add the other qualifiers
IF param_audience IS NOT NULL AND array_upper(param_audience, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.audience IN ('$$ || array_to_string(param_audience, $$','$$) || $$') $$;
END IF;
IF param_language IS NOT NULL AND array_upper(param_language, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_lang IN ('$$ || array_to_string(param_language, $$','$$) || $$') $$;
END IF;
IF param_lit_form IS NOT NULL AND array_upper(param_lit_form, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.lit_form IN ('$$ || array_to_string(param_lit_form, $$','$$) || $$') $$;
END IF;
IF param_types IS NOT NULL AND array_upper(param_types, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_type IN ('$$ || array_to_string(param_types, $$','$$) || $$') $$;
END IF;
IF param_forms IS NOT NULL AND array_upper(param_forms, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.item_form IN ('$$ || array_to_string(param_forms, $$','$$) || $$') $$;
END IF;
IF param_vformats IS NOT NULL AND array_upper(param_vformats, 1) > 0 THEN
where_clause = where_clause || $$ AND mrd.vr_format IN ('$$ || array_to_string(param_vformats, $$','$$) || $$') $$;
END IF;
core_rel_query := select_clause || from_clause || where_clause ||
' GROUP BY 1 ORDER BY 4' || CASE WHEN sort_desc THEN ' DESC' ELSE ' ASC' END || ';';
--RAISE NOTICE 'Base Query: %', core_rel_query;
IF param_depth IS NOT NULL THEN
SELECT array_accum(distinct id) INTO search_org_list FROM actor.org_unit_descendants( param_search_ou, param_depth );
ELSE
SELECT array_accum(distinct id) INTO search_org_list FROM actor.org_unit_descendants( param_search_ou );
END IF;
OPEN core_cursor FOR EXECUTE core_rel_query;
LOOP
FETCH core_cursor INTO core_result;
EXIT WHEN NOT FOUND;
IF total_count % 1000 = 0 THEN
-- RAISE NOTICE ' % total, % checked so far ... ', total_count, check_count;
END IF;
IF core_chk_limit > 0 AND total_count - core_skip_chk + 1 >= core_chk_limit THEN
total_count := total_count + 1;
CONTINUE;
END IF;
total_count := total_count + 1;
CONTINUE WHEN param_skip_chk IS NOT NULL and total_count < param_skip_chk;
check_count := check_count + 1;
PERFORM 1 FROM biblio.record_entry b WHERE NOT b.deleted AND b.id IN ( SELECT * FROM search.explode_array( core_result.records ) );
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all deleted ... ', core_result.records;
deleted_count := deleted_count + 1;
CONTINUE;
END IF;
PERFORM 1
FROM biblio.record_entry b
JOIN config.bib_source s ON (b.source = s.id)
WHERE s.transcendant
AND b.id IN ( SELECT * FROM search.explode_array( core_result.records ) );
IF FOUND THEN
-- RAISE NOTICE ' % were all transcendant ... ', core_result.records;
visible_count := visible_count + 1;
current_res.id = core_result.id;
current_res.rel = core_result.rel;
tmp_int := 1;
IF metarecord THEN
SELECT COUNT(DISTINCT s.source) INTO tmp_int FROM metabib.metarecord_source_map s WHERE s.metarecord = core_result.id;
END IF;
IF tmp_int = 1 THEN
current_res.record = core_result.records[1];
ELSE
current_res.record = NULL;
END IF;
RETURN NEXT current_res;
CONTINUE;
END IF;
IF param_statuses IS NOT NULL AND array_upper(param_statuses, 1) > 0 THEN
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cp.status IN ( SELECT * FROM search.explode_array( param_statuses ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
LIMIT 1;
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all status-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
END IF;
IF param_locations IS NOT NULL AND array_upper(param_locations, 1) > 0 THEN
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cp.location IN ( SELECT * FROM search.explode_array( param_locations ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
LIMIT 1;
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all copy_location-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
END IF;
IF staff IS NULL OR NOT staff THEN
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
JOIN actor.org_unit a ON (cp.circ_lib = a.id)
JOIN asset.copy_location cl ON (cp.location = cl.id)
JOIN config.copy_status cs ON (cp.status = cs.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cs.holdable
AND cl.opac_visible
AND cp.opac_visible
AND a.opac_visible
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF NOT FOUND THEN
-- RAISE NOTICE ' % were all visibility-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
ELSE
PERFORM 1
FROM asset.call_number cn
JOIN asset.copy cp ON (cp.call_number = cn.id)
JOIN actor.org_unit a ON (cp.circ_lib = a.id)
JOIN asset.copy_location cl ON (cp.location = cl.id)
JOIN config.copy_status cs ON (cp.status = cs.id)
WHERE NOT cn.deleted
AND NOT cp.deleted
AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) )
AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF NOT FOUND THEN
PERFORM 1
FROM asset.call_number cn
WHERE cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) )
LIMIT 1;
IF FOUND THEN
-- RAISE NOTICE ' % were all visibility-excluded ... ', core_result.records;
excluded_count := excluded_count + 1;
CONTINUE;
END IF;
END IF;
END IF;
visible_count := visible_count + 1;
current_res.id = core_result.id;
current_res.rel = core_result.rel;
tmp_int := 1;
IF metarecord THEN
SELECT COUNT(DISTINCT s.source) INTO tmp_int FROM metabib.metarecord_source_map s WHERE s.metarecord = core_result.id;
END IF;
IF tmp_int = 1 THEN
current_res.record = core_result.records[1];
ELSE
current_res.record = NULL;
END IF;
RETURN NEXT current_res;
IF visible_count % 1000 = 0 THEN
-- RAISE NOTICE ' % visible so far ... ', visible_count;
END IF;
END LOOP;
current_res.id = NULL;
current_res.rel = NULL;
current_res.record = NULL;
current_res.total = total_count;
current_res.checked = check_count;
current_res.deleted = deleted_count;
current_res.visible = visible_count;
current_res.excluded = excluded_count;
CLOSE core_cursor;
RETURN NEXT current_res;
END;
Schema stats
stats.fleshed_call_number Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
creator |
bigint |
|
|
create_date |
timestamp with time zone |
|
|
editor |
bigint |
|
|
edit_date |
timestamp with time zone |
|
|
record |
bigint |
|
|
owning_lib |
integer |
|
|
label |
text |
|
|
deleted |
boolean |
|
|
create_date_day |
date |
|
|
edit_date_day |
date |
|
|
create_date_hour |
timestamp with time zone |
|
|
edit_date_hour |
timestamp with time zone |
|
|
item_lang |
text |
|
|
item_type |
text |
|
|
item_form |
text |
|
SELECT cn.id
, cn.creator
, cn.create_date
, cn.editor
, cn.edit_date
, cn.record
, cn.owning_lib
, cn.label
, cn.deleted
, (cn.create_date)::date AS create_date_day
, (cn.edit_date)::date AS edit_date_day
, date_trunc
('hour'::text
, cn.create_date
) AS create_date_hour
, date_trunc
('hour'::text
, cn.edit_date
) AS edit_date_hour
, rd.item_lang
, rd.item_type
, rd.item_form
FROM (asset.call_number cn
JOIN metabib.rec_descriptor rd
ON (
(rd.record = cn.record)
)
);
Permissions which apply to stats.fleshed_call_number
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema stats
stats.fleshed_circulation Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
usr |
integer |
|
|
xact_start |
timestamp with time zone |
|
|
xact_finish |
timestamp with time zone |
|
|
target_copy |
bigint |
|
|
circ_lib |
integer |
|
|
circ_staff |
integer |
|
|
checkin_staff |
integer |
|
|
checkin_lib |
integer |
|
|
renewal_remaining |
integer |
|
|
due_date |
timestamp with time zone |
|
|
stop_fines_time |
timestamp with time zone |
|
|
checkin_time |
timestamp with time zone |
|
|
duration |
interval |
|
|
fine_interval |
interval |
|
|
recuring_fine |
numeric(6,2) |
|
|
max_fine |
numeric(6,2) |
|
|
phone_renewal |
boolean |
|
|
desk_renewal |
boolean |
|
|
opac_renewal |
boolean |
|
|
duration_rule |
text |
|
|
recuring_fine_rule |
text |
|
|
max_fine_rule |
text |
|
|
stop_fines |
text |
|
|
start_date_day |
date |
|
|
finish_date_day |
date |
|
|
start_date_hour |
timestamp with time zone |
|
|
finish_date_hour |
timestamp with time zone |
|
|
call_number_label |
text |
|
|
owning_lib |
integer |
|
|
item_lang |
text |
|
|
item_type |
text |
|
|
item_form |
text |
|
SELECT c.id
, c.usr
, c.xact_start
, c.xact_finish
, c.target_copy
, c.circ_lib
, c.circ_staff
, c.checkin_staff
, c.checkin_lib
, c.renewal_remaining
, c.due_date
, c.stop_fines_time
, c.checkin_time
, c.duration
, c.fine_interval
, c.recuring_fine
, c.max_fine
, c.phone_renewal
, c.desk_renewal
, c.opac_renewal
, c.duration_rule
, c.recuring_fine_rule
, c.max_fine_rule
, c.stop_fines
, (c.xact_start)::date AS start_date_day
, (c.xact_finish)::date AS finish_date_day
, date_trunc
('hour'::text
, c.xact_start
) AS start_date_hour
, date_trunc
('hour'::text
, c.xact_finish
) AS finish_date_hour
, cp.call_number_label
, cp.owning_lib
, cp.item_lang
, cp.item_type
, cp.item_form
FROM ("action".circulation c
JOIN stats.fleshed_copy cp
ON (
(cp.id = c.target_copy)
)
);
Permissions which apply to stats.fleshed_circulation
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema stats
stats.fleshed_copy Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
|
|
circ_lib |
integer |
|
|
creator |
bigint |
|
|
call_number |
bigint |
|
|
editor |
bigint |
|
|
create_date |
timestamp with time zone |
|
|
edit_date |
timestamp with time zone |
|
|
copy_number |
integer |
|
|
status |
integer |
|
|
location |
integer |
|
|
loan_duration |
integer |
|
|
fine_level |
integer |
|
|
age_protect |
integer |
|
|
circulate |
boolean |
|
|
deposit |
boolean |
|
|
ref |
boolean |
|
|
holdable |
boolean |
|
|
deposit_amount |
numeric(6,2) |
|
|
price |
numeric(8,2) |
|
|
barcode |
text |
|
|
circ_modifier |
text |
|
|
circ_as_type |
text |
|
|
dummy_title |
text |
|
|
dummy_author |
text |
|
|
alert_message |
text |
|
|
opac_visible |
boolean |
|
|
deleted |
boolean |
|
|
create_date_day |
date |
|
|
edit_date_day |
date |
|
|
create_date_hour |
timestamp with time zone |
|
|
edit_date_hour |
timestamp with time zone |
|
|
call_number_label |
text |
|
|
owning_lib |
integer |
|
|
item_lang |
text |
|
|
item_type |
text |
|
|
item_form |
text |
|
SELECT cp.id
, cp.circ_lib
, cp.creator
, cp.call_number
, cp.editor
, cp.create_date
, cp.edit_date
, cp.copy_number
, cp.status
, cp."location"
, cp.loan_duration
, cp.fine_level
, cp.age_protect
, cp.circulate
, cp.deposit
, cp.ref
, cp.holdable
, cp.deposit_amount
, cp.price
, cp.barcode
, cp.circ_modifier
, cp.circ_as_type
, cp.dummy_title
, cp.dummy_author
, cp.alert_message
, cp.opac_visible
, cp.deleted
, (cp.create_date)::date AS create_date_day
, (cp.edit_date)::date AS edit_date_day
, date_trunc
('hour'::text
, cp.create_date
) AS create_date_hour
, date_trunc
('hour'::text
, cp.edit_date
) AS edit_date_hour
, cn.label AS call_number_label
, cn.owning_lib
, rd.item_lang
, rd.item_type
, rd.item_form
FROM (
(asset."copy" cp
JOIN asset.call_number cn
ON (
(cp.call_number = cn.id)
)
)
JOIN metabib.rec_descriptor rd
ON (
(rd.record = cn.record)
)
);
Permissions which apply to stats.fleshed_copy
User |
Select |
Insert |
Update |
Delete |
Reference |
Rule |
Trigger |
PUBLIC |
♦ |
|
|
|
♦ |
♦ |
♦ |
postgres |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
♦ |
Index -
Schema stats
Schema vandelay
vandelay.authority_attr_definition Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
code |
text |
UNIQUE
NOT NULL
|
|
description |
text |
|
|
xpath |
text |
NOT NULL
|
|
remove |
text |
NOT NULL
DEFAULT ''::text
|
|
ident |
boolean |
NOT NULL
DEFAULT false
|
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
Index -
Schema vandelay
vandelay.authority_queue Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('vandelay.queue_id_seq'::regclass)
|
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
complete |
boolean |
NOT NULL
DEFAULT false
|
|
queue_type |
text |
UNIQUE#1
NOT NULL
DEFAULT 'authority'::text
|
vandelay.authority_queue Constraints
Name |
Constraint |
authority_queue_queue_type_check |
CHECK ((queue_type = 'authority'::text)) |
queue_queue_type_check |
CHECK (((queue_type = 'bib'::text) OR (queue_type = 'authority'::text))) |
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
vandelay.bib_attr_definition Structure
F-Key |
Name |
Type |
Description |
|
id |
serial |
PRIMARY KEY
|
|
code |
text |
UNIQUE
NOT NULL
|
|
description |
text |
|
|
xpath |
text |
NOT NULL
|
|
remove |
text |
NOT NULL
DEFAULT ''::text
|
|
ident |
boolean |
NOT NULL
DEFAULT false
|
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
vandelay.bib_match Constraints
Name |
Constraint |
bib_match_field_type_check |
CHECK ((((field_type = 'isbn'::text) OR (field_type = 'tcn_value'::text)) OR (field_type = 'id'::text))) |
Index -
Schema vandelay
vandelay.bib_queue Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('vandelay.queue_id_seq'::regclass)
|
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
complete |
boolean |
NOT NULL
DEFAULT false
|
|
queue_type |
text |
UNIQUE#1
NOT NULL
DEFAULT 'bib'::text
|
vandelay.import_item_attr_definition.id
|
item_attr_def |
bigint |
|
vandelay.bib_queue Constraints
Name |
Constraint |
bib_queue_queue_type_check |
CHECK ((queue_type = 'bib'::text)) |
queue_queue_type_check |
CHECK (((queue_type = 'bib'::text) OR (queue_type = 'authority'::text))) |
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
vandelay.import_bib_trash_fields Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.org_unit.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
field |
text |
UNIQUE#1
NOT NULL
|
Index -
Schema vandelay
vandelay.import_item Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
vandelay.queued_bib_record.id
|
record |
bigint |
NOT NULL
|
vandelay.import_item_attr_definition.id
|
definition |
bigint |
NOT NULL
|
|
owning_lib |
integer |
|
|
circ_lib |
integer |
|
|
call_number |
text |
|
|
copy_number |
integer |
|
|
status |
integer |
|
|
location |
integer |
|
|
circulate |
boolean |
|
|
deposit |
boolean |
|
|
deposit_amount |
numeric(8,2) |
|
|
ref |
boolean |
|
|
holdable |
boolean |
|
|
price |
numeric(8,2) |
|
|
barcode |
text |
|
|
circ_modifier |
text |
|
|
circ_as_type |
text |
|
|
alert_message |
text |
|
|
pub_note |
text |
|
|
priv_note |
text |
|
|
opac_visible |
boolean |
|
Index -
Schema vandelay
vandelay.import_item_attr_definition Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.org_unit.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
tag |
text |
NOT NULL
|
|
keep |
boolean |
NOT NULL
DEFAULT false
|
|
owning_lib |
text |
|
|
circ_lib |
text |
|
|
call_number |
text |
|
|
copy_number |
text |
|
|
status |
text |
|
|
location |
text |
|
|
circulate |
text |
|
|
deposit |
text |
|
|
deposit_amount |
text |
|
|
ref |
text |
|
|
holdable |
text |
|
|
price |
text |
|
|
barcode |
text |
|
|
circ_modifier |
text |
|
|
circ_as_type |
text |
|
|
alert_message |
text |
|
|
opac_visible |
text |
|
|
pub_note_title |
text |
|
|
pub_note |
text |
|
|
priv_note_title |
text |
|
|
priv_note |
text |
|
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
vandelay.queue Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
actor.usr.id
|
owner |
integer |
UNIQUE#1
NOT NULL
|
|
name |
text |
UNIQUE#1
NOT NULL
|
|
complete |
boolean |
NOT NULL
DEFAULT false
|
|
queue_type |
text |
UNIQUE#1
NOT NULL
DEFAULT 'bib'::text
|
vandelay.queue Constraints
Name |
Constraint |
queue_queue_type_check |
CHECK (((queue_type = 'bib'::text) OR (queue_type = 'authority'::text))) |
Index -
Schema vandelay
vandelay.queued_authority_record Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('vandelay.queued_record_id_seq'::regclass)
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
import_time |
timestamp with time zone |
|
|
purpose |
text |
NOT NULL
DEFAULT 'import'::text
|
|
marc |
text |
NOT NULL
|
vandelay.authority_queue.id
|
queue |
integer |
NOT NULL
|
authority.record_entry.id
|
imported_as |
integer |
|
vandelay.queued_authority_record Constraints
Name |
Constraint |
queued_record_purpose_check |
CHECK (((purpose = 'import'::text) OR (purpose = 'overlay'::text))) |
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
vandelay.queued_bib_record Structure
F-Key |
Name |
Type |
Description |
|
id |
bigint |
PRIMARY KEY
DEFAULT nextval('vandelay.queued_record_id_seq'::regclass)
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
import_time |
timestamp with time zone |
|
|
purpose |
text |
NOT NULL
DEFAULT 'import'::text
|
|
marc |
text |
NOT NULL
|
vandelay.bib_queue.id
|
queue |
integer |
NOT NULL
|
config.bib_source.id
|
bib_source |
integer |
|
biblio.record_entry.id
|
imported_as |
integer |
|
vandelay.queued_bib_record Constraints
Name |
Constraint |
queued_record_purpose_check |
CHECK (((purpose = 'import'::text) OR (purpose = 'overlay'::text))) |
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
Tables referencing this one via Foreign Key Constraints:
Index -
Schema vandelay
vandelay.queued_record Structure
F-Key |
Name |
Type |
Description |
|
id |
bigserial |
PRIMARY KEY
|
|
create_time |
timestamp with time zone |
NOT NULL
DEFAULT now()
|
|
import_time |
timestamp with time zone |
|
|
purpose |
text |
NOT NULL
DEFAULT 'import'::text
|
|
marc |
text |
NOT NULL
|
vandelay.queued_record Constraints
Name |
Constraint |
queued_record_purpose_check |
CHECK (((purpose = 'import'::text) OR (purpose = 'overlay'::text))) |
Index -
Schema vandelay
Returns: "trigger"
Language: PLPGSQL
BEGIN
DELETE FROM vandelay.queued_authority_record_attr WHERE record = OLD.id;
IF TG_OP = 'UPDATE' THEN
RETURN NEW;
END IF;
RETURN OLD;
END;
Returns: "trigger"
Language: PLPGSQL
BEGIN
DELETE FROM vandelay.queued_bib_record_attr WHERE record = OLD.id;
DELETE FROM vandelay.import_item WHERE record = OLD.id;
IF TG_OP = 'UPDATE' THEN
RETURN NEW;
END IF;
RETURN OLD;
END;
Returns: "trigger"
Language: PLPGSQL
DECLARE
value TEXT;
atype TEXT;
adef RECORD;
BEGIN
FOR adef IN SELECT * FROM vandelay.authority_attr_definition LOOP
SELECT extract_marc_field('vandelay.queued_authority_record', id, adef.xpath, adef.remove) INTO value FROM vandelay.queued_authority_record WHERE id = NEW.id;
IF (value IS NOT NULL AND value <> '') THEN
INSERT INTO vandelay.queued_authority_record_attr (record, field, attr_value) VALUES (NEW.id, adef.id, value);
END IF;
END LOOP;
RETURN NULL;
END;
Returns: "trigger"
Language: PLPGSQL
DECLARE
queue_rec RECORD;
item_rule RECORD;
item_data vandelay.import_item%ROWTYPE;
BEGIN
SELECT * INTO queue_rec FROM vandelay.bib_queue WHERE id = NEW.queue;
FOR item_rule IN SELECT r.* FROM actor.org_unit_ancestors( queue_rec.owner ) o JOIN vandelay.import_item_attr_definition r ON ( r.owner = o.id ) LOOP
FOR item_data IN SELECT * FROM vandelay.ingest_items( NEW.id::BIGINT, item_rule.id::BIGINT ) LOOP
INSERT INTO vandelay.import_item (
record,
definition,
owning_lib,
circ_lib,
call_number,
copy_number,
status,
location,
circulate,
deposit,
deposit_amount,
ref,
holdable,
price,
barcode,
circ_modifier,
circ_as_type,
alert_message,
pub_note,
priv_note,
opac_visible
) VALUES (
NEW.id,
item_data.definition,
item_data.owning_lib,
item_data.circ_lib,
item_data.call_number,
item_data.copy_number,
item_data.status,
item_data.location,
item_data.circulate,
item_data.deposit,
item_data.deposit_amount,
item_data.ref,
item_data.holdable,
item_data.price,
item_data.barcode,
item_data.circ_modifier,
item_data.circ_as_type,
item_data.alert_message,
item_data.pub_note,
item_data.priv_note,
item_data.opac_visible
);
END LOOP;
END LOOP;
RETURN NULL;
END;
Returns: "trigger"
Language: PLPGSQL
DECLARE
value TEXT;
atype TEXT;
adef RECORD;
BEGIN
FOR adef IN SELECT * FROM vandelay.bib_attr_definition LOOP
SELECT extract_marc_field('vandelay.queued_bib_record', id, adef.xpath, adef.remove) INTO value FROM vandelay.queued_bib_record WHERE id = NEW.id;
IF (value IS NOT NULL AND value <> '') THEN
INSERT INTO vandelay.queued_bib_record_attr (record, field, attr_value) VALUES (NEW.id, adef.id, value);
END IF;
END LOOP;
RETURN NULL;
END;
Returns: SET OF import_item
Language: PLPGSQL
DECLARE
owning_lib TEXT;
circ_lib TEXT;
call_number TEXT;
copy_number TEXT;
status TEXT;
location TEXT;
circulate TEXT;
deposit TEXT;
deposit_amount TEXT;
ref TEXT;
holdable TEXT;
price TEXT;
barcode TEXT;
circ_modifier TEXT;
circ_as_type TEXT;
alert_message TEXT;
opac_visible TEXT;
pub_note TEXT;
priv_note TEXT;
attr_def RECORD;
tmp_attr_set RECORD;
attr_set vandelay.import_item%ROWTYPE;
xpath TEXT;
BEGIN
SELECT * INTO attr_def FROM vandelay.import_item_attr_definition WHERE id = attr_def_id;
IF FOUND THEN
attr_set.definition := attr_def.id;
-- Build the combined XPath
owning_lib :=
CASE
WHEN attr_def.owning_lib IS NULL THEN 'null()'
WHEN LENGTH( attr_def.owning_lib ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.owning_lib || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.owning_lib
END;
circ_lib :=
CASE
WHEN attr_def.circ_lib IS NULL THEN 'null()'
WHEN LENGTH( attr_def.circ_lib ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.circ_lib || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.circ_lib
END;
call_number :=
CASE
WHEN attr_def.call_number IS NULL THEN 'null()'
WHEN LENGTH( attr_def.call_number ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.call_number || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.call_number
END;
copy_number :=
CASE
WHEN attr_def.copy_number IS NULL THEN 'null()'
WHEN LENGTH( attr_def.copy_number ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.copy_number || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.copy_number
END;
status :=
CASE
WHEN attr_def.status IS NULL THEN 'null()'
WHEN LENGTH( attr_def.status ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.status || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.status
END;
location :=
CASE
WHEN attr_def.location IS NULL THEN 'null()'
WHEN LENGTH( attr_def.location ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.location || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.location
END;
circulate :=
CASE
WHEN attr_def.circulate IS NULL THEN 'null()'
WHEN LENGTH( attr_def.circulate ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.circulate || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.circulate
END;
deposit :=
CASE
WHEN attr_def.deposit IS NULL THEN 'null()'
WHEN LENGTH( attr_def.deposit ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.deposit || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.deposit
END;
deposit_amount :=
CASE
WHEN attr_def.deposit_amount IS NULL THEN 'null()'
WHEN LENGTH( attr_def.deposit_amount ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.deposit_amount || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.deposit_amount
END;
ref :=
CASE
WHEN attr_def.ref IS NULL THEN 'null()'
WHEN LENGTH( attr_def.ref ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.ref || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.ref
END;
holdable :=
CASE
WHEN attr_def.holdable IS NULL THEN 'null()'
WHEN LENGTH( attr_def.holdable ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.holdable || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.holdable
END;
price :=
CASE
WHEN attr_def.price IS NULL THEN 'null()'
WHEN LENGTH( attr_def.price ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.price || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.price
END;
barcode :=
CASE
WHEN attr_def.barcode IS NULL THEN 'null()'
WHEN LENGTH( attr_def.barcode ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.barcode || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.barcode
END;
circ_modifier :=
CASE
WHEN attr_def.circ_modifier IS NULL THEN 'null()'
WHEN LENGTH( attr_def.circ_modifier ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.circ_modifier || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.circ_modifier
END;
circ_as_type :=
CASE
WHEN attr_def.circ_as_type IS NULL THEN 'null()'
WHEN LENGTH( attr_def.circ_as_type ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.circ_as_type || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.circ_as_type
END;
alert_message :=
CASE
WHEN attr_def.alert_message IS NULL THEN 'null()'
WHEN LENGTH( attr_def.alert_message ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.alert_message || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.alert_message
END;
opac_visible :=
CASE
WHEN attr_def.opac_visible IS NULL THEN 'null()'
WHEN LENGTH( attr_def.opac_visible ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.opac_visible || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.opac_visible
END;
pub_note :=
CASE
WHEN attr_def.pub_note IS NULL THEN 'null()'
WHEN LENGTH( attr_def.pub_note ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.pub_note || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.pub_note
END;
priv_note :=
CASE
WHEN attr_def.priv_note IS NULL THEN 'null()'
WHEN LENGTH( attr_def.priv_note ) = 1 THEN '//*[@tag="' || attr_def.tag || '"]/*[@code="' || attr_def.priv_note || '"]'
ELSE '//*[@tag="' || attr_def.tag || '"]/*' || attr_def.priv_note
END;
xpath :=
owning_lib || '|' ||
circ_lib || '|' ||
call_number || '|' ||
copy_number || '|' ||
status || '|' ||
location || '|' ||
circulate || '|' ||
deposit || '|' ||
deposit_amount || '|' ||
ref || '|' ||
holdable || '|' ||
price || '|' ||
barcode || '|' ||
circ_modifier || '|' ||
circ_as_type || '|' ||
alert_message || '|' ||
pub_note || '|' ||
priv_note || '|' ||
opac_visible;
-- RAISE NOTICE 'XPath: %', xpath;
FOR tmp_attr_set IN
SELECT *
FROM xpath_table( 'id', 'marc', 'vandelay.queued_bib_record', xpath, 'id = ' || import_id )
AS t( id BIGINT, ol TEXT, clib TEXT, cn TEXT, cnum TEXT, cs TEXT, cl TEXT, circ TEXT,
dep TEXT, dep_amount TEXT, r TEXT, hold TEXT, pr TEXT, bc TEXT, circ_mod TEXT,
circ_as TEXT, amessage TEXT, note TEXT, pnote TEXT, opac_vis TEXT )
LOOP
tmp_attr_set.pr = REGEXP_REPLACE(tmp_attr_set.pr, E'[^0-9\\.]', '', 'g');
tmp_attr_set.dep_amount = REGEXP_REPLACE(tmp_attr_set.dep_amount, E'[^0-9\\.]', '', 'g');
tmp_attr_set.pr := NULLIF( tmp_attr_set.pr, '' );
tmp_attr_set.dep_amount := NULLIF( tmp_attr_set.dep_amount, '' );
SELECT id INTO attr_set.owning_lib FROM actor.org_unit WHERE shortname = UPPER(tmp_attr_set.ol); -- INT
SELECT id INTO attr_set.circ_lib FROM actor.org_unit WHERE shortname = UPPER(tmp_attr_set.clib); -- INT
SELECT id INTO attr_set.status FROM config.copy_status WHERE LOWER(name) = LOWER(tmp_attr_set.cs); -- INT
SELECT id INTO attr_set.location
FROM asset.copy_location
WHERE LOWER(name) = LOWER(tmp_attr_set.cl)
AND owning_lib = COALESCE(attr_set.owning_lib, attr_set.circ_lib); -- INT
attr_set.circulate :=
LOWER( SUBSTRING( tmp_attr_set.circ, 1, 1)) IN ('t','y','1')
OR LOWER(tmp_attr_set.circ) = 'circulating'; -- BOOL
attr_set.deposit :=
LOWER( SUBSTRING( tmp_attr_set.dep, 1, 1 ) ) IN ('t','y','1')
OR LOWER(tmp_attr_set.dep) = 'deposit'; -- BOOL
attr_set.holdable :=
LOWER( SUBSTRING( tmp_attr_set.hold, 1, 1 ) ) IN ('t','y','1')
OR LOWER(tmp_attr_set.hold) = 'holdable'; -- BOOL
attr_set.opac_visible :=
LOWER( SUBSTRING( tmp_attr_set.opac_vis, 1, 1 ) ) IN ('t','y','1')
OR LOWER(tmp_attr_set.opac_vis) = 'visible'; -- BOOL
attr_set.ref :=
LOWER( SUBSTRING( tmp_attr_set.r, 1, 1 ) ) IN ('t','y','1')
OR LOWER(tmp_attr_set.r) = 'reference'; -- BOOL
attr_set.copy_number := tmp_attr_set.cnum::INT; -- INT,
attr_set.deposit_amount := tmp_attr_set.dep_amount::NUMERIC(6,2); -- NUMERIC(6,2),
attr_set.price := tmp_attr_set.pr::NUMERIC(8,2); -- NUMERIC(8,2),
attr_set.call_number := tmp_attr_set.cn; -- TEXT
attr_set.barcode := tmp_attr_set.bc; -- TEXT,
attr_set.circ_modifier := tmp_attr_set.circ_mod; -- TEXT,
attr_set.circ_as_type := tmp_attr_set.circ_as; -- TEXT,
attr_set.alert_message := tmp_attr_set.amessage; -- TEXT,
attr_set.pub_note := tmp_attr_set.note; -- TEXT,
attr_set.priv_note := tmp_attr_set.pnote; -- TEXT,
attr_set.alert_message := tmp_attr_set.amessage; -- TEXT,
RETURN NEXT attr_set;
END LOOP;
END IF;
END;
Returns: "trigger"
Language: PLPGSQL
DECLARE
attr RECORD;
eg_rec RECORD;
BEGIN
FOR attr IN SELECT a.* FROM vandelay.queued_bib_record_attr a JOIN vandelay.bib_attr_definition d ON (d.id = a.field) WHERE record = NEW.id AND d.ident IS TRUE LOOP
-- All numbers? check for an id match
IF (attr.attr_value ~ $r$^\d+$$r$) THEN
FOR eg_rec IN SELECT * FROM biblio.record_entry WHERE id = attr.attr_value::BIGINT AND deleted IS FALSE LOOP
INSERT INTO vandelay.bib_match (field_type, matched_attr, queued_record, eg_record) VALUES ('id', attr.id, NEW.id, eg_rec.id);
END LOOP;
END IF;
-- Looks like an ISBN? check for an isbn match
IF (attr.attr_value ~* $r$^[0-9x]+$$r$ AND character_length(attr.attr_value) IN (10,13)) THEN
FOR eg_rec IN EXECUTE $$SELECT * FROM metabib.full_rec fr WHERE fr.value LIKE LOWER('$$ || attr.attr_value || $$%') AND fr.tag = '020' AND fr.subfield = 'a'$$ LOOP
PERFORM id FROM biblio.record_entry WHERE id = eg_rec.record AND deleted IS FALSE;
IF FOUND THEN
INSERT INTO vandelay.bib_match (field_type, matched_attr, queued_record, eg_record) VALUES ('isbn', attr.id, NEW.id, eg_rec.record);
END IF;
END LOOP;
-- subcheck for isbn-as-tcn
FOR eg_rec IN SELECT * FROM biblio.record_entry WHERE tcn_value = 'i' || attr.attr_value AND deleted IS FALSE LOOP
INSERT INTO vandelay.bib_match (field_type, matched_attr, queued_record, eg_record) VALUES ('tcn_value', attr.id, NEW.id, eg_rec.id);
END LOOP;
END IF;
-- check for an OCLC tcn_value match
IF (attr.attr_value ~ $r$^o\d+$$r$) THEN
FOR eg_rec IN SELECT * FROM biblio.record_entry WHERE tcn_value = regexp_replace(attr.attr_value,'^o','ocm') AND deleted IS FALSE LOOP
INSERT INTO vandelay.bib_match (field_type, matched_attr, queued_record, eg_record) VALUES ('tcn_value', attr.id, NEW.id, eg_rec.id);
END LOOP;
END IF;
-- check for a direct tcn_value match
FOR eg_rec IN SELECT * FROM biblio.record_entry WHERE tcn_value = attr.attr_value AND deleted IS FALSE LOOP
INSERT INTO vandelay.bib_match (field_type, matched_attr, queued_record, eg_record) VALUES ('tcn_value', attr.id, NEW.id, eg_rec.id);
END LOOP;
END LOOP;
RETURN NULL;
END;
Returns: text
Language: PLPERLU
use MARC::Record;
use MARC::File::XML;
my $xml = shift;
my $field_spec = shift;
my $r = MARC::Record->new_from_xml( $xml );
$r->delete_field( $_ ) for ( $r->field( $field_spec ) );
$xml = $r->as_xml_record;
$xml =~ s/^<\?.+?\?>$//mo;
$xml =~ s/\n//sgo;
$xml =~ s/>\s+</></sgo;
return $xml;
Generated by PostgreSQL Autodoc
W3C HTML 4.01 Strict