committed by
GitHub
6 changed files with 123 additions and 34 deletions
@ -0,0 +1,54 @@ |
|||
/** |
|||
* Copyright © 2016-2021 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.service.install; |
|||
|
|||
import org.junit.Test; |
|||
|
|||
import static org.mockito.ArgumentMatchers.anyString; |
|||
import static org.mockito.BDDMockito.willDoNothing; |
|||
import static org.mockito.Mockito.spy; |
|||
import static org.mockito.Mockito.times; |
|||
import static org.mockito.Mockito.verify; |
|||
|
|||
public class PsqlEntityDatabaseSchemaServiceTest { |
|||
|
|||
@Test |
|||
public void givenPsqlDbSchemaService_whenCreateDatabaseSchema_thenVerifyPsqlIndexSpecificCall() throws Exception { |
|||
PsqlEntityDatabaseSchemaService service = spy(new PsqlEntityDatabaseSchemaService()); |
|||
willDoNothing().given(service).executeQueryFromFile(anyString()); |
|||
|
|||
service.createDatabaseSchema(); |
|||
|
|||
verify(service, times(1)).createDatabaseIndexes(); |
|||
verify(service, times(1)).executeQueryFromFile(PsqlEntityDatabaseSchemaService.SCHEMA_ENTITIES_SQL); |
|||
verify(service, times(1)).executeQueryFromFile(PsqlEntityDatabaseSchemaService.SCHEMA_ENTITIES_IDX_SQL); |
|||
verify(service, times(1)).executeQueryFromFile(PsqlEntityDatabaseSchemaService.SCHEMA_ENTITIES_IDX_PSQL_ADDON_SQL); |
|||
verify(service, times(3)).executeQueryFromFile(anyString()); |
|||
} |
|||
|
|||
@Test |
|||
public void givenPsqlDbSchemaService_whenCreateDatabaseIndexes_thenVerifyPsqlIndexSpecificCall() throws Exception { |
|||
PsqlEntityDatabaseSchemaService service = spy(new PsqlEntityDatabaseSchemaService()); |
|||
willDoNothing().given(service).executeQueryFromFile(anyString()); |
|||
|
|||
service.createDatabaseIndexes(); |
|||
|
|||
verify(service, times(1)).executeQueryFromFile(PsqlEntityDatabaseSchemaService.SCHEMA_ENTITIES_IDX_SQL); |
|||
verify(service, times(1)).executeQueryFromFile(PsqlEntityDatabaseSchemaService.SCHEMA_ENTITIES_IDX_PSQL_ADDON_SQL); |
|||
verify(service, times(2)).executeQueryFromFile(anyString()); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,38 @@ |
|||
-- |
|||
-- Copyright © 2016-2021 The Thingsboard Authors |
|||
-- |
|||
-- Licensed under the Apache License, Version 2.0 (the "License"); |
|||
-- you may not use this file except in compliance with the License. |
|||
-- You may obtain a copy of the License at |
|||
-- |
|||
-- http://www.apache.org/licenses/LICENSE-2.0 |
|||
-- |
|||
-- Unless required by applicable law or agreed to in writing, software |
|||
-- distributed under the License is distributed on an "AS IS" BASIS, |
|||
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
-- See the License for the specific language governing permissions and |
|||
-- limitations under the License. |
|||
-- |
|||
|
|||
-- This file describes PostgreSQL-specific indexes that not supported by hsql |
|||
-- It is not a stand-alone file! Run schema-entities-idx.sql before! |
|||
-- Note: Hibernate DESC order translates to native SQL "ORDER BY .. DESC NULLS LAST" |
|||
-- While creating index PostgreSQL transforms short notation (ts DESC) to the full (DESC NULLS FIRST) |
|||
-- That difference between NULLS LAST and NULLS FIRST prevents to hit index while querying latest by ts |
|||
-- That why we need to define DESC index explicitly as (ts DESC NULLS LAST) |
|||
|
|||
CREATE INDEX IF NOT EXISTS idx_event_ts |
|||
ON public.event |
|||
(ts DESC NULLS LAST) |
|||
WITH (FILLFACTOR=95); |
|||
|
|||
COMMENT ON INDEX public.idx_event_ts |
|||
IS 'This index helps to delete events by TTL using timestamp'; |
|||
|
|||
CREATE INDEX IF NOT EXISTS idx_event_tenant_entity_type_entity_event_type_created_time_des |
|||
ON public.event |
|||
(tenant_id ASC, entity_type ASC, entity_id ASC, event_type ASC, created_time DESC NULLS LAST) |
|||
WITH (FILLFACTOR=95); |
|||
|
|||
COMMENT ON INDEX public.idx_event_tenant_entity_type_entity_event_type_created_time_des |
|||
IS 'This index helps to open latest events on UI fast'; |
|||
Loading…
Reference in new issue