2017-05-31 18:55:59 +03:00
--
2020-01-06 16:52:41 +02:00
-- Copyright © 2016-2020 The Thingsboard Authors
2017-05-31 18:55:59 +03:00
--
-- 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.
--
2017-06-01 16:50:37 +03:00
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS admin_settings (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT admin_settings_pkey PRIMARY KEY ,
2017-07-01 20:39:00 +03:00
json_value varchar ,
2017-07-17 17:32:32 +03:00
key varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS alarm (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT alarm_pkey PRIMARY KEY ,
2017-05-31 18:55:59 +03:00
ack_ts bigint ,
clear_ts bigint ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-05-31 18:55:59 +03:00
end_ts bigint ,
2017-07-17 17:32:32 +03:00
originator_id varchar ( 31 ) ,
2017-05-31 18:55:59 +03:00
originator_type integer ,
propagate boolean ,
2017-07-17 17:32:32 +03:00
severity varchar ( 255 ) ,
2017-05-31 18:55:59 +03:00
start_ts bigint ,
2017-07-17 17:32:32 +03:00
status varchar ( 255 ) ,
tenant_id varchar ( 31 ) ,
2019-12-08 23:52:29 +02:00
propagate_relation_types varchar ,
2017-07-17 17:32:32 +03:00
type varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS asset (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT asset_pkey PRIMARY KEY ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-07-17 17:32:32 +03:00
customer_id varchar ( 31 ) ,
name varchar ( 255 ) ,
2019-10-17 18:25:05 +03:00
label varchar ( 255 ) ,
2017-07-17 17:32:32 +03:00
search_text varchar ( 255 ) ,
tenant_id varchar ( 31 ) ,
2019-11-22 15:47:54 +02:00
type varchar ( 255 ) ,
CONSTRAINT asset_name_unq_key UNIQUE ( tenant_id , name )
2017-05-31 18:55:59 +03:00
) ;
2018-02-09 17:17:44 +02:00
CREATE TABLE IF NOT EXISTS audit_log (
id varchar ( 31 ) NOT NULL CONSTRAINT audit_log_pkey PRIMARY KEY ,
tenant_id varchar ( 31 ) ,
customer_id varchar ( 31 ) ,
entity_id varchar ( 31 ) ,
entity_type varchar ( 255 ) ,
entity_name varchar ( 255 ) ,
user_id varchar ( 31 ) ,
user_name varchar ( 255 ) ,
action_type varchar ( 255 ) ,
2018-02-21 20:05:03 +02:00
action_data varchar ( 1000000 ) ,
2018-02-09 17:17:44 +02:00
action_status varchar ( 255 ) ,
2018-02-21 20:05:03 +02:00
action_failure_details varchar ( 1000000 )
2018-02-09 17:17:44 +02:00
) ;
2017-06-13 16:29:40 +03:00
CREATE TABLE IF NOT EXISTS attribute_kv (
2017-07-17 17:32:32 +03:00
entity_type varchar ( 255 ) ,
entity_id varchar ( 31 ) ,
attribute_type varchar ( 255 ) ,
attribute_key varchar ( 255 ) ,
2017-06-09 19:52:26 +03:00
bool_v boolean ,
2017-08-17 16:38:13 +03:00
str_v varchar ( 10000000 ) ,
2017-06-09 19:52:26 +03:00
long_v bigint ,
dbl_v double precision ,
2020-02-14 19:18:18 +02:00
json_v json ,
2017-06-09 19:52:26 +03:00
last_update_ts bigint ,
2018-12-20 14:53:16 +01:00
CONSTRAINT attribute_kv_pkey PRIMARY KEY ( entity_type , entity_id , attribute_type , attribute_key )
2017-06-09 19:52:26 +03:00
) ;
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS component_descriptor (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT component_descriptor_pkey PRIMARY KEY ,
actions varchar ( 255 ) ,
2018-10-30 13:32:55 +02:00
clazz varchar UNIQUE ,
2017-07-01 20:39:00 +03:00
configuration_descriptor varchar ,
2017-07-17 17:32:32 +03:00
name varchar ( 255 ) ,
scope varchar ( 255 ) ,
search_text varchar ( 255 ) ,
type varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS customer (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT customer_pkey PRIMARY KEY ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-07-17 17:32:32 +03:00
address varchar ,
address2 varchar ,
city varchar ( 255 ) ,
country varchar ( 255 ) ,
email varchar ( 255 ) ,
phone varchar ( 255 ) ,
search_text varchar ( 255 ) ,
state varchar ( 255 ) ,
tenant_id varchar ( 31 ) ,
title varchar ( 255 ) ,
zip varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS dashboard (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT dashboard_pkey PRIMARY KEY ,
2017-08-04 15:06:48 +03:00
configuration varchar ( 10000000 ) ,
2018-02-27 18:30:23 +02:00
assigned_customers varchar ( 1000000 ) ,
2017-07-17 17:32:32 +03:00
search_text varchar ( 255 ) ,
tenant_id varchar ( 31 ) ,
title varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS device (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT device_pkey PRIMARY KEY ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-07-17 17:32:32 +03:00
customer_id varchar ( 31 ) ,
type varchar ( 255 ) ,
name varchar ( 255 ) ,
2019-06-24 12:34:40 +03:00
label varchar ( 255 ) ,
2017-07-17 17:32:32 +03:00
search_text varchar ( 255 ) ,
2019-11-22 15:47:54 +02:00
tenant_id varchar ( 31 ) ,
CONSTRAINT device_name_unq_key UNIQUE ( tenant_id , name )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS device_credentials (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT device_credentials_pkey PRIMARY KEY ,
credentials_id varchar ,
credentials_type varchar ( 255 ) ,
2017-07-17 21:19:31 +03:00
credentials_value varchar ,
2019-11-22 15:47:54 +02:00
device_id varchar ( 31 ) ,
CONSTRAINT device_credentials_id_unq_key UNIQUE ( credentials_id )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS event (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT event_pkey PRIMARY KEY ,
2019-02-14 16:08:57 +02:00
body varchar ( 10000000 ) ,
2017-07-17 17:32:32 +03:00
entity_id varchar ( 31 ) ,
entity_type varchar ( 255 ) ,
event_type varchar ( 255 ) ,
event_uid varchar ( 255 ) ,
tenant_id varchar ( 31 ) ,
2020-04-22 16:16:58 +03:00
ts bigint NOT NULL ,
2017-06-26 19:19:17 +03:00
CONSTRAINT event_unq_key UNIQUE ( tenant_id , entity_type , entity_id , event_type , event_uid )
2017-05-31 18:55:59 +03:00
) ;
2017-06-14 19:27:35 +03:00
CREATE TABLE IF NOT EXISTS relation (
2017-07-17 17:32:32 +03:00
from_id varchar ( 31 ) ,
from_type varchar ( 255 ) ,
to_id varchar ( 31 ) ,
to_type varchar ( 255 ) ,
relation_type_group varchar ( 255 ) ,
relation_type varchar ( 255 ) ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2018-12-20 14:53:16 +01:00
CONSTRAINT relation_pkey PRIMARY KEY ( from_id , from_type , relation_type_group , relation_type , to_id , to_type )
2017-06-14 19:27:35 +03:00
) ;
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS tb_user (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT tb_user_pkey PRIMARY KEY ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-07-17 17:32:32 +03:00
authority varchar ( 255 ) ,
customer_id varchar ( 31 ) ,
email varchar ( 255 ) UNIQUE ,
first_name varchar ( 255 ) ,
last_name varchar ( 255 ) ,
search_text varchar ( 255 ) ,
tenant_id varchar ( 31 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS tenant (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT tenant_pkey PRIMARY KEY ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-07-17 17:32:32 +03:00
address varchar ,
address2 varchar ,
city varchar ( 255 ) ,
country varchar ( 255 ) ,
email varchar ( 255 ) ,
phone varchar ( 255 ) ,
region varchar ( 255 ) ,
search_text varchar ( 255 ) ,
state varchar ( 255 ) ,
title varchar ( 255 ) ,
2020-04-13 10:24:40 +03:00
zip varchar ( 255 ) ,
isolated_tb_core boolean ,
isolated_tb_rule_engine boolean
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS user_credentials (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT user_credentials_pkey PRIMARY KEY ,
activate_token varchar ( 255 ) UNIQUE ,
2017-05-31 18:55:59 +03:00
enabled boolean ,
2017-07-17 17:32:32 +03:00
password varchar ( 255 ) ,
reset_token varchar ( 255 ) UNIQUE ,
user_id varchar ( 31 ) UNIQUE
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS widget_type (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT widget_type_pkey PRIMARY KEY ,
alias varchar ( 255 ) ,
bundle_alias varchar ( 255 ) ,
2017-07-03 11:34:11 +03:00
descriptor varchar ( 1000000 ) ,
2017-07-17 17:32:32 +03:00
name varchar ( 255 ) ,
tenant_id varchar ( 31 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS widgets_bundle (
2017-07-17 17:32:32 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT widgets_bundle_pkey PRIMARY KEY ,
alias varchar ( 255 ) ,
search_text varchar ( 255 ) ,
tenant_id varchar ( 31 ) ,
title varchar ( 255 )
2018-03-12 12:28:16 +02:00
) ;
CREATE TABLE IF NOT EXISTS rule_chain (
2019-06-27 12:28:06 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT rule_chain_pkey PRIMARY KEY ,
2018-03-12 12:28:16 +02:00
additional_info varchar ,
configuration varchar ( 10000000 ) ,
name varchar ( 255 ) ,
2019-11-11 19:20:11 +02:00
type varchar ( 255 ) ,
2018-03-12 12:28:16 +02:00
first_rule_node_id varchar ( 31 ) ,
2018-03-14 12:19:33 +02:00
root boolean ,
2018-03-20 17:40:56 +02:00
debug_mode boolean ,
2018-03-12 12:28:16 +02:00
search_text varchar ( 255 ) ,
tenant_id varchar ( 31 )
) ;
CREATE TABLE IF NOT EXISTS rule_node (
id varchar ( 31 ) NOT NULL CONSTRAINT rule_node_pkey PRIMARY KEY ,
2018-04-16 20:09:47 +03:00
rule_chain_id varchar ( 31 ) ,
2018-03-12 12:28:16 +02:00
additional_info varchar ,
configuration varchar ( 10000000 ) ,
type varchar ( 255 ) ,
name varchar ( 255 ) ,
2018-03-20 17:40:56 +02:00
debug_mode boolean ,
2018-03-12 12:28:16 +02:00
search_text varchar ( 255 )
) ;
2018-09-03 19:26:42 +03:00
2018-10-09 18:51:10 +03:00
CREATE TABLE IF NOT EXISTS entity_view (
2018-09-03 19:26:42 +03:00
id varchar ( 31 ) NOT NULL CONSTRAINT entity_view_pkey PRIMARY KEY ,
2018-09-05 19:29:42 +03:00
entity_id varchar ( 31 ) ,
entity_type varchar ( 255 ) ,
tenant_id varchar ( 31 ) ,
2018-09-03 19:26:42 +03:00
customer_id varchar ( 31 ) ,
2018-10-09 18:51:10 +03:00
type varchar ( 255 ) ,
2018-09-05 19:29:42 +03:00
name varchar ( 255 ) ,
2018-11-09 12:49:51 +02:00
keys varchar ( 10000000 ) ,
2018-09-11 15:59:00 +03:00
start_ts bigint ,
end_ts bigint ,
2018-09-03 19:26:42 +03:00
search_text varchar ( 255 ) ,
2018-09-05 19:29:42 +03:00
additional_info varchar
2018-09-03 19:26:42 +03:00
) ;
2019-09-17 13:05:27 +03:00
CREATE TABLE IF NOT EXISTS edge (
id varchar ( 31 ) NOT NULL CONSTRAINT edge_pkey PRIMARY KEY ,
additional_info varchar ,
2019-09-18 13:52:09 +03:00
customer_id varchar ( 31 ) ,
2019-11-12 19:07:46 +02:00
root_rule_chain_id varchar ( 31 ) ,
2019-09-17 13:05:27 +03:00
configuration varchar ( 10000000 ) ,
2019-10-07 12:54:28 +03:00
type varchar ( 255 ) ,
2019-09-17 13:05:27 +03:00
name varchar ( 255 ) ,
2019-10-08 18:47:34 +03:00
label varchar ( 255 ) ,
2019-10-28 12:13:01 +02:00
routing_key varchar ( 255 ) ,
secret varchar ( 255 ) ,
2019-09-17 13:05:27 +03:00
search_text varchar ( 255 ) ,
2020-06-05 12:57:41 +03:00
tenant_id varchar ( 31 ) ,
CONSTRAINT edge_name_unq_key UNIQUE ( tenant_id , name ) ,
CONSTRAINT edge_routing_key_unq_key UNIQUE ( routing_key )
2020-05-08 22:39:51 +03:00
) ;
2020-06-19 16:06:49 +03:00
2020-06-16 16:49:27 +03:00
CREATE TABLE IF NOT EXISTS edge_event (
id varchar ( 31 ) NOT NULL CONSTRAINT edge_event_pkey PRIMARY KEY ,
edge_id varchar ( 31 ) ,
edge_event_type varchar ( 255 ) ,
entity_id varchar ( 31 ) ,
edge_event_action varchar ( 255 ) ,
entity_body varchar ( 10000000 ) ,
tenant_id varchar ( 31 ) ,
ts bigint NOT NULL
2020-06-19 10:19:40 +03:00
) ;
2020-04-22 16:16:58 +03:00
CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl ( IN ttl bigint , IN debug_ttl bigint , INOUT deleted bigint )
2020-04-22 13:03:53 +03:00
LANGUAGE plpgsql AS
$ $
DECLARE
ttl_ts bigint ;
2020-04-22 16:16:58 +03:00
debug_ttl_ts bigint ;
ttl_deleted_count bigint DEFAULT 0 ;
debug_ttl_deleted_count bigint DEFAULT 0 ;
2020-04-22 13:03:53 +03:00
BEGIN
2020-04-22 16:16:58 +03:00
IF ttl > 0 THEN
ttl_ts : = ( EXTRACT ( EPOCH FROM current_timestamp ) * 1000 - ttl : : bigint * 1000 ) : : bigint ;
2020-04-22 13:03:53 +03:00
EXECUTE format (
2020-04-22 16:16:58 +03:00
' WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type != %L::varchar AND event_type != %L::varchar) RETURNING *) SELECT count(*) FROM deleted ' , ttl_ts , ' DEBUG_RULE_NODE ' , ' DEBUG_RULE_CHAIN ' ) into ttl_deleted_count ;
2020-04-22 13:03:53 +03:00
END IF ;
2020-04-22 16:16:58 +03:00
IF debug_ttl > 0 THEN
debug_ttl_ts : = ( EXTRACT ( EPOCH FROM current_timestamp ) * 1000 - debug_ttl : : bigint * 1000 ) : : bigint ;
EXECUTE format (
' WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type = %L::varchar OR event_type = %L::varchar) RETURNING *) SELECT count(*) FROM deleted ' , debug_ttl_ts , ' DEBUG_RULE_NODE ' , ' DEBUG_RULE_CHAIN ' ) into debug_ttl_deleted_count ;
END IF ;
RAISE NOTICE ' Events removed by ttl: % ' , ttl_deleted_count ;
RAISE NOTICE ' Debug Events removed by ttl: % ' , debug_ttl_deleted_count ;
deleted : = ttl_deleted_count + debug_ttl_deleted_count ;
2020-04-22 13:03:53 +03:00
END
$ $ ;