+++ /dev/null
-Changes to Autorenewal Action/Trigger Failure Reasons
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Previously the "reason" field in the userdata for an Autorenewal
-event would contain both the failure code and the description for
-the failure event as a single string such as
-"MAX_RENEWALS_REACHED : Circulation has no more renewals remaining"
-Now the "reason" field will only contain the description of the issue
-(Circulation has ...) while a new "textcode" field will contain the
-event code (MAX_RENEWALS_REACHED) if administrators still want to
-display it in template outputs.
-
+++ /dev/null
-Migration From GIST to GIN Indexes for Full Text Search
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Evergreen now uses GIN indexes for full text search in PostgreSQL.
-GIN indexes offer better performance than GIST. For more information
-on the differences in the two index types, please refer to the
-https://www.postgresql.org/docs/current/textsearch-indexes.html[PostgreSQL
-documentation].
-
-An upgrade script is provided as part of this migration. If you
-upgrade normally from a previous release of Evergreen, this upgrade
-script should run as part of the upgrade process. The migration
-script recommends that you run a `VACUUM ANALYZE` in Postgresql on the
-tables that had the indexes changed. The migration process does not
-do this for you, so you should do it as soon as is convenient after
-the upgrade.
-
-Updating Your Own Indexes
-+++++++++++++++++++++++++
-
-If you have added your own full text indexes of type GIST, and you
-wish to migrate them to GIN, you may do so. The following query, when
-run in your Evergreen databsase after the migration from GIST to GIN,
-will identify the remaining GIST indexes in your database:
-
-[source,sql]
-----------------------------------------
-SELECT schemaname, indexname
-FROM pg_indexes
-WHERE indexdef ~* 'gist';
-----------------------------------------
-
-If the above query produces output, you can run the next query to
-output a SQL script to migrate the remaining indexes from GIST to GIN:
-
-[source,sql]
-----------------------------------------
-SELECT 'DROP INDEX ' || schemaname || '.' || indexname || E';\n' ||
- REGEXP_REPLACE(indexdef, 'gist', 'gin', 'i') || E';\n' ||
- 'VACUUM ANAlYZE ' || schemaname || '.' || tablename || ';'
-FROM pg_indexes
-WHERE indexdef ~* 'gist';
-----------------------------------------
+++ /dev/null
-Fix For "Blank" (Empty String) TCN Source
-^^^^^^^^^^^^^
-Previously, it was possible for sparsely-populated MARC records to be
-saved with a TCN Source of '' (the "empty string"), which caused the
-901 $b subfield to be void of data, causing errors when exporting
-MARC records to such third-party programs as Zotero.
-
-A site that has been running without this patch for a long time might want to
-check how many bib records they have with an empty tcn_source:
-
-SELECT COUNT(*) FROM biblio.record_entry WHERE deleted IS FALSE AND tcn_source = '';
-
-Sites can fix the problem by issuing UPDATE statements to set the 901$b to a value
-like 'AUTOGEN' or 'Unknown'. They should probably do it per-record, however, to
-avoid locking the table in a huge commit.
+++ /dev/null
-Publisher Catalog Display Includes 264 Tag
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Publisher values are now extracted for dislpay from tags 260 OR 264.
-
-Upgrade Notes
-+++++++++++++
-
-A partial reingest is required to extract the new publisher data for display.
-This query may be long-running.
-
-[source,sql]
---------------------------------------------------------------------------
-WITH affected_bibs AS (
- SELECT DISTINCT(bre.id) AS id
- FROM biblio.record_entry bre
- JOIN metabib.real_full_rec mrfr
- ON (mrfr.record = bre.id AND mrfr.tag = '264')
- WHERE NOT bre.deleted
-)
-SELECT metabib.reingest_metabib_field_entries(id, TRUE, FALSE, TRUE, TRUE)
-FROM affected_bibs;
---------------------------------------------------------------------------
-
+++ /dev/null
-Purge User Preferred Names
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-The new, user preferred name fields are now set to NULL in the
-database when a user account is purged via the staff client or using
-the actor.usr_delete function in the database.
-
-To clear the preferred name fields from records that have already been
-purged, run the following SQL update:
-
-[source,sql]
-----
-UPDATE actor.usr
-SET pref_prefix = NULL,
- pref_first_given_name = NULL,
- pref_second_given_name = NULL,
- pref_family_name = NULL,
- pref_suffix = NULL,
- name_keywords = NULL
-WHERE usrname ~ ('^' || id || '-PURGED')
-AND NOT active
-AND deleted
-AND (
- pref_prefix IS NOT NULL OR
- pref_first_given_name IS NOT NULL OR
- pref_second_given_name IS NOT NULL OR
- pref_family_name IS NOT NULL OR
- pref_suffix IS NOT NULL OR
- name_keywords IS NOT NULL
-);
-----
+++ /dev/null
-Angular catalog recall/force/part holds
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Angular staff catalog now has entry points for placing Recall,
-Force, and Part-level holds.
-
-For any item-level hold type, the user now has the option to cycle
-between Item, Recall, and Force hold types. The selected type affects
-the full batch of holds.
-
-For title-level holds, the user now has the option to select a part
-as the hold target for each record in the list. Part selection is
-optional.
+++ /dev/null
-Consistent Ordering for Carousels
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Carousel ordering is now stable and predictable:
-
- * Newly Cataloged Item and Newest Items by Shelving Location carousels are ordered from most recently cataloged to least recently cataloged.
- * Recently Returned Item carousels is ordered is from most recently returned to least recently returned.
- * Top Circulated Items carousels is ordered is from most circulated to least circulated.
- * Manual carousels (as of now, without the ability to adjust the Position of items) are in the order they are added to the backing bucket.
- ** Emptying and refilling the bucket allows reordering.
-
+++ /dev/null
-Combined Aged and Active Circluations Source Naming
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-A recent improvement to aid web client data retrieval
-speed resulted in a new reports source that was named
-nearly identically to a long-existing one, and both
-were appearing in the "Core Sources" section of reports.
-The newer source has been renamed for clarity and removed
-from the core sources to prevent confusion:
-
- * "Combined Aged and Active circulations" is now named "Combined Aged and Active Circulations (Slim Version)"
- and is removed from the Core Sources.
- * "Combined Aged and Active Circulations", which contains more linkages to other data sources, remains in the
- Core Sources list.
+++ /dev/null
-Reports Scheduler Improvements
-^^^^^^^^^^^^^
-Previously, the reports scheduler allowed duplicated reports
-under certain circumstances. A uniqueness constraint now
-disallows this without adversely affecting the reports process.