Set up to 3.4.2 version instead of 3.5.0
This commit is contained in:
parent
5b3eb26a3b
commit
a098e33d8d
@ -73,3 +73,63 @@ BEGIN
|
|||||||
WHERE created_time >= start_time_ms AND created_time < end_time_ms;
|
WHERE created_time >= start_time_ms AND created_time < end_time_ms;
|
||||||
END;
|
END;
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
|
|
||||||
|
DO
|
||||||
|
$$
|
||||||
|
DECLARE table_partition RECORD;
|
||||||
|
BEGIN
|
||||||
|
-- in case of running the upgrade script a second time:
|
||||||
|
IF NOT (SELECT exists(SELECT FROM pg_tables WHERE tablename = 'old_edge_event')) THEN
|
||||||
|
ALTER TABLE edge_event RENAME TO old_edge_event;
|
||||||
|
ALTER INDEX IF EXISTS idx_edge_event_tenant_id_and_created_time RENAME TO idx_old_edge_event_tenant_id_and_created_time;
|
||||||
|
|
||||||
|
FOR table_partition IN SELECT tablename AS name, split_part(tablename, '_', 3) AS partition_ts
|
||||||
|
FROM pg_tables WHERE tablename LIKE 'edge_event_%'
|
||||||
|
LOOP
|
||||||
|
EXECUTE format('ALTER TABLE %s RENAME TO old_edge_event_%s', table_partition.name, table_partition.partition_ts);
|
||||||
|
END LOOP;
|
||||||
|
ELSE
|
||||||
|
RAISE NOTICE 'Table old_edge_event already exists, leaving as is';
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS edge_event (
|
||||||
|
id uuid NOT NULL,
|
||||||
|
created_time bigint NOT NULL,
|
||||||
|
edge_id uuid,
|
||||||
|
edge_event_type varchar(255),
|
||||||
|
edge_event_uid varchar(255),
|
||||||
|
entity_id uuid,
|
||||||
|
edge_event_action varchar(255),
|
||||||
|
body varchar(10000000),
|
||||||
|
tenant_id uuid,
|
||||||
|
ts bigint NOT NULL
|
||||||
|
) PARTITION BY RANGE (created_time);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_edge_event_tenant_id_and_created_time ON edge_event(tenant_id, created_time DESC);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE migrate_edge_event(IN start_time_ms BIGINT, IN end_time_ms BIGINT, IN partition_size_ms BIGINT)
|
||||||
|
LANGUAGE plpgsql AS
|
||||||
|
$$
|
||||||
|
DECLARE
|
||||||
|
p RECORD;
|
||||||
|
partition_end_ts BIGINT;
|
||||||
|
BEGIN
|
||||||
|
FOR p IN SELECT DISTINCT (created_time - created_time % partition_size_ms) AS partition_ts FROM old_edge_event
|
||||||
|
WHERE created_time >= start_time_ms AND created_time < end_time_ms
|
||||||
|
LOOP
|
||||||
|
partition_end_ts = p.partition_ts + partition_size_ms;
|
||||||
|
RAISE NOTICE '[edge_event] Partition to create : [%-%]', p.partition_ts, partition_end_ts;
|
||||||
|
EXECUTE format('CREATE TABLE IF NOT EXISTS edge_event_%s PARTITION OF edge_event ' ||
|
||||||
|
'FOR VALUES FROM ( %s ) TO ( %s )', p.partition_ts, p.partition_ts, partition_end_ts);
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
INSERT INTO edge_event
|
||||||
|
SELECT id, created_time, edge_id, edge_event_type, edge_event_uid, entity_id, edge_event_action, body, tenant_id, ts
|
||||||
|
FROM old_edge_event
|
||||||
|
WHERE created_time >= start_time_ms AND created_time < end_time_ms;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
@ -1,76 +0,0 @@
|
|||||||
--
|
|
||||||
-- Copyright © 2016-2022 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.
|
|
||||||
--
|
|
||||||
|
|
||||||
DO
|
|
||||||
$$
|
|
||||||
DECLARE table_partition RECORD;
|
|
||||||
BEGIN
|
|
||||||
-- in case of running the upgrade script a second time:
|
|
||||||
IF NOT (SELECT exists(SELECT FROM pg_tables WHERE tablename = 'old_edge_event')) THEN
|
|
||||||
ALTER TABLE edge_event RENAME TO old_edge_event;
|
|
||||||
ALTER INDEX IF EXISTS idx_edge_event_tenant_id_and_created_time RENAME TO idx_old_edge_event_tenant_id_and_created_time;
|
|
||||||
|
|
||||||
FOR table_partition IN SELECT tablename AS name, split_part(tablename, '_', 3) AS partition_ts
|
|
||||||
FROM pg_tables WHERE tablename LIKE 'edge_event_%'
|
|
||||||
LOOP
|
|
||||||
EXECUTE format('ALTER TABLE %s RENAME TO old_edge_event_%s', table_partition.name, table_partition.partition_ts);
|
|
||||||
END LOOP;
|
|
||||||
ELSE
|
|
||||||
RAISE NOTICE 'Table old_edge_event already exists, leaving as is';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
$$;
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS edge_event (
|
|
||||||
id uuid NOT NULL,
|
|
||||||
created_time bigint NOT NULL,
|
|
||||||
edge_id uuid,
|
|
||||||
edge_event_type varchar(255),
|
|
||||||
edge_event_uid varchar(255),
|
|
||||||
entity_id uuid,
|
|
||||||
edge_event_action varchar(255),
|
|
||||||
body varchar(10000000),
|
|
||||||
tenant_id uuid,
|
|
||||||
ts bigint NOT NULL
|
|
||||||
) PARTITION BY RANGE (created_time);
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_edge_event_tenant_id_and_created_time ON edge_event(tenant_id, created_time DESC);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE migrate_edge_event(IN start_time_ms BIGINT, IN end_time_ms BIGINT, IN partition_size_ms BIGINT)
|
|
||||||
LANGUAGE plpgsql AS
|
|
||||||
$$
|
|
||||||
DECLARE
|
|
||||||
p RECORD;
|
|
||||||
partition_end_ts BIGINT;
|
|
||||||
BEGIN
|
|
||||||
FOR p IN SELECT DISTINCT (created_time - created_time % partition_size_ms) AS partition_ts FROM old_edge_event
|
|
||||||
WHERE created_time >= start_time_ms AND created_time < end_time_ms
|
|
||||||
LOOP
|
|
||||||
partition_end_ts = p.partition_ts + partition_size_ms;
|
|
||||||
RAISE NOTICE '[edge_event] Partition to create : [%-%]', p.partition_ts, partition_end_ts;
|
|
||||||
EXECUTE format('CREATE TABLE IF NOT EXISTS edge_event_%s PARTITION OF edge_event ' ||
|
|
||||||
'FOR VALUES FROM ( %s ) TO ( %s )', p.partition_ts, p.partition_ts, partition_end_ts);
|
|
||||||
END LOOP;
|
|
||||||
|
|
||||||
INSERT INTO edge_event
|
|
||||||
SELECT id, created_time, edge_id, edge_event_type, edge_event_uid, entity_id, edge_event_action, body, tenant_id, ts
|
|
||||||
FROM old_edge_event
|
|
||||||
WHERE created_time >= start_time_ms AND created_time < end_time_ms;
|
|
||||||
END;
|
|
||||||
$$;
|
|
||||||
|
|
||||||
|
|
||||||
@ -230,12 +230,6 @@ public class ThingsboardInstallService {
|
|||||||
databaseEntitiesUpgradeService.upgradeDatabase("3.4.1");
|
databaseEntitiesUpgradeService.upgradeDatabase("3.4.1");
|
||||||
dataUpdateService.updateData("3.4.1");
|
dataUpdateService.updateData("3.4.1");
|
||||||
log.info("Updating system data...");
|
log.info("Updating system data...");
|
||||||
break;
|
|
||||||
case "3.4.2":
|
|
||||||
log.info("Upgrading ThingsBoard from version 3.4.2 to 3.5.0 ...");
|
|
||||||
databaseEntitiesUpgradeService.upgradeDatabase("3.4.2");
|
|
||||||
dataUpdateService.updateData("3.4.2");
|
|
||||||
log.info("Updating system data...");
|
|
||||||
systemDataLoaderService.updateSystemWidgets();
|
systemDataLoaderService.updateSystemWidgets();
|
||||||
break;
|
break;
|
||||||
//TODO update CacheCleanupService on the next version upgrade
|
//TODO update CacheCleanupService on the next version upgrade
|
||||||
|
|||||||
@ -654,18 +654,6 @@ public class SqlDatabaseUpgradeService implements DatabaseEntitiesUpgradeService
|
|||||||
log.error("Failed updating schema!!!", e);
|
log.error("Failed updating schema!!!", e);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "3.4.2":
|
|
||||||
try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) {
|
|
||||||
log.info("Updating schema ...");
|
|
||||||
schemaUpdateFile = Paths.get(installScripts.getDataDir(), "upgrade", "3.4.2", SCHEMA_UPDATE_SQL);
|
|
||||||
loadSql(schemaUpdateFile, conn);
|
|
||||||
log.info("Updating schema settings...");
|
|
||||||
conn.createStatement().execute("UPDATE tb_schema_settings SET schema_version = 3005000;");
|
|
||||||
log.info("Schema updated.");
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Failed updating schema!!!", e);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unable to upgrade SQL database, unsupported fromVersion: " + fromVersion);
|
throw new RuntimeException("Unable to upgrade SQL database, unsupported fromVersion: " + fromVersion);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,9 +51,11 @@ public class EdgeEventInsertRepository {
|
|||||||
protected void doInTransactionWithoutResult(TransactionStatus status) {
|
protected void doInTransactionWithoutResult(TransactionStatus status) {
|
||||||
jdbcTemplate.batchUpdate(INSERT, new BatchPreparedStatementSetter() {
|
jdbcTemplate.batchUpdate(INSERT, new BatchPreparedStatementSetter() {
|
||||||
@Override
|
@Override
|
||||||
|
|
||||||
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
||||||
EdgeEventEntity edgeEvent = entities.get(i);
|
EdgeEventEntity edgeEvent = entities.get(i);
|
||||||
ps.setObject(1, edgeEvent.getId());
|
ps.setObject(1, edgeEvent.getId());
|
||||||
|
|
||||||
ps.setLong(2, edgeEvent.getCreatedTime());
|
ps.setLong(2, edgeEvent.getCreatedTime());
|
||||||
ps.setObject(3, edgeEvent.getEdgeId());
|
ps.setObject(3, edgeEvent.getEdgeId());
|
||||||
ps.setString(4, edgeEvent.getEdgeEventType().name());
|
ps.setString(4, edgeEvent.getEdgeEventType().name());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user