exec java -XX:MaxRAMPercentage=66.0 -XX:+ExitOnOutOfMemoryError -cp . -jar /usr/verticles/mod-audit-server-fat.jar starting rest verticle service.......... 06:39:28 [] [] [] [] INFO RestVerticle git: https://github.com/folio-org/raml-module-builder.git 8153788a77b79ab084cdc86789240252ffacaf8a 06:39:28 [] [] [] [] INFO RestVerticle metrics enabled: false 06:39:28 [] [] [] [] INFO Messages Loading messages from /infra-messages/APIMessages_en.properties ................................ 06:39:28 [] [] [] [] INFO Messages Loading messages from /infra-messages/APIMessages_de.properties ................................ 06:39:28 [] [] [] [] INFO Version HV000001: Hibernate Validator null 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /audit-data/circulation/logs -> getAuditDataCirculationLogs 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /_/ramls -> getRamls 06:39:29 [] [] [] [] INFO RestRouting Adding route DELETE /audit-data/{id} -> deleteAuditDataById 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /audit-data/{id} -> getAuditDataById 06:39:29 [] [] [] [] INFO RestRouting Adding route PUT /audit-data/{id} -> putAuditDataById 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /audit-data -> getAuditData 06:39:29 [] [] [] [] INFO RestRouting Adding route POST /audit-data -> postAuditData 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /_/jsonSchemas -> getJsonSchemas 06:39:29 [] [] [] [] INFO RestRouting Adding route DELETE /admin/kill_query -> deleteAdminKillQuery 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/cache_hit_rates -> getAdminCacheHitRates 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/db_cache_summary -> getAdminDbCacheSummary 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/health -> getAdminHealth 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/jstack -> getAdminJstack 06:39:29 [] [] [] [] INFO RestRouting Adding route PUT /admin/jstack -> putAdminJstack 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/list_locking_queries -> getAdminListLockingQueries 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/loglevel -> getAdminLoglevel 06:39:29 [] [] [] [] INFO RestRouting Adding route PUT /admin/loglevel -> putAdminLoglevel 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/memory -> getAdminMemory 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/postgres_active_sessions -> getAdminPostgresActiveSessions 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/postgres_load -> getAdminPostgresLoad 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/postgres_table_access_stats -> getAdminPostgresTableAccessStats 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/postgres_table_size -> getAdminPostgresTableSize 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/slow_queries -> getAdminSlowQueries 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/table_index_usage -> getAdminTableIndexUsage 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /admin/total_db_size -> getAdminTotalDbSize 06:39:29 [] [] [] [] INFO RestRouting Adding route POST /admin/get_password -> postAdminGetPassword 06:39:29 [] [] [] [] INFO RestRouting Adding route POST /admin/importSQL -> postAdminImportSQL 06:39:29 [] [] [] [] INFO RestRouting Adding route POST /admin/postgres_maintenance -> postAdminPostgresMaintenance 06:39:29 [] [] [] [] INFO RestRouting Adding route POST /admin/set_AES_key -> postAdminSetAESKey 06:39:29 [] [] [] [] INFO RestRouting Adding route PUT /admin/postgres_create_indexes -> putAdminPostgresCreateIndexes 06:39:29 [] [] [] [] INFO RestRouting Adding route PUT /admin/postgres_drop_indexes -> putAdminPostgresDropIndexes 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /audit-data/acquisition/order/{id} -> getAuditDataAcquisitionOrderById 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /audit-data/acquisition/order-line/{id} -> getAuditDataAcquisitionOrderLineById 06:39:29 [] [] [] [] INFO RestRouting Looks like org.folio.rest.jaxrs.resource.Rmbtests is not implemented 06:39:29 [] [] [] [] INFO RestRouting Looks like org.folio.rest.jaxrs.resource.Pubsub is not implemented 06:39:29 [] [] [] [] INFO RestRouting Adding route POST /audit/handlers/log-record -> postAuditHandlersLogRecord 06:39:29 [] [] [] [] INFO RestRouting Adding route DELETE /_/tenant/{operation_id} -> deleteTenantByOperationId 06:39:29 [] [] [] [] INFO RestRouting Adding route GET /_/tenant/{operation_id} -> getTenantByOperationId 06:39:29 [] [] [] [] INFO RestRouting Adding route POST /_/tenant -> postTenant 06:39:29 [] [] [] [] INFO InitAPIs InitAPI starting... 06:39:30 [] [] [] [] INFO ApplicationConfig KafkaConfig: KafkaConfig(kafkaHost=kafka, kafkaPort=9092, okapiUrl=http://okapi:9130, replicationFactor=1, envId=folio-dev-volaris, maxRequestSize=4000000) 06:39:30 [] [] [] [] INFO RestVerticle Init hook called with implemented class named org.folio.rest.impl.InitAPIs 06:39:30 [] [] [] [] INFO KafkaConsumerWrapper Consumer created - id: 1 subscriptionPattern: SubscriptionDefinition(eventType=ACQ_ORDER_LINE_CHANGED, subscriptionPattern=folio-dev-volaris\.Default\.\w{1,}\.ACQ_ORDER_LINE_CHANGED) 06:39:30 [] [] [] [] INFO KafkaConsumerWrapper Consumer created - id: 0 subscriptionPattern: SubscriptionDefinition(eventType=ACQ_ORDER_CHANGED, subscriptionPattern=folio-dev-volaris\.Default\.\w{1,}\.ACQ_ORDER_CHANGED) 06:39:30 [] [] [] [] INFO RestVerticle Listening port 8081 06:39:30 [] [] [] [] INFO InitAPIs Consumer Verticles were successfully started 06:39:31 [] [] [] [] INFO RestVerticle No periodic implementation found, continuing with deployment 06:39:31 [] [] [] [] INFO RestVerticle No Post Deploy Hook implementation found, continuing with deployment 06:39:31 [] [] [] [] INFO ? Succeeded in deploying verticle 06:42:30 [] [] [] [] INFO RestRouting invoking postTenant 06:42:30 [] [] [] [] INFO PostgresClient DB config read from environment variables 06:42:30 [] [] [] [] INFO PostgresClient postgreSQLClientConfig = {"port":5432,"username":"postgres","password":"...","maxPoolSize":5,"database":"folio_modules","host":"postgresql","postgres_tester":false} 06:42:31 [] [] [] [] INFO PostgresClient Executing multiple statements with id -1102338681 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} ALTER ROLE diku_mod_audit SET search_path = "$user"; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed ALTER ROLE diku_mod_audit SET search_path = "$user"; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $$ BEGIN BEGIN -- This only succeeds if show_trgm, a pg_trgm function, -- has been loaded into public schema. PERFORM public.show_trgm('a'); EXCEPTION WHEN undefined_function THEN BEGIN ALTER EXTENSION pg_trgm SET SCHEMA public; EXCEPTION WHEN undefined_object THEN NULL; END; END; END $$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $$ BEGIN BEGIN -- This only succeeds if show_trgm, a pg_trgm function, -- has been loaded into public schema. PERFORM public.show_trgm('a'); EXCEPTION WHEN undefined_function THEN BEGIN ALTER EXTENSION pg_trgm SET SCHEMA public; EXCEPTION WHEN undefined_object THEN NULL; END; END; END $$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE EXTENSION IF NOT EXISTS unaccent WITH SCHEMA public; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE EXTENSION IF NOT EXISTS unaccent WITH SCHEMA public; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE TABLE IF NOT EXISTS diku_mod_audit.rmb_job ( id UUID PRIMARY KEY, jsonb JSONB NOT NULL ); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE TABLE IF NOT EXISTS diku_mod_audit.rmb_job ( id UUID PRIMARY KEY, jsonb JSONB NOT NULL ); 06:42:31 [] [] [] [] INFO LogUtil 10.0.121.27:60702 POST /_/tenant null HTTP_1_1 201 422 1361 tid=diku Created 06:42:31 [] [] [] [] INFO PostgresClient Executing multiple statements with id -927323907 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} SET search_path TO diku_mod_audit; 06:42:31 [] [] [] [] INFO RestRouting invoking getTenantByOperationId 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed SET search_path TO diku_mod_audit; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE TABLE IF NOT EXISTS diku_mod_audit.rmb_internal_index ( name text PRIMARY KEY, def text NOT NULL, remove boolean NOT NULL ); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE TABLE IF NOT EXISTS diku_mod_audit.rmb_internal_index ( name text PRIMARY KEY, def text NOT NULL, remove boolean NOT NULL ); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} UPDATE diku_mod_audit.rmb_internal_index SET remove = TRUE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed UPDATE diku_mod_audit.rmb_internal_index SET remove = TRUE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE TABLE IF NOT EXISTS rmb_internal_analyze ( tablename text ); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE TABLE IF NOT EXISTS rmb_internal_analyze ( tablename text ); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP FUNCTION IF EXISTS diku_mod_audit.count_estimate_smart2(bigint,bigint,text); 06:42:31 [] [] [] [] INFO LogUtil 10.0.121.27:60702 GET /_/tenant/033e5be3-67a4-4464-8e66-057accbe309f null HTTP_1_1 200 422 25 tid=diku OK 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP FUNCTION IF EXISTS diku_mod_audit.count_estimate_smart2(bigint,bigint,text); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE FUNCTION diku_mod_audit.count_estimate_smart2(rows bigint, lim bigint, query text) RETURNS bigint AS $$ DECLARE rec record; cnt bigint; BEGIN IF rows = lim THEN FOR rec IN EXECUTE 'EXPLAIN ' || query LOOP cnt := substring(rec."QUERY PLAN" FROM ' rows=([[:digit:]]+)'); EXIT WHEN cnt IS NOT NULL; END LOOP; RETURN cnt; END IF; RETURN rows; END; $$ LANGUAGE plpgsql VOLATILE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE FUNCTION diku_mod_audit.count_estimate_smart2(rows bigint, lim bigint, query text) RETURNS bigint AS $$ DECLARE rec record; cnt bigint; BEGIN IF rows = lim THEN FOR rec IN EXECUTE 'EXPLAIN ' || query LOOP cnt := substring(rec."QUERY PLAN" FROM ' rows=([[:digit:]]+)'); EXIT WHEN cnt IS NOT NULL; END LOOP; RETURN cnt; END IF; RETURN rows; END; $$ LANGUAGE plpgsql VOLATILE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.count_estimate_default(query text) RETURNS bigint AS $$ DECLARE rows bigint; q text; BEGIN q = 'SELECT COUNT(*) FROM (' || query || ' LIMIT 1000) x'; EXECUTE q INTO rows; IF rows < 1000 THEN return rows; END IF; rows = diku_mod_audit.count_estimate_smart2(1000, 1000, query); IF rows < 1000 THEN return 1000; END IF; RETURN rows; END; $$ LANGUAGE plpgsql IMMUTABLE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.count_estimate_default(query text) RETURNS bigint AS $$ DECLARE rows bigint; q text; BEGIN q = 'SELECT COUNT(*) FROM (' || query || ' LIMIT 1000) x'; EXECUTE q INTO rows; IF rows < 1000 THEN return rows; END IF; rows = diku_mod_audit.count_estimate_smart2(1000, 1000, query); IF rows < 1000 THEN return 1000; END IF; RETURN rows; END; $$ LANGUAGE plpgsql IMMUTABLE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.count_estimate(query text) RETURNS bigint AS $$ DECLARE count bigint; est_count bigint; q text; BEGIN est_count = diku_mod_audit.count_estimate_smart2(1000, 1000, query); IF est_count > 4*1000 THEN RETURN est_count; END IF; q = 'SELECT COUNT(*) FROM (' || query || ' LIMIT 1000) x'; EXECUTE q INTO count; IF count < 1000 THEN RETURN count; END IF; IF est_count < 1000 THEN RETURN 1000; END IF; RETURN est_count; END; $$ LANGUAGE plpgsql STABLE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.count_estimate(query text) RETURNS bigint AS $$ DECLARE count bigint; est_count bigint; q text; BEGIN est_count = diku_mod_audit.count_estimate_smart2(1000, 1000, query); IF est_count > 4*1000 THEN RETURN est_count; END IF; q = 'SELECT COUNT(*) FROM (' || query || ' LIMIT 1000) x'; EXECUTE q INTO count; IF count < 1000 THEN RETURN count; END IF; IF est_count < 1000 THEN RETURN 1000; END IF; RETURN est_count; END; $$ LANGUAGE plpgsql STABLE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.upsert(text, uuid, anyelement) RETURNS uuid AS $$ DECLARE ret uuid; BEGIN EXECUTE format('UPDATE diku_mod_audit.%I SET jsonb=$3 WHERE id=$2 RETURNING id', $1) USING $1, $2, $3 INTO ret; IF ret IS NOT NULL THEN RETURN ret; END IF; EXECUTE format('INSERT INTO diku_mod_audit.%I (id, jsonb) VALUES ($2, $3) RETURNING id', $1) USING $1, $2, $3 INTO STRICT ret; RETURN ret; END; $$ LANGUAGE plpgsql; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.upsert(text, uuid, anyelement) RETURNS uuid AS $$ DECLARE ret uuid; BEGIN EXECUTE format('UPDATE diku_mod_audit.%I SET jsonb=$3 WHERE id=$2 RETURNING id', $1) USING $1, $2, $3 INTO ret; IF ret IS NOT NULL THEN RETURN ret; END IF; EXECUTE format('INSERT INTO diku_mod_audit.%I (id, jsonb) VALUES ($2, $3) RETURNING id', $1) USING $1, $2, $3 INTO STRICT ret; RETURN ret; END; $$ LANGUAGE plpgsql; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $$ DECLARE ver integer; BEGIN SELECT current_setting('server_version_num') INTO ver; IF (ver >= 120000) THEN CREATE OR REPLACE FUNCTION diku_mod_audit.f_unaccent(text) RETURNS text AS $f_unaccent$ SELECT public.unaccent('public.unaccent', $1) -- schema-qualify function and dictionary $f_unaccent$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; ELSE CREATE OR REPLACE FUNCTION diku_mod_audit.f_unaccent(text) RETURNS text AS $f_unaccent$ SELECT regexp_replace(public.unaccent('public.unaccent', $1), E'[\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030a\u030b\u030c\u030d\u030e\u030f' || E'\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031a\u031b\u031c\u031d\u031e\u031f' || E'\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032a\u032b\u032c\u032d\u032e\u032f' || E'\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033a\u033b\u033c\u033d\u033e\u033f' || E'\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034a\u034b\u034c\u034d\u034e\u034f' || E'\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035a\u035b\u035c\u035d\u035e\u035f' || E'\u0360\u0361\u0362' || E'\u20dd\u20de\u20df\u20e0' || E'\u20e2\u20e3\u20e4]', '', 'g') $f_unaccent$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; END IF; END $$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $$ DECLARE ver integer; BEGIN SELECT current_setting('server_version_num') INTO ver; IF (ver >= 120000) THEN CREATE OR REPLACE FUNCTION diku_mod_audit.f_unaccent(text) RETURNS text AS $f_unaccent$ SELECT public.unaccent('public.unaccent', $1) -- schema-qualify function and dictionary $f_unaccent$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; ELSE CREATE OR REPLACE FUNCTION diku_mod_audit.f_unaccent(text) RETURNS text AS $f_unaccent$ SELECT regexp_replace(public.unaccent('public.unaccent', $1), E'[\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030a\u030b\u030c\u030d\u030e\u030f' || E'\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031a\u031b\u031c\u031d\u031e\u031f' || E'\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032a\u032b\u032c\u032d\u032e\u032f' || E'\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033a\u033b\u033c\u033d\u033e\u033f' || E'\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034a\u034b\u034c\u034d\u034e\u034f' || E'\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035a\u035b\u035c\u035d\u035e\u035f' || E'\u0360\u0361\u0362' || E'\u20dd\u20de\u20df\u20e0' || E'\u20e2\u20e3\u20e4]', '', 'g') $f_unaccent$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; END IF; END $$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.get_tsvector(text) RETURNS tsvector AS $$ SELECT to_tsvector('simple', translate($1, '&', ',')); $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.get_tsvector(text) RETURNS tsvector AS $$ SELECT to_tsvector('simple', translate($1, '&', ',')); $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.tsquery_and(text) RETURNS tsquery AS $$ SELECT to_tsquery('simple', string_agg(CASE WHEN length(v) = 0 OR v = '*' THEN '' WHEN right(v, 1) = '*' THEN '''' || left(v, -1) || ''':*' ELSE '''' || v || '''' END, '&')) FROM (SELECT regexp_split_to_table(translate($1, '&''', ',,'), ' +')) AS x(v); $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.tsquery_and(text) RETURNS tsquery AS $$ SELECT to_tsquery('simple', string_agg(CASE WHEN length(v) = 0 OR v = '*' THEN '' WHEN right(v, 1) = '*' THEN '''' || left(v, -1) || ''':*' ELSE '''' || v || '''' END, '&')) FROM (SELECT regexp_split_to_table(translate($1, '&''', ',,'), ' +')) AS x(v); $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.tsquery_or(text) RETURNS tsquery AS $$ SELECT replace(diku_mod_audit.tsquery_and($1)::text, '&', '|')::tsquery; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.tsquery_or(text) RETURNS tsquery AS $$ SELECT replace(diku_mod_audit.tsquery_and($1)::text, '&', '|')::tsquery; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.tsquery_phrase(text) RETURNS tsquery AS $$ SELECT replace(diku_mod_audit.tsquery_and($1)::text, '&', '<->')::tsquery; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.tsquery_phrase(text) RETURNS tsquery AS $$ SELECT replace(diku_mod_audit.tsquery_and($1)::text, '&', '<->')::tsquery; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.normalize_digits(text) RETURNS text AS $$ SELECT translate((regexp_match($1, '^([0-9 \t-]*(?:\*[ \t]*)?)(.*)'))[1], E' \t-', '') || CASE WHEN (regexp_match($1, '^([0-9 \t-]*(?:\*[ \t]*)?)(.*)'))[1] = '' THEN '' WHEN (regexp_match($1, '^([0-9 \t-]*(?:\*[ \t]*)?)(.*)'))[2] = '' THEN '' ELSE ' ' END || (regexp_match($1, '^([0-9 \t-]*(?:\*[ \t]*)?)(.*)'))[2]; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.normalize_digits(text) RETURNS text AS $$ SELECT translate((regexp_match($1, '^([0-9 \t-]*(?:\*[ \t]*)?)(.*)'))[1], E' \t-', '') || CASE WHEN (regexp_match($1, '^([0-9 \t-]*(?:\*[ \t]*)?)(.*)'))[1] = '' THEN '' WHEN (regexp_match($1, '^([0-9 \t-]*(?:\*[ \t]*)?)(.*)'))[2] = '' THEN '' ELSE ' ' END || (regexp_match($1, '^([0-9 \t-]*(?:\*[ \t]*)?)(.*)'))[2]; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.set_id_in_jsonb() RETURNS TRIGGER AS $$ BEGIN NEW.jsonb = jsonb_set(NEW.jsonb, '{id}', to_jsonb(NEW.id)); RETURN NEW; END; $$ language 'plpgsql'; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.set_id_in_jsonb() RETURNS TRIGGER AS $$ BEGIN NEW.jsonb = jsonb_set(NEW.jsonb, '{id}', to_jsonb(NEW.id)); RETURN NEW; END; $$ language 'plpgsql'; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} create or replace function diku_mod_audit.concat_space_sql(VARIADIC text[]) RETURNS text AS $$ select concat_ws(' ', VARIADIC $1); $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed create or replace function diku_mod_audit.concat_space_sql(VARIADIC text[]) RETURNS text AS $$ select concat_ws(' ', VARIADIC $1); $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} create or replace function diku_mod_audit.concat_array_object_values(jsonb_array jsonb, field text) RETURNS text AS $$ SELECT string_agg(value->>$2, ' ') FROM jsonb_array_elements($1); $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed create or replace function diku_mod_audit.concat_array_object_values(jsonb_array jsonb, field text) RETURNS text AS $$ SELECT string_agg(value->>$2, ' ') FROM jsonb_array_elements($1); $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} create or replace function diku_mod_audit.concat_array_object_values( jsonb_array jsonb, field text, filterkey text, filtervalue text) RETURNS text AS $$ SELECT string_agg(value->>$2, ' ') FROM jsonb_array_elements($1) WHERE value->>$3 = $4; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed create or replace function diku_mod_audit.concat_array_object_values( jsonb_array jsonb, field text, filterkey text, filtervalue text) RETURNS text AS $$ SELECT string_agg(value->>$2, ' ') FROM jsonb_array_elements($1) WHERE value->>$3 = $4; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} create or replace function diku_mod_audit.first_array_object_value( jsonb_array jsonb, field text, filterkey text, filtervalue text) RETURNS text AS $$ SELECT value->>$2 FROM jsonb_array_elements($1) WHERE value->>$3 = $4 LIMIT 1; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed create or replace function diku_mod_audit.first_array_object_value( jsonb_array jsonb, field text, filterkey text, filtervalue text) RETURNS text AS $$ SELECT value->>$2 FROM jsonb_array_elements($1) WHERE value->>$3 = $4 LIMIT 1; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} create or replace function diku_mod_audit.concat_array_object(jsonb_array jsonb) RETURNS text AS $$ SELECT string_agg(value::text, ' ') FROM jsonb_array_elements_text($1); $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed create or replace function diku_mod_audit.concat_array_object(jsonb_array jsonb) RETURNS text AS $$ SELECT string_agg(value::text, ' ') FROM jsonb_array_elements_text($1); $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP FUNCTION IF EXISTS rmb_internal_index(aname text, tops text, newdef text); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP FUNCTION IF EXISTS rmb_internal_index(aname text, tops text, newdef text); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION rmb_internal_index( atable text, aname text, tops text, newdef text) RETURNS void AS $$ DECLARE olddef text; namep CONSTANT text = concat(aname, '_p'); prepareddef text; BEGIN IF tops = 'DELETE' THEN -- use case insensitive %s, not case sensitive %I -- no SQL injection because the names are hard-coded in schema.json EXECUTE format('DROP INDEX IF EXISTS %s', aname); EXECUTE 'DELETE FROM diku_mod_audit.rmb_internal_index WHERE name = $1' USING aname; RETURN; END IF; SELECT def INTO olddef FROM diku_mod_audit.rmb_internal_index WHERE name = aname; SELECT def INTO prepareddef FROM diku_mod_audit.rmb_internal_index WHERE name = namep; prepareddef = replace(prepareddef, concat(' ', namep, ' ON '), concat(' ', aname, ' ON ')); IF prepareddef = newdef THEN EXECUTE format('DROP INDEX IF EXISTS %s', aname); EXECUTE format('ALTER INDEX IF EXISTS %s RENAME TO %s', namep, aname); EXECUTE 'DELETE FROM rmb_internal_index WHERE name = $1' USING namep; EXECUTE 'INSERT INTO rmb_internal_analyze VALUES ($1)' USING atable; ELSIF olddef IS DISTINCT FROM newdef THEN EXECUTE format('DROP INDEX IF EXISTS %s', aname); EXECUTE newdef; EXECUTE 'INSERT INTO rmb_internal_analyze VALUES ($1)' USING atable; END IF; EXECUTE 'INSERT INTO diku_mod_audit.rmb_internal_index VALUES ($1, $2, FALSE) ' 'ON CONFLICT (name) DO UPDATE SET def = EXCLUDED.def, remove = EXCLUDED.remove' USING aname, newdef; END $$ LANGUAGE plpgsql; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION rmb_internal_index( atable text, aname text, tops text, newdef text) RETURNS void AS $$ DECLARE olddef text; namep CONSTANT text = concat(aname, '_p'); prepareddef text; BEGIN IF tops = 'DELETE' THEN -- use case insensitive %s, not case sensitive %I -- no SQL injection because the names are hard-coded in schema.json EXECUTE format('DROP INDEX IF EXISTS %s', aname); EXECUTE 'DELETE FROM diku_mod_audit.rmb_internal_index WHERE name = $1' USING aname; RETURN; END IF; SELECT def INTO olddef FROM diku_mod_audit.rmb_internal_index WHERE name = aname; SELECT def INTO prepareddef FROM diku_mod_audit.rmb_internal_index WHERE name = namep; prepareddef = replace(prepareddef, concat(' ', namep, ' ON '), concat(' ', aname, ' ON ')); IF prepareddef = newdef THEN EXECUTE format('DROP INDEX IF EXISTS %s', aname); EXECUTE format('ALTER INDEX IF EXISTS %s RENAME TO %s', namep, aname); EXECUTE 'DELETE FROM rmb_internal_index WHERE name = $1' USING namep; EXECUTE 'INSERT INTO rmb_internal_analyze VALUES ($1)' USING atable; ELSIF olddef IS DISTINCT FROM newdef THEN EXECUTE format('DROP INDEX IF EXISTS %s', aname); EXECUTE newdef; EXECUTE 'INSERT INTO rmb_internal_analyze VALUES ($1)' USING atable; END IF; EXECUTE 'INSERT INTO diku_mod_audit.rmb_internal_index VALUES ($1, $2, FALSE) ' 'ON CONFLICT (name) DO UPDATE SET def = EXCLUDED.def, remove = EXCLUDED.remove' USING aname, newdef; END $$ LANGUAGE plpgsql; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $$ BEGIN -- use advisory lock to prevent "tuple concurrently updated" -- https://issues.folio.org/browse/RMB-744 https://issues.folio.org/browse/RMB-944 PERFORM pg_advisory_xact_lock(20201101, 1234567890); REVOKE ALL PRIVILEGES ON SCHEMA public FROM diku_mod_audit; REVOKE CREATE ON SCHEMA public FROM PUBLIC; END $$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $$ BEGIN -- use advisory lock to prevent "tuple concurrently updated" -- https://issues.folio.org/browse/RMB-744 https://issues.folio.org/browse/RMB-944 PERFORM pg_advisory_xact_lock(20201101, 1234567890); REVOKE ALL PRIVILEGES ON SCHEMA public FROM diku_mod_audit; REVOKE CREATE ON SCHEMA public FROM PUBLIC; END $$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'audit_data', 'audit_data_target_id_idx_gin', 'ADD', 'CREATE INDEX IF NOT EXISTS audit_data_target_id_idx_gin ON diku_mod_audit.audit_data USING GIN ' || $rmb$((lower(f_unaccent(jsonb->>'target_id'))) public.gin_trgm_ops)$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'audit_data', 'audit_data_target_id_idx_gin', 'ADD', 'CREATE INDEX IF NOT EXISTS audit_data_target_id_idx_gin ON diku_mod_audit.audit_data USING GIN ' || $rmb$((lower(f_unaccent(jsonb->>'target_id'))) public.gin_trgm_ops)$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP TRIGGER IF EXISTS update_audit_data_references ON diku_mod_audit.audit_data CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP TRIGGER IF EXISTS update_audit_data_references ON diku_mod_audit.audit_data CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP FUNCTION IF EXISTS diku_mod_audit.update_audit_data_references(); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP FUNCTION IF EXISTS diku_mod_audit.update_audit_data_references(); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.audit_data_set_md() RETURNS TRIGGER AS $$ DECLARE input text; createdDate timestamp; BEGIN input = NEW.jsonb->'metadata'->>'createdDate'; IF input IS NULL THEN RETURN NEW; END IF; -- time stamp without time zone? IF (input::timestamp::timestamptz = input::timestamptz) THEN -- createdDate already has no time zone, normalize using ::timestamp createdDate = input::timestamp; ELSE -- createdDate has a time zone string -- normalize using ::timestamptz, convert to '+00' time zone and remove time zone string createdDate = input::timestamptz AT TIME ZONE '+00'; END IF; NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,createdDate}', to_jsonb(to_char(createdDate, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'))); NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,updatedDate}', to_jsonb(to_char(createdDate, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'))); NEW.creation_date = createdDate; NEW.created_by = NEW.jsonb->'metadata'->>'createdByUserId'; RETURN NEW; END; $$ language 'plpgsql'; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.audit_data_set_md() RETURNS TRIGGER AS $$ DECLARE input text; createdDate timestamp; BEGIN input = NEW.jsonb->'metadata'->>'createdDate'; IF input IS NULL THEN RETURN NEW; END IF; -- time stamp without time zone? IF (input::timestamp::timestamptz = input::timestamptz) THEN -- createdDate already has no time zone, normalize using ::timestamp createdDate = input::timestamp; ELSE -- createdDate has a time zone string -- normalize using ::timestamptz, convert to '+00' time zone and remove time zone string createdDate = input::timestamptz AT TIME ZONE '+00'; END IF; NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,createdDate}', to_jsonb(to_char(createdDate, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'))); NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,updatedDate}', to_jsonb(to_char(createdDate, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'))); NEW.creation_date = createdDate; NEW.created_by = NEW.jsonb->'metadata'->>'createdByUserId'; RETURN NEW; END; $$ language 'plpgsql'; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP TRIGGER IF EXISTS set_audit_data_md_trigger ON diku_mod_audit.audit_data CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP TRIGGER IF EXISTS set_audit_data_md_trigger ON diku_mod_audit.audit_data CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE TRIGGER set_audit_data_md_trigger BEFORE INSERT ON diku_mod_audit.audit_data FOR EACH ROW EXECUTE PROCEDURE diku_mod_audit.audit_data_set_md(); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE TRIGGER set_audit_data_md_trigger BEFORE INSERT ON diku_mod_audit.audit_data FOR EACH ROW EXECUTE PROCEDURE diku_mod_audit.audit_data_set_md(); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE OR REPLACE FUNCTION diku_mod_audit.set_audit_data_md_json() RETURNS TRIGGER AS $$ DECLARE input text; updatedDate timestamp; BEGIN if NEW.creation_date IS NULL then RETURN NEW; end if; NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,createdDate}', to_jsonb(to_char(NEW.creation_date, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'))); if NEW.created_by IS NULL then NEW.jsonb = NEW.jsonb #- '{metadata,createdByUserId}'; else NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,createdByUserId}', to_jsonb(NEW.created_by)); end if; input = NEW.jsonb->'metadata'->>'updatedDate'; if input IS NOT NULL then -- time stamp without time zone? IF (input::timestamp::timestamptz = input::timestamptz) THEN -- updatedDate already has no time zone, normalize using ::timestamp updatedDate = input::timestamp; ELSE -- updatedDate has a time zone string -- normalize using ::timestamptz, convert to '+00' time zone and remove time zone string updatedDate = input::timestamptz AT TIME ZONE '+00'; END IF; NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,updatedDate}', to_jsonb(to_char(updatedDate, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'))); end if; RETURN NEW; END; $$ language 'plpgsql'; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE OR REPLACE FUNCTION diku_mod_audit.set_audit_data_md_json() RETURNS TRIGGER AS $$ DECLARE input text; updatedDate timestamp; BEGIN if NEW.creation_date IS NULL then RETURN NEW; end if; NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,createdDate}', to_jsonb(to_char(NEW.creation_date, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'))); if NEW.created_by IS NULL then NEW.jsonb = NEW.jsonb #- '{metadata,createdByUserId}'; else NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,createdByUserId}', to_jsonb(NEW.created_by)); end if; input = NEW.jsonb->'metadata'->>'updatedDate'; if input IS NOT NULL then -- time stamp without time zone? IF (input::timestamp::timestamptz = input::timestamptz) THEN -- updatedDate already has no time zone, normalize using ::timestamp updatedDate = input::timestamp; ELSE -- updatedDate has a time zone string -- normalize using ::timestamptz, convert to '+00' time zone and remove time zone string updatedDate = input::timestamptz AT TIME ZONE '+00'; END IF; NEW.jsonb = jsonb_set(NEW.jsonb, '{metadata,updatedDate}', to_jsonb(to_char(updatedDate, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'))); end if; RETURN NEW; END; $$ language 'plpgsql'; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP TRIGGER IF EXISTS set_audit_data_md_json_trigger ON diku_mod_audit.audit_data CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP TRIGGER IF EXISTS set_audit_data_md_json_trigger ON diku_mod_audit.audit_data CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE TRIGGER set_audit_data_md_json_trigger BEFORE UPDATE ON diku_mod_audit.audit_data FOR EACH ROW EXECUTE PROCEDURE diku_mod_audit.set_audit_data_md_json(); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE TRIGGER set_audit_data_md_json_trigger BEFORE UPDATE ON diku_mod_audit.audit_data FOR EACH ROW EXECUTE PROCEDURE diku_mod_audit.set_audit_data_md_json(); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP TRIGGER IF EXISTS set_audit_data_ol_version_trigger ON diku_mod_audit.audit_data CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP TRIGGER IF EXISTS set_audit_data_ol_version_trigger ON diku_mod_audit.audit_data CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP FUNCTION IF EXISTS diku_mod_audit.audit_data_set_ol_version() CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP FUNCTION IF EXISTS diku_mod_audit.audit_data_set_ol_version() CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_eventId_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_eventId_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'eventId')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_eventId_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_eventId_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'eventId')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_userBarcode_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_userBarcode_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'userBarcode')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_userBarcode_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_userBarcode_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'userBarcode')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_action_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_action_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'action')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_action_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_action_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'action')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_date_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_date_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'date')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_date_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_date_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'date')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_servicePointId_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_servicePointId_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'servicePointId')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_servicePointId_idx', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_servicePointId_idx ON diku_mod_audit.circulation_logs ' || $rmb$(left(lower(f_unaccent(jsonb->>'servicePointId')),600))$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_items_idx_gin', 'DELETE', 'CREATE INDEX IF NOT EXISTS circulation_logs_items_idx_gin ON diku_mod_audit.circulation_logs USING GIN ' || $rmb$((lower(f_unaccent(jsonb->>'items'))) public.gin_trgm_ops)$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_items_idx_gin', 'DELETE', 'CREATE INDEX IF NOT EXISTS circulation_logs_items_idx_gin ON diku_mod_audit.circulation_logs USING GIN ' || $rmb$((lower(f_unaccent(jsonb->>'items'))) public.gin_trgm_ops)$rmb$ ); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_description_idx_ft', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_description_idx_ft ON diku_mod_audit.circulation_logs USING GIN ' || $rmb$( get_tsvector(f_unaccent(jsonb->>'description')) )$rmb$); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_description_idx_ft', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_description_idx_ft ON diku_mod_audit.circulation_logs USING GIN ' || $rmb$( get_tsvector(f_unaccent(jsonb->>'description')) )$rmb$); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_items_idx_ft', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_items_idx_ft ON diku_mod_audit.circulation_logs USING GIN ' || $rmb$( get_tsvector(f_unaccent(jsonb->>'items')) )$rmb$); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $do$ BEGIN PERFORM rmb_internal_index( 'circulation_logs', 'circulation_logs_items_idx_ft', 'ADD', 'CREATE INDEX IF NOT EXISTS circulation_logs_items_idx_ft ON diku_mod_audit.circulation_logs USING GIN ' || $rmb$( get_tsvector(f_unaccent(jsonb->>'items')) )$rmb$); END $do$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP TRIGGER IF EXISTS update_circulation_logs_references ON diku_mod_audit.circulation_logs CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP TRIGGER IF EXISTS update_circulation_logs_references ON diku_mod_audit.circulation_logs CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP FUNCTION IF EXISTS diku_mod_audit.update_circulation_logs_references(); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP FUNCTION IF EXISTS diku_mod_audit.update_circulation_logs_references(); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP FUNCTION IF EXISTS diku_mod_audit.circulation_logs_set_md() CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP FUNCTION IF EXISTS diku_mod_audit.circulation_logs_set_md() CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP TRIGGER IF EXISTS set_circulation_logs_md_trigger ON diku_mod_audit.circulation_logs CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP TRIGGER IF EXISTS set_circulation_logs_md_trigger ON diku_mod_audit.circulation_logs CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP FUNCTION IF EXISTS diku_mod_audit.set_circulation_logs_md_json() CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP FUNCTION IF EXISTS diku_mod_audit.set_circulation_logs_md_json() CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP TRIGGER IF EXISTS set_circulation_logs_md_json_trigger ON diku_mod_audit.circulation_logs CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP TRIGGER IF EXISTS set_circulation_logs_md_json_trigger ON diku_mod_audit.circulation_logs CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP TRIGGER IF EXISTS set_circulation_logs_ol_version_trigger ON diku_mod_audit.circulation_logs CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP TRIGGER IF EXISTS set_circulation_logs_ol_version_trigger ON diku_mod_audit.circulation_logs CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DROP FUNCTION IF EXISTS diku_mod_audit.circulation_logs_set_ol_version() CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DROP FUNCTION IF EXISTS diku_mod_audit.circulation_logs_set_ol_version() CASCADE; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE TABLE IF NOT EXISTS acquisition_order_log ( id uuid PRIMARY KEY, action text NOT NULL, order_id uuid NOT NULL, user_id uuid NOT NULL, event_date timestamp NOT NULL, action_date timestamp NOT NULL, modified_content_snapshot jsonb ); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE TABLE IF NOT EXISTS acquisition_order_log ( id uuid PRIMARY KEY, action text NOT NULL, order_id uuid NOT NULL, user_id uuid NOT NULL, event_date timestamp NOT NULL, action_date timestamp NOT NULL, modified_content_snapshot jsonb ); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE INDEX IF NOT EXISTS order_id_index ON acquisition_order_log USING BTREE (order_id); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE INDEX IF NOT EXISTS order_id_index ON acquisition_order_log USING BTREE (order_id); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE TABLE IF NOT EXISTS acquisition_order_line_log ( id uuid PRIMARY KEY, action text NOT NULL, order_id uuid NOT NULL, order_line_id uuid NOT NULL, user_id uuid NOT NULL, event_date timestamp NOT NULL, action_date timestamp NOT NULL, modified_content_snapshot jsonb ); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE TABLE IF NOT EXISTS acquisition_order_line_log ( id uuid PRIMARY KEY, action text NOT NULL, order_id uuid NOT NULL, order_line_id uuid NOT NULL, user_id uuid NOT NULL, event_date timestamp NOT NULL, action_date timestamp NOT NULL, modified_content_snapshot jsonb ); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} CREATE INDEX IF NOT EXISTS order_line_id_index ON acquisition_order_line_log USING BTREE (order_line_id); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed CREATE INDEX IF NOT EXISTS order_line_id_index ON acquisition_order_line_log USING BTREE (order_line_id); 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $$ DECLARE aname TEXT; BEGIN FOR aname IN SELECT name FROM diku_mod_audit.rmb_internal_index WHERE remove = TRUE LOOP EXECUTE 'DROP INDEX IF EXISTS ' || aname; END LOOP; END $$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $$ DECLARE aname TEXT; BEGIN FOR aname IN SELECT name FROM diku_mod_audit.rmb_internal_index WHERE remove = TRUE LOOP EXECUTE 'DROP INDEX IF EXISTS ' || aname; END LOOP; END $$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $$ DECLARE version TEXT; i RECORD; newindexdef TEXT; BEGIN SELECT jsonb->>'rmbVersion' INTO version FROM diku_mod_audit.rmb_internal; IF version !~ '^(\d\.|1\d\.|2[0-8]\.|29\.[0-3]\.)' THEN -- skip this upgrade if last install/upgrade was made by RMB >= 29.4.x RETURN; END IF; FOR i IN SELECT * FROM pg_catalog.pg_indexes WHERE schemaname = 'diku_mod_audit' LOOP newindexdef := regexp_replace(i.indexdef, -- \m = beginning of a word, \M = end of a word '\mpublic\.(f_unaccent|concat_space_sql|concat_array_object_values|concat_array_object)\M', 'diku_mod_audit.\1', 'g'); IF newindexdef <> i.indexdef THEN EXECUTE 'DROP INDEX ' || i.indexname; EXECUTE newindexdef; EXECUTE 'INSERT INTO rmb_internal_analyze VALUES ($1)' USING i.tablename; END IF; END LOOP; END $$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $$ DECLARE version TEXT; i RECORD; newindexdef TEXT; BEGIN SELECT jsonb->>'rmbVersion' INTO version FROM diku_mod_audit.rmb_internal; IF version !~ '^(\d\.|1\d\.|2[0-8]\.|29\.[0-3]\.)' THEN -- skip this upgrade if last install/upgrade was made by RMB >= 29.4.x RETURN; END IF; FOR i IN SELECT * FROM pg_catalog.pg_indexes WHERE schemaname = 'diku_mod_audit' LOOP newindexdef := regexp_replace(i.indexdef, -- \m = beginning of a word, \M = end of a word '\mpublic\.(f_unaccent|concat_space_sql|concat_array_object_values|concat_array_object)\M', 'diku_mod_audit.\1', 'g'); IF newindexdef <> i.indexdef THEN EXECUTE 'DROP INDEX ' || i.indexname; EXECUTE newindexdef; EXECUTE 'INSERT INTO rmb_internal_analyze VALUES ($1)' USING i.tablename; END IF; END LOOP; END $$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} DO $$ DECLARE t TEXT; BEGIN FOR t IN SELECT DISTINCT tablename FROM rmb_internal_analyze LOOP EXECUTE 'ANALYZE ' || t; END LOOP; END $$; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed DO $$ DECLARE t TEXT; BEGIN FOR t IN SELECT DISTINCT tablename FROM rmb_internal_analyze LOOP EXECUTE 'ANALYZE ' || t; END LOOP; END $$; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} TRUNCATE rmb_internal_analyze; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed TRUNCATE rmb_internal_analyze; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA diku_mod_audit TO diku_mod_audit; 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA diku_mod_audit TO diku_mod_audit; 06:42:31 [] [] [] [] INFO PostgresClient trying to execute: {} UPDATE diku_mod_audit.rmb_internal SET jsonb = jsonb || jsonb_build_object( 'rmbVersion', '35.0.4', 'moduleVersion', 'mod-audit-2.7.0-SNAPSHOT.9a68f1b', 'schemaJson', $mainftl${ "tables": [ { "tableName": "audit_data", "fromModuleVersion": "0.0.1", "withMetadata": true, "ginIndex": [ { "fieldName": "target_id", "tOps": "ADD", "caseSensitive": false, "removeAccents": true } ] }, { "tableName": "circulation_logs", "fromModuleVersion": "2.4.0", "ginIndex": [ { "fieldName": "items", "tOps": "DELETE", "caseSensitive": false, "removeAccents": true, "arraySubfield": "itemBarcode", "arrayModifiers": ["loanId"] } ], "index": [ { "fieldName": "eventId", "caseSensitive": false }, { "fieldName": "userBarcode", "caseSensitive": false }, { "fieldName": "action", "caseSensitive": false }, { "fieldName": "date", "caseSensitive": false }, { "fieldName": "servicePointId", "caseSensitive": false } ], "fullTextIndex": [ { "fieldName": "description", "tOps": "ADD", "caseSensitive": false, "removeAccents": true }, { "fieldName": "items", "tOps": "ADD", "caseSensitive": false, "removeAccents": true } ] } ], "scripts": [ { "run": "after", "snippetPath": "acquisition/create_acquisition_order_log_table.sql", "fromModuleVersion": "mod-audit-2.7.0" }, { "run": "after", "snippetPath": "acquisition/create_acquisition_order_line_log_table.sql", "fromModuleVersion": "mod-audit-2.7.0" } ] } $mainftl$); 06:42:31 [] [] [] [] INFO PostgresClient Successfully executed UPDATE diku_mod_audit.rmb_internal SET jsonb = jsonb || jsonb_build_object( 'rmbVersion', '35.0.4', 'moduleVersion', 'mod-audit-2.7.0-SNAPSHOT.9a68f1b', 'schemaJson', $mainftl${ "tables": [ { "tableName": "audit_data", "fromModuleVersion": "0.0.1", "withMetadata": true, "ginIndex": [ { "fieldName": "target_id", "tOps": "ADD", "caseSensitive": false, "removeAccents": true } ] }, { "tableName": "circulation_logs", "fromModuleVersion": "2.4.0", "ginIndex": [ { "fieldName": "items", "tOps": "DELETE", "caseSensitive": false, "removeAccents": true, "arraySubfield": "itemBarcode", "arrayModifiers": ["loanId"] } ], "index": [ { "fieldName": "eventId", "caseSensitive": false }, { "fieldName": "userBarcode", "caseSensitive": false }, { "fieldName": "action", "caseSensitive": false }, { "fieldName": "date", "caseSensitive": false }, { "fieldName": "servicePointId", "caseSensitive": false } ], "fullTextIndex": [ { "fieldName": "description", "tOps": "ADD", "caseSensitive": false, "removeAccents": true }, { "fieldName": "items", "tOps": "ADD", "caseSensitive": false, "removeAccents": true } ] } ], "scripts": [ { "run": "after", "snippetPath": "acquisition/create_acquisition_order_log_table.sql", "fromModuleVersion": "mod-audit-2.7.0" }, { "run": "after", "snippetPath": "acquisition/create_acquisition_order_line_log_table.sql", "fromModuleVersion": "mod-audit-2.7.0" } ] } $mainftl$); 06:42:31 [] [] [] [] INFO ModTenantService postTenant 06:42:31 [] [] [] [] INFO PubSubClientUtils Reading MessagingDescriptor.json 06:42:31 [] [] [] [] INFO PomReader Reading from jar 06:42:31 [] [] [] [] INFO PomReader module name: mod-audit, version: 2.7.0 06:42:31 [] [] [] [] INFO PubSubClientUtils Reading messaging descriptor for module mod-audit-2.7.0 06:42:31 [] [] [] [] INFO PubSubClientUtils Registering events for publishers 06:42:31 [] [] [] [] INFO RestRouting invoking getTenantByOperationId 06:42:31 [] [] [] [] INFO LogUtil 10.0.121.27:60702 GET /_/tenant/033e5be3-67a4-4464-8e66-057accbe309f null HTTP_1_1 200 422 7 tid=diku OK 06:42:31 [] [] [] [] INFO TenantAPI job 033e5be3-67a4-4464-8e66-057accbe309f completed 06:42:32 [] [] [] [] INFO PubSubClientUtils Registering module's publishers 06:42:32 [] [] [] [] INFO PubSubClientUtils Module's publishers were successfully registered 06:42:32 [] [] [] [] INFO PubSubClientUtils Registering module's subscribers 06:42:32 [] [] [] [] INFO PubSubClientUtils Module's subscribers were successfully registered 06:42:32 [] [] [] [] INFO RestRouting invoking getTenantByOperationId 06:42:32 [] [] [] [] INFO LogUtil 10.0.121.27:60702 GET /_/tenant/033e5be3-67a4-4464-8e66-057accbe309f null HTTP_1_1 200 421 5 tid=diku OK 06:42:32 [] [] [] [] INFO RestRouting invoking deleteTenantByOperationId 06:42:32 [] [] [] [] INFO LogUtil 10.0.121.27:60702 DELETE /_/tenant/033e5be3-67a4-4464-8e66-057accbe309f null HTTP_1_1 204 0 8 tid=diku No Content 06:50:16 [] [] [] [] INFO RestRouting invoking postAuditHandlersLogRecord 06:50:16 [] [] [] [] INFO LogRecordBuilder Calling GET /users?limit=1&offset=0&query=id%3D%3D%282205005b-ca51-4a04-87fd-938eefa8f6de%29 06:50:16 [] [] [] [] INFO LogUtil 10.0.121.27:49266 POST /audit/handlers/log-record null HTTP_1_1 204 0 62 tid=diku No Content 06:50:16 [] [] [] [] INFO LogRecordBuilder The response body for GET /users?limit=1&offset=0&query=id%3D%3D%282205005b-ca51-4a04-87fd-938eefa8f6de%29: { "users" : [ { "username" : "rick", "id" : "2205005b-ca51-4a04-87fd-938eefa8f6de", "barcode" : "123", "active" : true, "patronGroup" : "3684a786-6671-4268-8ed0-9db82ebca60b", "departments" : [ ], "proxyFor" : [ ], "personal" : { "lastName" : "rick", "firstName" : "psych", "email" : "rick@example.com", "addresses" : [ ], "preferredContactTypeId" : "002" }, "enrollmentDate" : "2020-10-07T04:00:00.000+00:00", "createdDate" : "2023-01-25T07:23:32.346+00:00", "updatedDate" : "2023-01-25T07:23:32.346+00:00", "metadata" : { "createdDate" : "2022-01-12T13:11:21.506+00:00", "updatedDate" : "2023-01-25T07:23:32.302+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" } } ], "totalRecords" : 1, "resultInfo" : { "totalRecords" : 1, "facets" : [ ], "diagnostics" : [ ] } } 06:50:16 [] [] [] [] INFO LogRecordBuilder Calling GET /inventory/items/de2d5d58-b96c-4bdd-9ab6-883621eb76ac 06:50:16 [] [] [] [] INFO LogRecordBuilder The response body for GET /inventory/items/de2d5d58-b96c-4bdd-9ab6-883621eb76ac: { "id" : "de2d5d58-b96c-4bdd-9ab6-883621eb76ac", "_version" : "1", "status" : { "name" : "Available", "date" : "2022-06-01T08:48:41.364+00:00" }, "administrativeNotes" : [ ], "title" : "Dune : The Battle of Corrin / Brian Herbert and Kevin J. Anderson.", "callNumber" : "\nPS3558.E617 D88 2004", "hrid" : "it00000000058", "contributorNames" : [ { "name" : "Herbert, Brian" }, { "name" : "Anderson, Kevin J., 1962-" } ], "formerIds" : [ ], "discoverySuppress" : null, "holdingsRecordId" : "b28cad7e-ae50-4055-948f-609b864a6b53", "barcode" : "1234w", "notes" : [ ], "circulationNotes" : [ ], "tags" : { "tagList" : [ ] }, "yearCaption" : [ ], "electronicAccess" : [ ], "statisticalCodeIds" : [ ], "purchaseOrderLineIdentifier" : null, "materialType" : { "id" : "1a54b431-2e4f-452d-9cae-9cee66c9a892", "name" : "book" }, "permanentLoanType" : { "id" : "2b94c631-fca9-4892-a730-03ee529ffe27", "name" : "Can circulate" }, "metadata" : { "createdDate" : "2022-06-01T08:48:41.364+00:00", "createdByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece", "updatedDate" : "2022-06-01T08:48:41.364+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" }, "effectiveCallNumberComponents" : { "callNumber" : "\nPS3558.E617 D88 2004", "prefix" : null, "suffix" : null, "typeId" : "95467209-6d7b-468b-94df-0f5d7ad2747d" }, "effectiveShelvingOrder" : "PS 43558 E617 D88 42004", "isBoundWith" : false, "effectiveLocation" : { "id" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "name" : "Main Library" } } 06:50:16 [] [] [] [] INFO LogRecordBuilder Calling GET /holdings-storage/holdings/b28cad7e-ae50-4055-948f-609b864a6b53 06:50:16 [] [] [] [] INFO LogRecordBuilder The response body for GET /holdings-storage/holdings/b28cad7e-ae50-4055-948f-609b864a6b53: { "id" : "b28cad7e-ae50-4055-948f-609b864a6b53", "_version" : 1, "hrid" : "ho00000000014", "formerIds" : [ ], "instanceId" : "bee44eaf-0a22-4271-873e-35e34e50e206", "permanentLocationId" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "effectiveLocationId" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "electronicAccess" : [ ], "callNumberTypeId" : "95467209-6d7b-468b-94df-0f5d7ad2747d", "callNumber" : "\nPS3558.E617 D88 2004", "administrativeNotes" : [ ], "notes" : [ ], "holdingsStatements" : [ ], "holdingsStatementsForIndexes" : [ ], "holdingsStatementsForSupplements" : [ ], "statisticalCodeIds" : [ ], "holdingsItems" : [ ], "bareHoldingsItems" : [ ], "metadata" : { "createdDate" : "2022-02-21T18:37:38.431+00:00", "createdByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece", "updatedDate" : "2022-02-21T18:37:38.431+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" }, "sourceId" : "f32d531e-df79-46b3-8932-cdd35f7a2264" } 06:50:16 [] [] [] [] INFO AuditHandlersService saveLogRecords :: saved record userBarcode :123 & description is :Fee/Fine type: TestFineType. Fee/Fine owner: Owener1. Amount: 1.00. manual 06:50:16 [] [] [] [] INFO PostgresClient DB config read from environment variables 06:50:16 [] [] [] [] INFO PostgresClient Using schema: diku 06:50:16 [] [] [] [] INFO PostgresClient postgreSQLClientConfig = {"port":5432,"username":"diku_mod_audit","password":"...","maxPoolSize":5,"database":"folio_modules","host":"postgresql","postgres_tester":false} 06:50:16 [] [] [] [] INFO Conn starting: saveBatch size=1 06:52:37 [] [] [] [] INFO RestRouting invoking postAuditHandlersLogRecord 06:52:37 [] [] [] [] INFO LogRecordBuilder Calling GET /users?limit=1&offset=0&query=id%3D%3D%282205005b-ca51-4a04-87fd-938eefa8f6de%29 06:52:37 [] [] [] [] INFO LogUtil 10.0.121.27:53718 POST /audit/handlers/log-record null HTTP_1_1 204 0 4 tid=diku No Content 06:52:37 [] [] [] [] INFO LogRecordBuilder The response body for GET /users?limit=1&offset=0&query=id%3D%3D%282205005b-ca51-4a04-87fd-938eefa8f6de%29: { "users" : [ { "username" : "rick", "id" : "2205005b-ca51-4a04-87fd-938eefa8f6de", "barcode" : "123", "active" : true, "patronGroup" : "3684a786-6671-4268-8ed0-9db82ebca60b", "departments" : [ ], "proxyFor" : [ ], "personal" : { "lastName" : "rick", "firstName" : "psych", "email" : "rick@example.com", "addresses" : [ ], "preferredContactTypeId" : "002" }, "enrollmentDate" : "2020-10-07T04:00:00.000+00:00", "createdDate" : "2023-01-25T07:23:32.346+00:00", "updatedDate" : "2023-01-25T07:23:32.346+00:00", "metadata" : { "createdDate" : "2022-01-12T13:11:21.506+00:00", "updatedDate" : "2023-01-25T07:23:32.302+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" } } ], "totalRecords" : 1, "resultInfo" : { "totalRecords" : 1, "facets" : [ ], "diagnostics" : [ ] } } 06:52:37 [] [] [] [] INFO LogRecordBuilder Calling GET /inventory/items/de2d5d58-b96c-4bdd-9ab6-883621eb76ac 06:52:38 [] [] [] [] INFO LogRecordBuilder The response body for GET /inventory/items/de2d5d58-b96c-4bdd-9ab6-883621eb76ac: { "id" : "de2d5d58-b96c-4bdd-9ab6-883621eb76ac", "_version" : "1", "status" : { "name" : "Available", "date" : "2022-06-01T08:48:41.364+00:00" }, "administrativeNotes" : [ ], "title" : "Dune : The Battle of Corrin / Brian Herbert and Kevin J. Anderson.", "callNumber" : "\nPS3558.E617 D88 2004", "hrid" : "it00000000058", "contributorNames" : [ { "name" : "Herbert, Brian" }, { "name" : "Anderson, Kevin J., 1962-" } ], "formerIds" : [ ], "discoverySuppress" : null, "holdingsRecordId" : "b28cad7e-ae50-4055-948f-609b864a6b53", "barcode" : "1234w", "notes" : [ ], "circulationNotes" : [ ], "tags" : { "tagList" : [ ] }, "yearCaption" : [ ], "electronicAccess" : [ ], "statisticalCodeIds" : [ ], "purchaseOrderLineIdentifier" : null, "materialType" : { "id" : "1a54b431-2e4f-452d-9cae-9cee66c9a892", "name" : "book" }, "permanentLoanType" : { "id" : "2b94c631-fca9-4892-a730-03ee529ffe27", "name" : "Can circulate" }, "metadata" : { "createdDate" : "2022-06-01T08:48:41.364+00:00", "createdByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece", "updatedDate" : "2022-06-01T08:48:41.364+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" }, "effectiveCallNumberComponents" : { "callNumber" : "\nPS3558.E617 D88 2004", "prefix" : null, "suffix" : null, "typeId" : "95467209-6d7b-468b-94df-0f5d7ad2747d" }, "effectiveShelvingOrder" : "PS 43558 E617 D88 42004", "isBoundWith" : false, "effectiveLocation" : { "id" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "name" : "Main Library" } } 06:52:38 [] [] [] [] INFO LogRecordBuilder Calling GET /holdings-storage/holdings/b28cad7e-ae50-4055-948f-609b864a6b53 06:52:38 [] [] [] [] INFO LogRecordBuilder The response body for GET /holdings-storage/holdings/b28cad7e-ae50-4055-948f-609b864a6b53: { "id" : "b28cad7e-ae50-4055-948f-609b864a6b53", "_version" : 1, "hrid" : "ho00000000014", "formerIds" : [ ], "instanceId" : "bee44eaf-0a22-4271-873e-35e34e50e206", "permanentLocationId" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "effectiveLocationId" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "electronicAccess" : [ ], "callNumberTypeId" : "95467209-6d7b-468b-94df-0f5d7ad2747d", "callNumber" : "\nPS3558.E617 D88 2004", "administrativeNotes" : [ ], "notes" : [ ], "holdingsStatements" : [ ], "holdingsStatementsForIndexes" : [ ], "holdingsStatementsForSupplements" : [ ], "statisticalCodeIds" : [ ], "holdingsItems" : [ ], "bareHoldingsItems" : [ ], "metadata" : { "createdDate" : "2022-02-21T18:37:38.431+00:00", "createdByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece", "updatedDate" : "2022-02-21T18:37:38.431+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" }, "sourceId" : "f32d531e-df79-46b3-8932-cdd35f7a2264" } 06:52:38 [] [] [] [] INFO AuditHandlersService saveLogRecords :: saved record userBarcode :123 & description is :English : Additional information for staff 1 06:52:38 [] [] [] [] INFO Conn starting: saveBatch size=1 06:53:36 [] [] [] [] INFO RestRouting invoking getAuditDataCirculationLogs 06:53:36 [] [] [] [] INFO CQL2PgJSON loadDbSchema: Loaded templates/db_scripts/schema.json OK 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] INFO CQLWrapper CQL >>> SQL: (items=="*1234w*" and userBarcode=="*123*") sortby date/sort.descending >>>WHERE (lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%'))) AND (CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END) ORDER BY left(lower(f_unaccent(circulation_logs.jsonb->>'date')),600) DESC, lower(f_unaccent(circulation_logs.jsonb->>'date')) DESC LIMIT 100 OFFSET 0 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:36 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:36 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is:English : Additional information for staff 1 06:53:36 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is:Fee/Fine type: TestFineType. Fee/Fine owner: Owener1. Amount: 1.00. manual 06:53:36 [] [] [] [] INFO LogUtil 10.0.121.27:53718 GET /audit-data/circulation/logs limit=100&offset=0&query=%28items%3D%3D%22%2A1234w%2A%22%20and%20userBarcode%3D%3D%22%2A123%2A%22%29%20sortby%20date%2Fsort.descending HTTP_1_1 200 1555 167 tid=diku OK 06:53:37 [] [] [] [] INFO RestRouting invoking getAuditDataCirculationLogs 06:53:37 [] [] [] [] INFO CQL2PgJSON loadDbSchema: Loaded templates/db_scripts/schema.json OK 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] INFO CQLWrapper CQL >>> SQL: (items=="*1234w*" and userBarcode=="*123*") sortby date/sort.descending >>>WHERE (lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%'))) AND (CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END) ORDER BY left(lower(f_unaccent(circulation_logs.jsonb->>'date')),600) DESC, lower(f_unaccent(circulation_logs.jsonb->>'date')) DESC LIMIT 100 OFFSET 0 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:53:37 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:53:37 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is:English : Additional information for staff 1 06:53:37 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is:Fee/Fine type: TestFineType. Fee/Fine owner: Owener1. Amount: 1.00. manual 06:53:37 [] [] [] [] INFO LogUtil 10.0.121.27:53718 GET /audit-data/circulation/logs limit=100&offset=0&query=%28items%3D%3D%22%2A1234w%2A%22%20and%20userBarcode%3D%3D%22%2A123%2A%22%29%20sortby%20date%2Fsort.descending HTTP_1_1 200 1555 26 tid=diku OK 06:57:58 [] [] [] [] INFO RestRouting invoking postAuditHandlersLogRecord 06:57:58 [] [] [] [] INFO LogRecordBuilder Calling GET /users?limit=1&offset=0&query=id%3D%3D%282205005b-ca51-4a04-87fd-938eefa8f6de%29 06:57:58 [] [] [] [] INFO LogUtil 10.0.121.27:45144 POST /audit/handlers/log-record null HTTP_1_1 204 0 4 tid=diku No Content 06:57:58 [] [] [] [] INFO LogRecordBuilder The response body for GET /users?limit=1&offset=0&query=id%3D%3D%282205005b-ca51-4a04-87fd-938eefa8f6de%29: { "users" : [ { "username" : "rick", "id" : "2205005b-ca51-4a04-87fd-938eefa8f6de", "barcode" : "123", "active" : true, "patronGroup" : "3684a786-6671-4268-8ed0-9db82ebca60b", "departments" : [ ], "proxyFor" : [ ], "personal" : { "lastName" : "rick", "firstName" : "psych", "email" : "rick@example.com", "addresses" : [ ], "preferredContactTypeId" : "002" }, "enrollmentDate" : "2020-10-07T04:00:00.000+00:00", "createdDate" : "2023-01-25T07:23:32.346+00:00", "updatedDate" : "2023-01-25T07:23:32.346+00:00", "metadata" : { "createdDate" : "2022-01-12T13:11:21.506+00:00", "updatedDate" : "2023-01-25T07:23:32.302+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" } } ], "totalRecords" : 1, "resultInfo" : { "totalRecords" : 1, "facets" : [ ], "diagnostics" : [ ] } } 06:57:58 [] [] [] [] INFO LogRecordBuilder Calling GET /inventory/items/de2d5d58-b96c-4bdd-9ab6-883621eb76ac 06:57:58 [] [] [] [] INFO LogRecordBuilder The response body for GET /inventory/items/de2d5d58-b96c-4bdd-9ab6-883621eb76ac: { "id" : "de2d5d58-b96c-4bdd-9ab6-883621eb76ac", "_version" : "1", "status" : { "name" : "Available", "date" : "2022-06-01T08:48:41.364+00:00" }, "administrativeNotes" : [ ], "title" : "Dune : The Battle of Corrin / Brian Herbert and Kevin J. Anderson.", "callNumber" : "\nPS3558.E617 D88 2004", "hrid" : "it00000000058", "contributorNames" : [ { "name" : "Herbert, Brian" }, { "name" : "Anderson, Kevin J., 1962-" } ], "formerIds" : [ ], "discoverySuppress" : null, "holdingsRecordId" : "b28cad7e-ae50-4055-948f-609b864a6b53", "barcode" : "1234w", "notes" : [ ], "circulationNotes" : [ ], "tags" : { "tagList" : [ ] }, "yearCaption" : [ ], "electronicAccess" : [ ], "statisticalCodeIds" : [ ], "purchaseOrderLineIdentifier" : null, "materialType" : { "id" : "1a54b431-2e4f-452d-9cae-9cee66c9a892", "name" : "book" }, "permanentLoanType" : { "id" : "2b94c631-fca9-4892-a730-03ee529ffe27", "name" : "Can circulate" }, "metadata" : { "createdDate" : "2022-06-01T08:48:41.364+00:00", "createdByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece", "updatedDate" : "2022-06-01T08:48:41.364+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" }, "effectiveCallNumberComponents" : { "callNumber" : "\nPS3558.E617 D88 2004", "prefix" : null, "suffix" : null, "typeId" : "95467209-6d7b-468b-94df-0f5d7ad2747d" }, "effectiveShelvingOrder" : "PS 43558 E617 D88 42004", "isBoundWith" : false, "effectiveLocation" : { "id" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "name" : "Main Library" } } 06:57:58 [] [] [] [] INFO LogRecordBuilder Calling GET /holdings-storage/holdings/b28cad7e-ae50-4055-948f-609b864a6b53 06:57:58 [] [] [] [] INFO LogRecordBuilder The response body for GET /holdings-storage/holdings/b28cad7e-ae50-4055-948f-609b864a6b53: { "id" : "b28cad7e-ae50-4055-948f-609b864a6b53", "_version" : 1, "hrid" : "ho00000000014", "formerIds" : [ ], "instanceId" : "bee44eaf-0a22-4271-873e-35e34e50e206", "permanentLocationId" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "effectiveLocationId" : "fcd64ce1-6995-48f0-840e-89ffa2288371", "electronicAccess" : [ ], "callNumberTypeId" : "95467209-6d7b-468b-94df-0f5d7ad2747d", "callNumber" : "\nPS3558.E617 D88 2004", "administrativeNotes" : [ ], "notes" : [ ], "holdingsStatements" : [ ], "holdingsStatementsForIndexes" : [ ], "holdingsStatementsForSupplements" : [ ], "statisticalCodeIds" : [ ], "holdingsItems" : [ ], "bareHoldingsItems" : [ ], "metadata" : { "createdDate" : "2022-02-21T18:37:38.431+00:00", "createdByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece", "updatedDate" : "2022-02-21T18:37:38.431+00:00", "updatedByUserId" : "8e75dcb2-db5f-53a7-a09e-7084c47b7ece" }, "sourceId" : "f32d531e-df79-46b3-8932-cdd35f7a2264" } 06:57:58 [] [] [] [] INFO AuditHandlersService saveLogRecords :: saved record userBarcode :123 & description is : 06:57:58 [] [] [] [] INFO Conn starting: saveBatch size=1 06:59:21 [] [] [] [] INFO RestRouting invoking getAuditDataCirculationLogs 06:59:21 [] [] [] [] INFO CQL2PgJSON loadDbSchema: Loaded templates/db_scripts/schema.json OK 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQLWrapper CQL >>> SQL: (items=="*1234w*" and userBarcode=="*123*") sortby date/sort.descending >>>WHERE (lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%'))) AND (CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END) ORDER BY left(lower(f_unaccent(circulation_logs.jsonb->>'date')),600) DESC, lower(f_unaccent(circulation_logs.jsonb->>'date')) DESC LIMIT 100 OFFSET 0 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is: 06:59:21 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is:English : Additional information for staff 1 06:59:21 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is:Fee/Fine type: TestFineType. Fee/Fine owner: Owener1. Amount: 1.00. manual 06:59:21 [] [] [] [] INFO LogUtil 10.0.121.27:39606 GET /audit-data/circulation/logs limit=100&offset=0&query=%28items%3D%3D%22%2A1234w%2A%22%20and%20userBarcode%3D%3D%22%2A123%2A%22%29%20sortby%20date%2Fsort.descending HTTP_1_1 200 2262 38 tid=diku OK 06:59:21 [] [] [] [] INFO RestRouting invoking getAuditDataCirculationLogs 06:59:21 [] [] [] [] INFO CQL2PgJSON loadDbSchema: Loaded templates/db_scripts/schema.json OK 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQLWrapper CQL >>> SQL: (items=="*1234w*" and userBarcode=="*123*") sortby date/sort.descending >>>WHERE (lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%'))) AND (CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END) ORDER BY left(lower(f_unaccent(circulation_logs.jsonb->>'date')),600) DESC, lower(f_unaccent(circulation_logs.jsonb->>'date')) DESC LIMIT 100 OFFSET 0 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'items', CQL >>> SQL: items == *1234w* >>> lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'items' generated SQL lower(f_unaccent(circulation_logs.jsonb->>'items')) LIKE lower(f_unaccent('%1234w%')) 06:59:21 [] [] [] [] WARN CQL2PgJSON Doing wildcard LIKE search without index for circulation_logs.jsonb->>'userBarcode', CQL >>> SQL: userBarcode == *123* >>> CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO CQL2PgJSON index circulation_logs.jsonb->>'userBarcode' generated SQL CASE WHEN length(lower(f_unaccent('%123%'))) <= 600 THEN left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE lower(f_unaccent('%123%')) ELSE left(lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')),600) LIKE left(lower(f_unaccent('%123%')),600) AND lower(f_unaccent(circulation_logs.jsonb->>'userBarcode')) LIKE lower(f_unaccent('%123%')) END 06:59:21 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is: 06:59:21 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is:English : Additional information for staff 1 06:59:21 [] [] [] [] INFO rculationLogsService get record while fetching userBarcode :123 & description is:Fee/Fine type: TestFineType. Fee/Fine owner: Owener1. Amount: 1.00. manual 06:59:21 [] [] [] [] INFO LogUtil 10.0.121.27:39606 GET /audit-data/circulation/logs limit=100&offset=0&query=%28items%3D%3D%22%2A1234w%2A%22%20and%20userBarcode%3D%3D%22%2A123%2A%22%29%20sortby%20date%2Fsort.descending HTTP_1_1 200 2262 29 tid=diku OK