diff --git a/NEWS.md b/NEWS.md index 1cc6e4df4..6ef4de600 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,6 @@ +## 2024-xx-xx 5.10.0 +* [MODSOURCE-816](https://folio-org.atlassian.net/browse/MODSOURCE-816) [RRT] Optimize execution plan for streaming SQL + ## 2024-10-28 5.9.0 * [MODSOURCE-767](https://folio-org.atlassian.net/browse/MODSOURCE-767) Single record overlay creates duplicate OCLC#/035 * [MODSOURCE-756](https://issues.folio.org/browse/MODSOURCE-756) After setting an instance as marked for deletion it is no longer editable in quickmarc diff --git a/mod-source-record-storage-server/src/main/java/org/folio/dao/util/RecordDaoUtil.java b/mod-source-record-storage-server/src/main/java/org/folio/dao/util/RecordDaoUtil.java index bbd104f36..d9ecf8f59 100644 --- a/mod-source-record-storage-server/src/main/java/org/folio/dao/util/RecordDaoUtil.java +++ b/mod-source-record-storage-server/src/main/java/org/folio/dao/util/RecordDaoUtil.java @@ -632,10 +632,8 @@ public static Condition filterRecordByUpdatedDateRange(Date updatedAfter, Date u public static Condition filterRecordByDeleted(Boolean deleted) { Condition condition = filterRecordByState(RecordState.ACTUAL.name()); if (deleted == null) { - condition = condition.or(filterRecordByState(RecordState.DELETED.name())) - .or(filterRecordByState(RecordState.ACTUAL.name())); - } - if (Boolean.TRUE.equals(deleted)) { + condition = RECORDS_LB.STATE.in(RecordState.ACTUAL, RecordState.DELETED); + } else if (Boolean.TRUE.equals(deleted)) { condition = condition.or(filterRecordByState(RecordState.DELETED.name())) .or(filterRecordByState(RecordState.ACTUAL.name()).and(filterRecordByLeaderRecordStatus(DELETED_LEADER_RECORD_STATUS))); } diff --git a/mod-source-record-storage-server/src/main/resources/liquibase/tenant/changelog.xml b/mod-source-record-storage-server/src/main/resources/liquibase/tenant/changelog.xml index b498662ef..6ed80bf9c 100644 --- a/mod-source-record-storage-server/src/main/resources/liquibase/tenant/changelog.xml +++ b/mod-source-record-storage-server/src/main/resources/liquibase/tenant/changelog.xml @@ -71,4 +71,5 @@ + diff --git a/mod-source-record-storage-server/src/main/resources/liquibase/tenant/scripts/v-5.10.0/2024-11-22--16-00-create-indexes-on-marc-indexers-005.xml b/mod-source-record-storage-server/src/main/resources/liquibase/tenant/scripts/v-5.10.0/2024-11-22--16-00-create-indexes-on-marc-indexers-005.xml new file mode 100644 index 000000000..21d5f4374 --- /dev/null +++ b/mod-source-record-storage-server/src/main/resources/liquibase/tenant/scripts/v-5.10.0/2024-11-22--16-00-create-indexes-on-marc-indexers-005.xml @@ -0,0 +1,37 @@ + + + + + CREATE OR REPLACE FUNCTION ${database.defaultSchemaName}.immutable_to_date(input_text TEXT) RETURNS date AS $$ + DECLARE + output_date DATE; + BEGIN + IF input_text ~ '^[0-9]+(\.[0-9]+)?$' THEN + RETURN to_timestamp(input_text::DOUBLE PRECISION / 1000)::date; + ELSE + BEGIN + output_date := to_date(substring(input_text, 1, 8), 'yyyymmdd'); + EXCEPTION WHEN others THEN + RETURN NULL; + END; + RETURN output_date; + END IF; + END; + $$ LANGUAGE plpgsql IMMUTABLE; + + + + + + CREATE INDEX idx_records_lb_suppress_discovery ON ${database.defaultSchemaName}.records_lb (suppress_discovery); + CREATE INDEX idx_marc_records_tracking_marc_id_version ON ${database.defaultSchemaName}.marc_records_tracking (marc_id, version); + CREATE INDEX idx_marc_indexers_005_marc_id ON ${database.defaultSchemaName}.marc_indexers_005 (marc_id); + CREATE INDEX idx_marc_indexers_005_value_date ON ${database.defaultSchemaName}.marc_indexers_005 (${database.defaultSchemaName}.immutable_to_date(value)); + + + +