[improve] upgrade script merge (#3987)

This commit is contained in:
Duansg
2026-01-19 23:47:32 +08:00
committed by GitHub
parent 6c0d5c0db4
commit 9600a5e56f
6 changed files with 1177 additions and 1238 deletions
@@ -72,7 +72,7 @@ void migrateHistoryTable(java.sql.Connection conn) throws java.sql.SQLException
try (java.sql.ResultSet rs = conn.getMetaData().getColumns(null, null, "HZB_HISTORY", "METRIC_LABELS")) {
if (rs.next()) metricLabelsExists = true;
}
if (monitorIdExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
if (!metricLabelsExists) {
@@ -92,3 +92,518 @@ void migrateHistoryTable(java.sql.Connection conn) throws java.sql.SQLException
$$;
CALL MIGRATE_HISTORY_TABLE();
DROP ALIAS MIGRATE_HISTORY_TABLE;
-- ========================================
-- hzb_alert_define_monitor_bind table
-- ========================================
CREATE ALIAS UPDATE_ALERT_DEFINE_MONITOR_BIND_INDEXES AS $$
void updateAlertDefineMonitorBindIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_ALERT_DEFINE_MONITOR_BIND", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_ALERT_DEFINE_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("INDEX_ALERT_DEFINE_MONITOR".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX INDEX_ALERT_DEFINE_MONITOR");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean alertDefineIdIndexExists = false;
boolean monitorIdIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_ALERT_DEFINE_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_ALERT_DEFINE_ID".equalsIgnoreCase(indexName)) {
alertDefineIdIndexExists = true;
}
if ("IDX_MONITOR_ID".equalsIgnoreCase(indexName)) {
monitorIdIndexExists = true;
}
}
}
if (!alertDefineIdIndexExists) {
stmt.execute("CREATE INDEX IDX_ALERT_DEFINE_ID ON HZB_ALERT_DEFINE_MONITOR_BIND(ALERT_DEFINE_ID)");
}
if (!monitorIdIndexExists) {
stmt.execute("CREATE INDEX IDX_MONITOR_ID ON HZB_ALERT_DEFINE_MONITOR_BIND(MONITOR_ID)");
}
}
}
}
$$;
CALL UPDATE_ALERT_DEFINE_MONITOR_BIND_INDEXES();
DROP ALIAS UPDATE_ALERT_DEFINE_MONITOR_BIND_INDEXES;
-- ========================================
-- hzb_collector_monitor_bind table
-- ========================================
CREATE ALIAS UPDATE_COLLECTOR_MONITOR_BIND_INDEXES AS $$
void updateCollectorMonitorBindIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_COLLECTOR_MONITOR_BIND", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_COLLECTOR_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("INDEX_COLLECTOR_MONITOR".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX INDEX_COLLECTOR_MONITOR");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean collectorIndexExists = false;
boolean monitorIdIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_COLLECTOR_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_COLLECTOR_MONITOR_COLLECTOR".equalsIgnoreCase(indexName)) {
collectorIndexExists = true;
}
if ("IDX_COLLECTOR_MONITOR_MONITOR_ID".equalsIgnoreCase(indexName)) {
monitorIdIndexExists = true;
}
}
}
if (!collectorIndexExists) {
stmt.execute("CREATE INDEX IDX_COLLECTOR_MONITOR_COLLECTOR ON HZB_COLLECTOR_MONITOR_BIND(COLLECTOR)");
}
if (!monitorIdIndexExists) {
stmt.execute("CREATE INDEX IDX_COLLECTOR_MONITOR_MONITOR_ID ON HZB_COLLECTOR_MONITOR_BIND(MONITOR_ID)");
}
}
}
}
$$;
CALL UPDATE_COLLECTOR_MONITOR_BIND_INDEXES();
DROP ALIAS UPDATE_COLLECTOR_MONITOR_BIND_INDEXES;
-- ========================================
-- hzb_monitor table
-- ========================================
CREATE ALIAS UPDATE_MONITOR_INDEXES AS $$
void updateMonitorIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_MONITOR", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_MONITOR", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("MONITOR_QUERY_INDEX".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX MONITOR_QUERY_INDEX");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean appIndexExists = false;
boolean instanceIndexExists = false;
boolean nameIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_MONITOR", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_HZB_MONITOR_APP".equalsIgnoreCase(indexName)) {
appIndexExists = true;
}
if ("IDX_HZB_MONITOR_INSTANCE".equalsIgnoreCase(indexName)) {
instanceIndexExists = true;
}
if ("IDX_HZB_MONITOR_NAME".equalsIgnoreCase(indexName)) {
nameIndexExists = true;
}
}
}
if (!appIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_MONITOR_APP ON HZB_MONITOR(APP)");
}
if (!instanceIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_MONITOR_INSTANCE ON HZB_MONITOR(INSTANCE)");
}
if (!nameIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_MONITOR_NAME ON HZB_MONITOR(NAME)");
}
}
}
}
$$;
CALL UPDATE_MONITOR_INDEXES();
DROP ALIAS UPDATE_MONITOR_INDEXES;
-- ========================================
-- hzb_monitor_bind table
-- ========================================
CREATE ALIAS UPDATE_MONITOR_BIND_INDEXES AS $$
void updateMonitorBindIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_MONITOR_BIND", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Create new index if not exist
boolean bindIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("INDEX_MONITOR_BIND".equalsIgnoreCase(indexName)) {
bindIndexExists = true;
}
}
}
if (!bindIndexExists) {
stmt.execute("CREATE INDEX INDEX_MONITOR_BIND ON HZB_MONITOR_BIND(BIZ_ID)");
}
}
}
}
$$;
CALL UPDATE_MONITOR_BIND_INDEXES();
DROP ALIAS UPDATE_MONITOR_BIND_INDEXES;
-- ========================================
-- hzb_status_page_incident_component_bind table
-- Special handling: component_id might have auto-created index from FK
-- ========================================
CREATE ALIAS UPDATE_STATUS_PAGE_INCIDENT_COMPONENT_BIND_INDEXES AS $$
void updateStatusPageIncidentComponentBindIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_STATUS_PAGE_INCIDENT_COMPONENT_BIND", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Check if component_id column already has any index
boolean hasComponentIdIndex = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_STATUS_PAGE_INCIDENT_COMPONENT_BIND", false, false)) {
while (rs.next()) {
String columnName = rs.getString("COLUMN_NAME");
if (columnName != null && "COMPONENT_ID".equalsIgnoreCase(columnName)) {
hasComponentIdIndex = true;
break;
}
}
}
// Create index on component_id only if no index exists on this column
if (!hasComponentIdIndex) {
stmt.execute("CREATE INDEX IDX_INCIDENT_COMPONENT_COMPONENT_ID ON HZB_STATUS_PAGE_INCIDENT_COMPONENT_BIND(COMPONENT_ID)");
}
}
}
}
$$;
CALL UPDATE_STATUS_PAGE_INCIDENT_COMPONENT_BIND_INDEXES();
DROP ALIAS UPDATE_STATUS_PAGE_INCIDENT_COMPONENT_BIND_INDEXES;
-- ========================================
-- hzb_push_metrics table
-- ========================================
CREATE ALIAS UPDATE_PUSH_METRICS_INDEXES AS $$
void updatePushMetricsIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_PUSH_METRICS", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PUSH_METRICS", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("PUSH_QUERY_INDEX".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX PUSH_QUERY_INDEX");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean monitorIdIndexExists = false;
boolean timeIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PUSH_METRICS", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_PUSH_METRICS_MONITOR_ID".equalsIgnoreCase(indexName)) {
monitorIdIndexExists = true;
}
if ("IDX_PUSH_METRICS_TIME".equalsIgnoreCase(indexName)) {
timeIndexExists = true;
}
}
}
if (!monitorIdIndexExists) {
stmt.execute("CREATE INDEX IDX_PUSH_METRICS_MONITOR_ID ON HZB_PUSH_METRICS(MONITOR_ID)");
}
if (!timeIndexExists) {
stmt.execute("CREATE INDEX IDX_PUSH_METRICS_TIME ON HZB_PUSH_METRICS(TIME)");
}
}
}
}
$$;
CALL UPDATE_PUSH_METRICS_INDEXES();
DROP ALIAS UPDATE_PUSH_METRICS_INDEXES;
-- ========================================
-- hzb_history table
-- ========================================
CREATE ALIAS UPDATE_HISTORY_INDEXES AS $$
void updateHistoryIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_HISTORY", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_HISTORY", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("HISTORY_QUERY_INDEX".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX HISTORY_QUERY_INDEX");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean instanceIndexExists = false;
boolean appIndexExists = false;
boolean metricsIndexExists = false;
boolean metricIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_HISTORY", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_HZB_HISTORY_INSTANCE".equalsIgnoreCase(indexName)) {
instanceIndexExists = true;
}
if ("IDX_HZB_HISTORY_APP".equalsIgnoreCase(indexName)) {
appIndexExists = true;
}
if ("IDX_HZB_HISTORY_METRICS".equalsIgnoreCase(indexName)) {
metricsIndexExists = true;
}
if ("IDX_HZB_HISTORY_METRIC".equalsIgnoreCase(indexName)) {
metricIndexExists = true;
}
}
}
if (!instanceIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_HISTORY_INSTANCE ON HZB_HISTORY(INSTANCE)");
}
if (!appIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_HISTORY_APP ON HZB_HISTORY(APP)");
}
if (!metricsIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_HISTORY_METRICS ON HZB_HISTORY(METRICS)");
}
if (!metricIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_HISTORY_METRIC ON HZB_HISTORY(METRIC)");
}
}
}
}
$$;
CALL UPDATE_HISTORY_INDEXES();
DROP ALIAS UPDATE_HISTORY_INDEXES;
-- ========================================
-- hzb_param table
-- ========================================
CREATE ALIAS UPDATE_PARAM_TABLE_INDEXES AS $$
void updateParamTableIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_PARAM", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PARAM", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_HZB_PARAM_MONITOR_ID".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX IDX_HZB_PARAM_MONITOR_ID");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new index if not exist
boolean indexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PARAM", false, false)) {
while (rs.next()) {
if ("IDX_HZB_PARAM_MONITOR_ID".equalsIgnoreCase(rs.getString("INDEX_NAME"))) {
indexExists = true;
break;
}
}
}
if (!indexExists) {
stmt.execute("CREATE INDEX IDX_HZB_PARAM_MONITOR_ID ON HZB_PARAM(MONITOR_ID)");
}
// Drop old unique constraint if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PARAM", true, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (indexName != null && indexName.equalsIgnoreCase("UK_HZB_PARAM_MONITOR_FIELD")) {
stmt.execute("DROP INDEX UK_HZB_PARAM_MONITOR_FIELD");
break;
}
}
} catch (Exception e) {
// Constraint may not exist, continue
}
// Create new unique constraint if not exist
boolean constraintExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PARAM", true, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (indexName != null && indexName.equalsIgnoreCase("UK_HZB_PARAM_MONITOR_FIELD")) {
constraintExists = true;
break;
}
}
}
if (!constraintExists) {
stmt.execute("CREATE UNIQUE INDEX UK_HZB_PARAM_MONITOR_FIELD ON HZB_PARAM(MONITOR_ID, FIELD)");
}
}
}
}
$$;
CALL UPDATE_PARAM_TABLE_INDEXES();
DROP ALIAS UPDATE_PARAM_TABLE_INDEXES;
-- ========================================
-- hzb_plugin_param table
-- ========================================
CREATE ALIAS UPDATE_PLUGIN_PARAM_TABLE_INDEXES AS $$
void updatePluginParamTableIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_PLUGIN_PARAM", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PLUGIN_PARAM", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_HZB_PLUGIN_PARAM_PLUGIN_METADATA_ID".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX IDX_HZB_PLUGIN_PARAM_PLUGIN_METADATA_ID");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new index if not exist
boolean indexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PLUGIN_PARAM", false, false)) {
while (rs.next()) {
if ("IDX_HZB_PLUGIN_PARAM_PLUGIN_METADATA_ID".equalsIgnoreCase(rs.getString("INDEX_NAME"))) {
indexExists = true;
break;
}
}
}
if (!indexExists) {
stmt.execute("CREATE INDEX IDX_HZB_PLUGIN_PARAM_PLUGIN_METADATA_ID ON HZB_PLUGIN_PARAM(PLUGIN_METADATA_ID)");
}
// Drop old unique constraint if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PLUGIN_PARAM", true, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (indexName != null && indexName.equalsIgnoreCase("UK_HZB_PLUGIN_PARAM_METADATA_FIELD")) {
stmt.execute("DROP INDEX UK_HZB_PLUGIN_PARAM_METADATA_FIELD");
break;
}
}
} catch (Exception e) {
// Constraint may not exist, continue
}
// Create new unique constraint if not exist
boolean constraintExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PLUGIN_PARAM", true, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (indexName != null && indexName.equalsIgnoreCase("UK_HZB_PLUGIN_PARAM_METADATA_FIELD")) {
constraintExists = true;
break;
}
}
}
if (!constraintExists) {
stmt.execute("CREATE UNIQUE INDEX UK_HZB_PLUGIN_PARAM_METADATA_FIELD ON HZB_PLUGIN_PARAM(PLUGIN_METADATA_ID, FIELD)");
}
}
}
}
$$;
CALL UPDATE_PLUGIN_PARAM_TABLE_INDEXES();
DROP ALIAS UPDATE_PLUGIN_PARAM_TABLE_INDEXES;
@@ -1,534 +0,0 @@
-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
-- to you 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.
-- Ensure every SQL can rerun without error
-- This migration updates indexes to match the entity annotations
-- ========================================
-- hzb_alert_define_monitor_bind table
-- ========================================
CREATE ALIAS UPDATE_ALERT_DEFINE_MONITOR_BIND_INDEXES AS $$
void updateAlertDefineMonitorBindIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_ALERT_DEFINE_MONITOR_BIND", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_ALERT_DEFINE_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("INDEX_ALERT_DEFINE_MONITOR".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX INDEX_ALERT_DEFINE_MONITOR");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean alertDefineIdIndexExists = false;
boolean monitorIdIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_ALERT_DEFINE_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_ALERT_DEFINE_ID".equalsIgnoreCase(indexName)) {
alertDefineIdIndexExists = true;
}
if ("IDX_MONITOR_ID".equalsIgnoreCase(indexName)) {
monitorIdIndexExists = true;
}
}
}
if (!alertDefineIdIndexExists) {
stmt.execute("CREATE INDEX IDX_ALERT_DEFINE_ID ON HZB_ALERT_DEFINE_MONITOR_BIND(ALERT_DEFINE_ID)");
}
if (!monitorIdIndexExists) {
stmt.execute("CREATE INDEX IDX_MONITOR_ID ON HZB_ALERT_DEFINE_MONITOR_BIND(MONITOR_ID)");
}
}
}
}
$$;
CALL UPDATE_ALERT_DEFINE_MONITOR_BIND_INDEXES();
DROP ALIAS UPDATE_ALERT_DEFINE_MONITOR_BIND_INDEXES;
-- ========================================
-- hzb_collector_monitor_bind table
-- ========================================
CREATE ALIAS UPDATE_COLLECTOR_MONITOR_BIND_INDEXES AS $$
void updateCollectorMonitorBindIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_COLLECTOR_MONITOR_BIND", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_COLLECTOR_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("INDEX_COLLECTOR_MONITOR".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX INDEX_COLLECTOR_MONITOR");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean collectorIndexExists = false;
boolean monitorIdIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_COLLECTOR_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_COLLECTOR_MONITOR_COLLECTOR".equalsIgnoreCase(indexName)) {
collectorIndexExists = true;
}
if ("IDX_COLLECTOR_MONITOR_MONITOR_ID".equalsIgnoreCase(indexName)) {
monitorIdIndexExists = true;
}
}
}
if (!collectorIndexExists) {
stmt.execute("CREATE INDEX IDX_COLLECTOR_MONITOR_COLLECTOR ON HZB_COLLECTOR_MONITOR_BIND(COLLECTOR)");
}
if (!monitorIdIndexExists) {
stmt.execute("CREATE INDEX IDX_COLLECTOR_MONITOR_MONITOR_ID ON HZB_COLLECTOR_MONITOR_BIND(MONITOR_ID)");
}
}
}
}
$$;
CALL UPDATE_COLLECTOR_MONITOR_BIND_INDEXES();
DROP ALIAS UPDATE_COLLECTOR_MONITOR_BIND_INDEXES;
-- ========================================
-- hzb_monitor table
-- ========================================
CREATE ALIAS UPDATE_MONITOR_INDEXES AS $$
void updateMonitorIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_MONITOR", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_MONITOR", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("MONITOR_QUERY_INDEX".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX MONITOR_QUERY_INDEX");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean appIndexExists = false;
boolean instanceIndexExists = false;
boolean nameIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_MONITOR", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_HZB_MONITOR_APP".equalsIgnoreCase(indexName)) {
appIndexExists = true;
}
if ("IDX_HZB_MONITOR_INSTANCE".equalsIgnoreCase(indexName)) {
instanceIndexExists = true;
}
if ("IDX_HZB_MONITOR_NAME".equalsIgnoreCase(indexName)) {
nameIndexExists = true;
}
}
}
if (!appIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_MONITOR_APP ON HZB_MONITOR(APP)");
}
if (!instanceIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_MONITOR_INSTANCE ON HZB_MONITOR(INSTANCE)");
}
if (!nameIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_MONITOR_NAME ON HZB_MONITOR(NAME)");
}
}
}
}
$$;
CALL UPDATE_MONITOR_INDEXES();
DROP ALIAS UPDATE_MONITOR_INDEXES;
-- ========================================
-- hzb_monitor_bind table
-- ========================================
CREATE ALIAS UPDATE_MONITOR_BIND_INDEXES AS $$
void updateMonitorBindIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_MONITOR_BIND", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Create new index if not exist
boolean bindIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_MONITOR_BIND", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("INDEX_MONITOR_BIND".equalsIgnoreCase(indexName)) {
bindIndexExists = true;
}
}
}
if (!bindIndexExists) {
stmt.execute("CREATE INDEX INDEX_MONITOR_BIND ON HZB_MONITOR_BIND(BIZ_ID)");
}
}
}
}
$$;
CALL UPDATE_MONITOR_BIND_INDEXES();
DROP ALIAS UPDATE_MONITOR_BIND_INDEXES;
-- ========================================
-- hzb_status_page_incident_component_bind table
-- Special handling: component_id might have auto-created index from FK
-- ========================================
CREATE ALIAS UPDATE_STATUS_PAGE_INCIDENT_COMPONENT_BIND_INDEXES AS $$
void updateStatusPageIncidentComponentBindIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_STATUS_PAGE_INCIDENT_COMPONENT_BIND", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Check if component_id column already has any index
boolean hasComponentIdIndex = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_STATUS_PAGE_INCIDENT_COMPONENT_BIND", false, false)) {
while (rs.next()) {
String columnName = rs.getString("COLUMN_NAME");
if (columnName != null && "COMPONENT_ID".equalsIgnoreCase(columnName)) {
hasComponentIdIndex = true;
break;
}
}
}
// Create index on component_id only if no index exists on this column
if (!hasComponentIdIndex) {
stmt.execute("CREATE INDEX IDX_INCIDENT_COMPONENT_COMPONENT_ID ON HZB_STATUS_PAGE_INCIDENT_COMPONENT_BIND(COMPONENT_ID)");
}
}
}
}
$$;
CALL UPDATE_STATUS_PAGE_INCIDENT_COMPONENT_BIND_INDEXES();
DROP ALIAS UPDATE_STATUS_PAGE_INCIDENT_COMPONENT_BIND_INDEXES;
-- ========================================
-- hzb_push_metrics table
-- ========================================
CREATE ALIAS UPDATE_PUSH_METRICS_INDEXES AS $$
void updatePushMetricsIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_PUSH_METRICS", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PUSH_METRICS", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("PUSH_QUERY_INDEX".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX PUSH_QUERY_INDEX");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean monitorIdIndexExists = false;
boolean timeIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PUSH_METRICS", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_PUSH_METRICS_MONITOR_ID".equalsIgnoreCase(indexName)) {
monitorIdIndexExists = true;
}
if ("IDX_PUSH_METRICS_TIME".equalsIgnoreCase(indexName)) {
timeIndexExists = true;
}
}
}
if (!monitorIdIndexExists) {
stmt.execute("CREATE INDEX IDX_PUSH_METRICS_MONITOR_ID ON HZB_PUSH_METRICS(MONITOR_ID)");
}
if (!timeIndexExists) {
stmt.execute("CREATE INDEX IDX_PUSH_METRICS_TIME ON HZB_PUSH_METRICS(TIME)");
}
}
}
}
$$;
CALL UPDATE_PUSH_METRICS_INDEXES();
DROP ALIAS UPDATE_PUSH_METRICS_INDEXES;
-- ========================================
-- hzb_history table
-- ========================================
CREATE ALIAS UPDATE_HISTORY_INDEXES AS $$
void updateHistoryIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_HISTORY", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_HISTORY", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("HISTORY_QUERY_INDEX".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX HISTORY_QUERY_INDEX");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new indexes if not exist
boolean instanceIndexExists = false;
boolean appIndexExists = false;
boolean metricsIndexExists = false;
boolean metricIndexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_HISTORY", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_HZB_HISTORY_INSTANCE".equalsIgnoreCase(indexName)) {
instanceIndexExists = true;
}
if ("IDX_HZB_HISTORY_APP".equalsIgnoreCase(indexName)) {
appIndexExists = true;
}
if ("IDX_HZB_HISTORY_METRICS".equalsIgnoreCase(indexName)) {
metricsIndexExists = true;
}
if ("IDX_HZB_HISTORY_METRIC".equalsIgnoreCase(indexName)) {
metricIndexExists = true;
}
}
}
if (!instanceIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_HISTORY_INSTANCE ON HZB_HISTORY(INSTANCE)");
}
if (!appIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_HISTORY_APP ON HZB_HISTORY(APP)");
}
if (!metricsIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_HISTORY_METRICS ON HZB_HISTORY(METRICS)");
}
if (!metricIndexExists) {
stmt.execute("CREATE INDEX IDX_HZB_HISTORY_METRIC ON HZB_HISTORY(METRIC)");
}
}
}
}
$$;
CALL UPDATE_HISTORY_INDEXES();
DROP ALIAS UPDATE_HISTORY_INDEXES;
-- ========================================
-- hzb_param table
-- ========================================
CREATE ALIAS UPDATE_PARAM_TABLE_INDEXES AS $$
void updateParamTableIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_PARAM", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PARAM", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_HZB_PARAM_MONITOR_ID".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX IDX_HZB_PARAM_MONITOR_ID");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new index if not exist
boolean indexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PARAM", false, false)) {
while (rs.next()) {
if ("IDX_HZB_PARAM_MONITOR_ID".equalsIgnoreCase(rs.getString("INDEX_NAME"))) {
indexExists = true;
break;
}
}
}
if (!indexExists) {
stmt.execute("CREATE INDEX IDX_HZB_PARAM_MONITOR_ID ON HZB_PARAM(MONITOR_ID)");
}
// Drop old unique constraint if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PARAM", true, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (indexName != null && indexName.equalsIgnoreCase("UK_HZB_PARAM_MONITOR_FIELD")) {
stmt.execute("DROP INDEX UK_HZB_PARAM_MONITOR_FIELD");
break;
}
}
} catch (Exception e) {
// Constraint may not exist, continue
}
// Create new unique constraint if not exist
boolean constraintExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PARAM", true, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (indexName != null && indexName.equalsIgnoreCase("UK_HZB_PARAM_MONITOR_FIELD")) {
constraintExists = true;
break;
}
}
}
if (!constraintExists) {
stmt.execute("CREATE UNIQUE INDEX UK_HZB_PARAM_MONITOR_FIELD ON HZB_PARAM(MONITOR_ID, FIELD)");
}
}
}
}
$$;
CALL UPDATE_PARAM_TABLE_INDEXES();
DROP ALIAS UPDATE_PARAM_TABLE_INDEXES;
-- ========================================
-- hzb_plugin_param table
-- ========================================
CREATE ALIAS UPDATE_PLUGIN_PARAM_TABLE_INDEXES AS $$
void updatePluginParamTableIndexes(java.sql.Connection conn) throws java.sql.SQLException {
boolean tableExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getTables(null, null, "HZB_PLUGIN_PARAM", null)) {
if (rs.next()) tableExists = true;
}
if (tableExists) {
try (java.sql.Statement stmt = conn.createStatement()) {
// Drop old index if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PLUGIN_PARAM", false, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if ("IDX_HZB_PLUGIN_PARAM_PLUGIN_METADATA_ID".equalsIgnoreCase(indexName)) {
stmt.execute("DROP INDEX IDX_HZB_PLUGIN_PARAM_PLUGIN_METADATA_ID");
break;
}
}
} catch (Exception e) {
// Index may not exist, continue
}
// Create new index if not exist
boolean indexExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PLUGIN_PARAM", false, false)) {
while (rs.next()) {
if ("IDX_HZB_PLUGIN_PARAM_PLUGIN_METADATA_ID".equalsIgnoreCase(rs.getString("INDEX_NAME"))) {
indexExists = true;
break;
}
}
}
if (!indexExists) {
stmt.execute("CREATE INDEX IDX_HZB_PLUGIN_PARAM_PLUGIN_METADATA_ID ON HZB_PLUGIN_PARAM(PLUGIN_METADATA_ID)");
}
// Drop old unique constraint if exists
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PLUGIN_PARAM", true, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (indexName != null && indexName.equalsIgnoreCase("UK_HZB_PLUGIN_PARAM_METADATA_FIELD")) {
stmt.execute("DROP INDEX UK_HZB_PLUGIN_PARAM_METADATA_FIELD");
break;
}
}
} catch (Exception e) {
// Constraint may not exist, continue
}
// Create new unique constraint if not exist
boolean constraintExists = false;
try (java.sql.ResultSet rs = conn.getMetaData().getIndexInfo(null, null, "HZB_PLUGIN_PARAM", true, false)) {
while (rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (indexName != null && indexName.equalsIgnoreCase("UK_HZB_PLUGIN_PARAM_METADATA_FIELD")) {
constraintExists = true;
break;
}
}
}
if (!constraintExists) {
stmt.execute("CREATE UNIQUE INDEX UK_HZB_PLUGIN_PARAM_METADATA_FIELD ON HZB_PLUGIN_PARAM(PLUGIN_METADATA_ID, FIELD)");
}
}
}
}
$$;
CALL UPDATE_PLUGIN_PARAM_TABLE_INDEXES();
DROP ALIAS UPDATE_PLUGIN_PARAM_TABLE_INDEXES;
@@ -91,7 +91,7 @@ BEGIN
SELECT COUNT(*) INTO monitor_id_exists FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_history' AND COLUMN_NAME = 'monitor_id';
SELECT COUNT(*) INTO metric_labels_exists FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_history' AND COLUMN_NAME = 'metric_labels';
IF monitor_id_exists > 0 THEN
IF metric_labels_exists = 0 THEN
SET @sql_rename = 'ALTER TABLE hzb_history CHANGE instance metric_labels VARCHAR(5000)';
@@ -111,9 +111,9 @@ BEGIN
EXECUTE stmt_resize;
DEALLOCATE PREPARE stmt_resize;
END IF;
UPDATE hzb_history h JOIN hzb_monitor m ON h.monitor_id = m.id SET h.instance = m.instance;
SET @sql_drop = 'ALTER TABLE hzb_history DROP COLUMN monitor_id';
PREPARE stmt_drop FROM @sql_drop;
EXECUTE stmt_drop;
@@ -124,4 +124,433 @@ DELIMITER ;
CALL MigrateHistoryTable();
DROP PROCEDURE IF EXISTS MigrateHistoryTable;
-- ========================================
-- hzb_alert_define_monitor_bind table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateAlertDefineMonitorBindIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_alert_define_monitor_bind';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_alert_define_monitor_bind'
AND INDEX_NAME = 'index_alert_define_monitor') THEN
SET @drop_sql = 'DROP INDEX index_alert_define_monitor ON hzb_alert_define_monitor_bind';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_alert_define_monitor_bind'
AND INDEX_NAME = 'idx_alert_define_id') THEN
CREATE INDEX idx_alert_define_id ON hzb_alert_define_monitor_bind(alert_define_id);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_alert_define_monitor_bind'
AND INDEX_NAME = 'idx_monitor_id') THEN
CREATE INDEX idx_monitor_id ON hzb_alert_define_monitor_bind(monitor_id);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateAlertDefineMonitorBindIndexes();
DROP PROCEDURE IF EXISTS UpdateAlertDefineMonitorBindIndexes;
-- ========================================
-- hzb_collector_monitor_bind table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateCollectorMonitorBindIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_collector_monitor_bind';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_collector_monitor_bind'
AND INDEX_NAME = 'index_collector_monitor') THEN
SET @drop_sql = 'DROP INDEX index_collector_monitor ON hzb_collector_monitor_bind';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_collector_monitor_bind'
AND INDEX_NAME = 'idx_collector_monitor_collector') THEN
CREATE INDEX idx_collector_monitor_collector ON hzb_collector_monitor_bind(collector);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_collector_monitor_bind'
AND INDEX_NAME = 'idx_collector_monitor_monitor_id') THEN
CREATE INDEX idx_collector_monitor_monitor_id ON hzb_collector_monitor_bind(monitor_id);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateCollectorMonitorBindIndexes();
DROP PROCEDURE IF EXISTS UpdateCollectorMonitorBindIndexes;
-- ========================================
-- hzb_monitor table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateMonitorIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_monitor';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor'
AND INDEX_NAME = 'monitor_query_index') THEN
SET @drop_sql = 'DROP INDEX monitor_query_index ON hzb_monitor';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor'
AND INDEX_NAME = 'idx_hzb_monitor_app') THEN
CREATE INDEX idx_hzb_monitor_app ON hzb_monitor(app);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor'
AND INDEX_NAME = 'idx_hzb_monitor_instance') THEN
CREATE INDEX idx_hzb_monitor_instance ON hzb_monitor(instance);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor'
AND INDEX_NAME = 'idx_hzb_monitor_name') THEN
CREATE INDEX idx_hzb_monitor_name ON hzb_monitor(name);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateMonitorIndexes();
DROP PROCEDURE IF EXISTS UpdateMonitorIndexes;
-- ========================================
-- hzb_monitor_bind table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateMonitorBindIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_monitor_bind';
IF table_exists = 1 THEN
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor_bind'
AND INDEX_NAME = 'index_monitor_bind') THEN
CREATE INDEX index_monitor_bind ON hzb_monitor_bind(biz_id);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateMonitorBindIndexes();
DROP PROCEDURE IF EXISTS UpdateMonitorBindIndexes;
-- ========================================
-- hzb_status_page_incident_component_bind table
-- Special handling: component_id might have auto-created index from FK
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateStatusPageIncidentComponentBindIndexes()
BEGIN
DECLARE table_exists INT;
DECLARE component_id_has_index INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_status_page_incident_component_bind';
IF table_exists = 1 THEN
-- Check if component_id column already has any index (including auto-created by FK)
SELECT COUNT(*) INTO component_id_has_index
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_status_page_incident_component_bind'
AND COLUMN_NAME = 'component_id'
AND INDEX_NAME != 'PRIMARY';
-- Create index on component_id only if no index exists on this column
IF component_id_has_index = 0 THEN
CREATE INDEX idx_incident_component_component_id ON hzb_status_page_incident_component_bind(component_id);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateStatusPageIncidentComponentBindIndexes();
DROP PROCEDURE IF EXISTS UpdateStatusPageIncidentComponentBindIndexes;
-- ========================================
-- hzb_push_metrics table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdatePushMetricsIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_push_metrics';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_push_metrics'
AND INDEX_NAME = 'push_query_index') THEN
SET @drop_sql = 'DROP INDEX push_query_index ON hzb_push_metrics';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_push_metrics'
AND INDEX_NAME = 'idx_push_metrics_monitor_id') THEN
CREATE INDEX idx_push_metrics_monitor_id ON hzb_push_metrics(monitor_id);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_push_metrics'
AND INDEX_NAME = 'idx_push_metrics_time') THEN
CREATE INDEX idx_push_metrics_time ON hzb_push_metrics(time);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdatePushMetricsIndexes();
DROP PROCEDURE IF EXISTS UpdatePushMetricsIndexes;
-- ========================================
-- hzb_history table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateHistoryIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_history';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'history_query_index') THEN
SET @drop_sql = 'DROP INDEX history_query_index ON hzb_history';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'idx_hzb_history_instance') THEN
CREATE INDEX idx_hzb_history_instance ON hzb_history(instance);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'idx_hzb_history_app') THEN
CREATE INDEX idx_hzb_history_app ON hzb_history(app);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'idx_hzb_history_metrics') THEN
CREATE INDEX idx_hzb_history_metrics ON hzb_history(metrics);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'idx_hzb_history_metric') THEN
CREATE INDEX idx_hzb_history_metric ON hzb_history(metric);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateHistoryIndexes();
DROP PROCEDURE IF EXISTS UpdateHistoryIndexes;
-- ========================================
-- hzb_param table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateParamTableIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_param';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_param'
AND INDEX_NAME = 'idx_hzb_param_monitor_id') THEN
SET @drop_sql = 'DROP INDEX idx_hzb_param_monitor_id ON hzb_param';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_param'
AND INDEX_NAME = 'idx_hzb_param_monitor_id') THEN
CREATE INDEX idx_hzb_param_monitor_id ON hzb_param(monitor_id);
END IF;
-- Drop old unique constraint if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_param'
AND CONSTRAINT_TYPE = 'UNIQUE'
AND CONSTRAINT_NAME = 'uk_hzb_param_monitor_field') THEN
SET @drop_sql = 'ALTER TABLE hzb_param DROP INDEX uk_hzb_param_monitor_field';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new unique constraint if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_param'
AND CONSTRAINT_TYPE = 'UNIQUE'
AND CONSTRAINT_NAME = 'uk_hzb_param_monitor_field') THEN
ALTER TABLE hzb_param
ADD CONSTRAINT uk_hzb_param_monitor_field
UNIQUE (monitor_id, field);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateParamTableIndexes();
DROP PROCEDURE IF EXISTS UpdateParamTableIndexes;
-- ========================================
-- hzb_plugin_param table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdatePluginParamTableIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_plugin_param';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_plugin_param'
AND INDEX_NAME = 'idx_hzb_plugin_param_plugin_metadata_id') THEN
SET @drop_sql = 'DROP INDEX idx_hzb_plugin_param_plugin_metadata_id ON hzb_plugin_param';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_plugin_param'
AND INDEX_NAME = 'idx_hzb_plugin_param_plugin_metadata_id') THEN
CREATE INDEX idx_hzb_plugin_param_plugin_metadata_id ON hzb_plugin_param(plugin_metadata_id);
END IF;
-- Drop old unique constraint if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_plugin_param'
AND CONSTRAINT_TYPE = 'UNIQUE'
AND CONSTRAINT_NAME = 'uk_hzb_plugin_param_metadata_field') THEN
SET @drop_sql = 'ALTER TABLE hzb_plugin_param DROP INDEX uk_hzb_plugin_param_metadata_field';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new unique constraint if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_plugin_param'
AND CONSTRAINT_TYPE = 'UNIQUE'
AND CONSTRAINT_NAME = 'uk_hzb_plugin_param_metadata_field') THEN
ALTER TABLE hzb_plugin_param
ADD CONSTRAINT uk_hzb_plugin_param_metadata_field
UNIQUE (plugin_metadata_id, field);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdatePluginParamTableIndexes();
DROP PROCEDURE IF EXISTS UpdatePluginParamTableIndexes;
COMMIT;
@@ -1,450 +0,0 @@
-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
-- to you 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.
-- Ensure every SQL can rerun without error
-- This migration updates indexes to match the entity annotations
-- ========================================
-- hzb_alert_define_monitor_bind table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateAlertDefineMonitorBindIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_alert_define_monitor_bind';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_alert_define_monitor_bind'
AND INDEX_NAME = 'index_alert_define_monitor') THEN
SET @drop_sql = 'DROP INDEX index_alert_define_monitor ON hzb_alert_define_monitor_bind';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_alert_define_monitor_bind'
AND INDEX_NAME = 'idx_alert_define_id') THEN
CREATE INDEX idx_alert_define_id ON hzb_alert_define_monitor_bind(alert_define_id);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_alert_define_monitor_bind'
AND INDEX_NAME = 'idx_monitor_id') THEN
CREATE INDEX idx_monitor_id ON hzb_alert_define_monitor_bind(monitor_id);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateAlertDefineMonitorBindIndexes();
DROP PROCEDURE IF EXISTS UpdateAlertDefineMonitorBindIndexes;
-- ========================================
-- hzb_collector_monitor_bind table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateCollectorMonitorBindIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_collector_monitor_bind';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_collector_monitor_bind'
AND INDEX_NAME = 'index_collector_monitor') THEN
SET @drop_sql = 'DROP INDEX index_collector_monitor ON hzb_collector_monitor_bind';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_collector_monitor_bind'
AND INDEX_NAME = 'idx_collector_monitor_collector') THEN
CREATE INDEX idx_collector_monitor_collector ON hzb_collector_monitor_bind(collector);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_collector_monitor_bind'
AND INDEX_NAME = 'idx_collector_monitor_monitor_id') THEN
CREATE INDEX idx_collector_monitor_monitor_id ON hzb_collector_monitor_bind(monitor_id);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateCollectorMonitorBindIndexes();
DROP PROCEDURE IF EXISTS UpdateCollectorMonitorBindIndexes;
-- ========================================
-- hzb_monitor table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateMonitorIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_monitor';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor'
AND INDEX_NAME = 'monitor_query_index') THEN
SET @drop_sql = 'DROP INDEX monitor_query_index ON hzb_monitor';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor'
AND INDEX_NAME = 'idx_hzb_monitor_app') THEN
CREATE INDEX idx_hzb_monitor_app ON hzb_monitor(app);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor'
AND INDEX_NAME = 'idx_hzb_monitor_instance') THEN
CREATE INDEX idx_hzb_monitor_instance ON hzb_monitor(instance);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor'
AND INDEX_NAME = 'idx_hzb_monitor_name') THEN
CREATE INDEX idx_hzb_monitor_name ON hzb_monitor(name);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateMonitorIndexes();
DROP PROCEDURE IF EXISTS UpdateMonitorIndexes;
-- ========================================
-- hzb_monitor_bind table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateMonitorBindIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_monitor_bind';
IF table_exists = 1 THEN
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_monitor_bind'
AND INDEX_NAME = 'index_monitor_bind') THEN
CREATE INDEX index_monitor_bind ON hzb_monitor_bind(biz_id);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateMonitorBindIndexes();
DROP PROCEDURE IF EXISTS UpdateMonitorBindIndexes;
-- ========================================
-- hzb_status_page_incident_component_bind table
-- Special handling: component_id might have auto-created index from FK
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateStatusPageIncidentComponentBindIndexes()
BEGIN
DECLARE table_exists INT;
DECLARE component_id_has_index INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_status_page_incident_component_bind';
IF table_exists = 1 THEN
-- Check if component_id column already has any index (including auto-created by FK)
SELECT COUNT(*) INTO component_id_has_index
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_status_page_incident_component_bind'
AND COLUMN_NAME = 'component_id'
AND INDEX_NAME != 'PRIMARY';
-- Create index on component_id only if no index exists on this column
IF component_id_has_index = 0 THEN
CREATE INDEX idx_incident_component_component_id ON hzb_status_page_incident_component_bind(component_id);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateStatusPageIncidentComponentBindIndexes();
DROP PROCEDURE IF EXISTS UpdateStatusPageIncidentComponentBindIndexes;
-- ========================================
-- hzb_push_metrics table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdatePushMetricsIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_push_metrics';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_push_metrics'
AND INDEX_NAME = 'push_query_index') THEN
SET @drop_sql = 'DROP INDEX push_query_index ON hzb_push_metrics';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_push_metrics'
AND INDEX_NAME = 'idx_push_metrics_monitor_id') THEN
CREATE INDEX idx_push_metrics_monitor_id ON hzb_push_metrics(monitor_id);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_push_metrics'
AND INDEX_NAME = 'idx_push_metrics_time') THEN
CREATE INDEX idx_push_metrics_time ON hzb_push_metrics(time);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdatePushMetricsIndexes();
DROP PROCEDURE IF EXISTS UpdatePushMetricsIndexes;
-- ========================================
-- hzb_history table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateHistoryIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_history';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'history_query_index') THEN
SET @drop_sql = 'DROP INDEX history_query_index ON hzb_history';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'idx_hzb_history_instance') THEN
CREATE INDEX idx_hzb_history_instance ON hzb_history(instance);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'idx_hzb_history_app') THEN
CREATE INDEX idx_hzb_history_app ON hzb_history(app);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'idx_hzb_history_metrics') THEN
CREATE INDEX idx_hzb_history_metrics ON hzb_history(metrics);
END IF;
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_history'
AND INDEX_NAME = 'idx_hzb_history_metric') THEN
CREATE INDEX idx_hzb_history_metric ON hzb_history(metric);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateHistoryIndexes();
DROP PROCEDURE IF EXISTS UpdateHistoryIndexes;
-- ========================================
-- hzb_param table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdateParamTableIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_param';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_param'
AND INDEX_NAME = 'idx_hzb_param_monitor_id') THEN
SET @drop_sql = 'DROP INDEX idx_hzb_param_monitor_id ON hzb_param';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_param'
AND INDEX_NAME = 'idx_hzb_param_monitor_id') THEN
CREATE INDEX idx_hzb_param_monitor_id ON hzb_param(monitor_id);
END IF;
-- Drop old unique constraint if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_param'
AND CONSTRAINT_TYPE = 'UNIQUE'
AND CONSTRAINT_NAME = 'uk_hzb_param_monitor_field') THEN
SET @drop_sql = 'ALTER TABLE hzb_param DROP INDEX uk_hzb_param_monitor_field';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new unique constraint if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_param'
AND CONSTRAINT_TYPE = 'UNIQUE'
AND CONSTRAINT_NAME = 'uk_hzb_param_monitor_field') THEN
ALTER TABLE hzb_param
ADD CONSTRAINT uk_hzb_param_monitor_field
UNIQUE (monitor_id, field);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdateParamTableIndexes();
DROP PROCEDURE IF EXISTS UpdateParamTableIndexes;
-- ========================================
-- hzb_plugin_param table
-- ========================================
DELIMITER //
CREATE PROCEDURE UpdatePluginParamTableIndexes()
BEGIN
DECLARE table_exists INT;
SELECT COUNT(*) INTO table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hzb_plugin_param';
IF table_exists = 1 THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_plugin_param'
AND INDEX_NAME = 'idx_hzb_plugin_param_plugin_metadata_id') THEN
SET @drop_sql = 'DROP INDEX idx_hzb_plugin_param_plugin_metadata_id ON hzb_plugin_param';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_plugin_param'
AND INDEX_NAME = 'idx_hzb_plugin_param_plugin_metadata_id') THEN
CREATE INDEX idx_hzb_plugin_param_plugin_metadata_id ON hzb_plugin_param(plugin_metadata_id);
END IF;
-- Drop old unique constraint if exists
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_plugin_param'
AND CONSTRAINT_TYPE = 'UNIQUE'
AND CONSTRAINT_NAME = 'uk_hzb_plugin_param_metadata_field') THEN
SET @drop_sql = 'ALTER TABLE hzb_plugin_param DROP INDEX uk_hzb_plugin_param_metadata_field';
PREPARE stmt FROM @drop_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- Create new unique constraint if not exist
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'hzb_plugin_param'
AND CONSTRAINT_TYPE = 'UNIQUE'
AND CONSTRAINT_NAME = 'uk_hzb_plugin_param_metadata_field') THEN
ALTER TABLE hzb_plugin_param
ADD CONSTRAINT uk_hzb_plugin_param_metadata_field
UNIQUE (plugin_metadata_id, field);
END IF;
END IF;
END //
DELIMITER ;
CALL UpdatePluginParamTableIndexes();
DROP PROCEDURE IF EXISTS UpdatePluginParamTableIndexes;
COMMIT;
@@ -62,14 +62,240 @@ BEGIN
UPDATE hzb_history SET instance = NULL;
ALTER TABLE hzb_history ALTER COLUMN instance TYPE VARCHAR(255);
END IF;
UPDATE hzb_history h
SET instance = m.instance
FROM hzb_monitor m
WHERE h.monitor_id = m.id;
ALTER TABLE hzb_history DROP COLUMN monitor_id;
END IF;
END $$;
commit;
-- ========================================
-- hzb_alert_define_monitor_bind table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_alert_define_monitor_bind') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_alert_define_monitor_bind' AND indexname = 'index_alert_define_monitor') THEN
DROP INDEX IF EXISTS index_alert_define_monitor;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_alert_define_monitor_bind' AND indexname = 'idx_alert_define_id') THEN
CREATE INDEX idx_alert_define_id ON hzb_alert_define_monitor_bind(alert_define_id);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_alert_define_monitor_bind' AND indexname = 'idx_monitor_id') THEN
CREATE INDEX idx_monitor_id ON hzb_alert_define_monitor_bind(monitor_id);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_collector_monitor_bind table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_collector_monitor_bind') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_collector_monitor_bind' AND indexname = 'index_collector_monitor') THEN
DROP INDEX IF EXISTS index_collector_monitor;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_collector_monitor_bind' AND indexname = 'idx_collector_monitor_collector') THEN
CREATE INDEX idx_collector_monitor_collector ON hzb_collector_monitor_bind(collector);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_collector_monitor_bind' AND indexname = 'idx_collector_monitor_monitor_id') THEN
CREATE INDEX idx_collector_monitor_monitor_id ON hzb_collector_monitor_bind(monitor_id);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_monitor table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_monitor') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor' AND indexname = 'monitor_query_index') THEN
DROP INDEX IF EXISTS monitor_query_index;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor' AND indexname = 'idx_hzb_monitor_app') THEN
CREATE INDEX idx_hzb_monitor_app ON hzb_monitor(app);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor' AND indexname = 'idx_hzb_monitor_instance') THEN
CREATE INDEX idx_hzb_monitor_instance ON hzb_monitor(instance);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor' AND indexname = 'idx_hzb_monitor_name') THEN
CREATE INDEX idx_hzb_monitor_name ON hzb_monitor(name);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_monitor_bind table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_monitor_bind') THEN
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor_bind' AND indexname = 'index_monitor_bind') THEN
CREATE INDEX index_monitor_bind ON hzb_monitor_bind(biz_id);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_status_page_incident_component_bind table
-- Special handling: component_id might have auto-created index from FK
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_status_page_incident_component_bind') THEN
-- Check if component_id column already has any index, create if not
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE tablename = 'hzb_status_page_incident_component_bind'
AND indexdef LIKE '%component_id%'
AND indexname NOT LIKE '%_pkey'
) THEN
CREATE INDEX idx_incident_component_component_id ON hzb_status_page_incident_component_bind(component_id);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_push_metrics table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_push_metrics') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_push_metrics' AND indexname = 'push_query_index') THEN
DROP INDEX IF EXISTS push_query_index;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_push_metrics' AND indexname = 'idx_push_metrics_monitor_id') THEN
CREATE INDEX idx_push_metrics_monitor_id ON hzb_push_metrics(monitor_id);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_push_metrics' AND indexname = 'idx_push_metrics_time') THEN
CREATE INDEX idx_push_metrics_time ON hzb_push_metrics(time);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_history table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_history') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'history_query_index') THEN
DROP INDEX IF EXISTS history_query_index;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'idx_hzb_history_instance') THEN
CREATE INDEX idx_hzb_history_instance ON hzb_history(instance);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'idx_hzb_history_app') THEN
CREATE INDEX idx_hzb_history_app ON hzb_history(app);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'idx_hzb_history_metrics') THEN
CREATE INDEX idx_hzb_history_metrics ON hzb_history(metrics);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'idx_hzb_history_metric') THEN
CREATE INDEX idx_hzb_history_metric ON hzb_history(metric);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_param table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_param') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_param' AND indexname = 'idx_hzb_param_monitor_id') THEN
DROP INDEX IF EXISTS idx_hzb_param_monitor_id;
END IF;
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_param' AND indexname = 'idx_hzb_param_monitor_id') THEN
CREATE INDEX idx_hzb_param_monitor_id ON hzb_param(monitor_id);
END IF;
-- Drop old unique constraint if exists
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'hzb_param'
AND constraint_type = 'UNIQUE'
AND constraint_name = 'uk_hzb_param_monitor_field') THEN
ALTER TABLE hzb_param DROP CONSTRAINT IF EXISTS uk_hzb_param_monitor_field;
END IF;
-- Create new unique constraint if not exist
IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'hzb_param'
AND constraint_type = 'UNIQUE'
AND constraint_name = 'uk_hzb_param_monitor_field') THEN
ALTER TABLE hzb_param
ADD CONSTRAINT uk_hzb_param_monitor_field
UNIQUE (monitor_id, field);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_plugin_param table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_plugin_param') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_plugin_param' AND indexname = 'idx_hzb_plugin_param_plugin_metadata_id') THEN
DROP INDEX IF EXISTS idx_hzb_plugin_param_plugin_metadata_id;
END IF;
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_plugin_param' AND indexname = 'idx_hzb_plugin_param_plugin_metadata_id') THEN
CREATE INDEX idx_hzb_plugin_param_plugin_metadata_id ON hzb_plugin_param(plugin_metadata_id);
END IF;
-- Drop old unique constraint if exists
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'hzb_plugin_param'
AND constraint_type = 'UNIQUE'
AND constraint_name = 'uk_hzb_plugin_param_metadata_field') THEN
ALTER TABLE hzb_plugin_param DROP CONSTRAINT IF EXISTS uk_hzb_plugin_param_metadata_field;
END IF;
-- Create new unique constraint if not exist
IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'hzb_plugin_param'
AND constraint_type = 'UNIQUE'
AND constraint_name = 'uk_hzb_plugin_param_metadata_field') THEN
ALTER TABLE hzb_plugin_param
ADD CONSTRAINT uk_hzb_plugin_param_metadata_field
UNIQUE (plugin_metadata_id, field);
END IF;
END IF;
END $$;
COMMIT;
@@ -1,247 +0,0 @@
-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
-- to you 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.
-- Ensure every SQL can rerun without error
-- This migration updates indexes to match the entity annotations
-- ========================================
-- hzb_alert_define_monitor_bind table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_alert_define_monitor_bind') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_alert_define_monitor_bind' AND indexname = 'index_alert_define_monitor') THEN
DROP INDEX IF EXISTS index_alert_define_monitor;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_alert_define_monitor_bind' AND indexname = 'idx_alert_define_id') THEN
CREATE INDEX idx_alert_define_id ON hzb_alert_define_monitor_bind(alert_define_id);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_alert_define_monitor_bind' AND indexname = 'idx_monitor_id') THEN
CREATE INDEX idx_monitor_id ON hzb_alert_define_monitor_bind(monitor_id);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_collector_monitor_bind table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_collector_monitor_bind') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_collector_monitor_bind' AND indexname = 'index_collector_monitor') THEN
DROP INDEX IF EXISTS index_collector_monitor;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_collector_monitor_bind' AND indexname = 'idx_collector_monitor_collector') THEN
CREATE INDEX idx_collector_monitor_collector ON hzb_collector_monitor_bind(collector);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_collector_monitor_bind' AND indexname = 'idx_collector_monitor_monitor_id') THEN
CREATE INDEX idx_collector_monitor_monitor_id ON hzb_collector_monitor_bind(monitor_id);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_monitor table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_monitor') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor' AND indexname = 'monitor_query_index') THEN
DROP INDEX IF EXISTS monitor_query_index;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor' AND indexname = 'idx_hzb_monitor_app') THEN
CREATE INDEX idx_hzb_monitor_app ON hzb_monitor(app);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor' AND indexname = 'idx_hzb_monitor_instance') THEN
CREATE INDEX idx_hzb_monitor_instance ON hzb_monitor(instance);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor' AND indexname = 'idx_hzb_monitor_name') THEN
CREATE INDEX idx_hzb_monitor_name ON hzb_monitor(name);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_monitor_bind table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_monitor_bind') THEN
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_monitor_bind' AND indexname = 'index_monitor_bind') THEN
CREATE INDEX index_monitor_bind ON hzb_monitor_bind(biz_id);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_status_page_incident_component_bind table
-- Special handling: component_id might have auto-created index from FK
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_status_page_incident_component_bind') THEN
-- Check if component_id column already has any index, create if not
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE tablename = 'hzb_status_page_incident_component_bind'
AND indexdef LIKE '%component_id%'
AND indexname NOT LIKE '%_pkey'
) THEN
CREATE INDEX idx_incident_component_component_id ON hzb_status_page_incident_component_bind(component_id);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_push_metrics table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_push_metrics') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_push_metrics' AND indexname = 'push_query_index') THEN
DROP INDEX IF EXISTS push_query_index;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_push_metrics' AND indexname = 'idx_push_metrics_monitor_id') THEN
CREATE INDEX idx_push_metrics_monitor_id ON hzb_push_metrics(monitor_id);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_push_metrics' AND indexname = 'idx_push_metrics_time') THEN
CREATE INDEX idx_push_metrics_time ON hzb_push_metrics(time);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_history table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_history') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'history_query_index') THEN
DROP INDEX IF EXISTS history_query_index;
END IF;
-- Create new indexes if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'idx_hzb_history_instance') THEN
CREATE INDEX idx_hzb_history_instance ON hzb_history(instance);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'idx_hzb_history_app') THEN
CREATE INDEX idx_hzb_history_app ON hzb_history(app);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'idx_hzb_history_metrics') THEN
CREATE INDEX idx_hzb_history_metrics ON hzb_history(metrics);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_history' AND indexname = 'idx_hzb_history_metric') THEN
CREATE INDEX idx_hzb_history_metric ON hzb_history(metric);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_param table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_param') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_param' AND indexname = 'idx_hzb_param_monitor_id') THEN
DROP INDEX IF EXISTS idx_hzb_param_monitor_id;
END IF;
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_param' AND indexname = 'idx_hzb_param_monitor_id') THEN
CREATE INDEX idx_hzb_param_monitor_id ON hzb_param(monitor_id);
END IF;
-- Drop old unique constraint if exists
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'hzb_param'
AND constraint_type = 'UNIQUE'
AND constraint_name = 'uk_hzb_param_monitor_field') THEN
ALTER TABLE hzb_param DROP CONSTRAINT IF EXISTS uk_hzb_param_monitor_field;
END IF;
-- Create new unique constraint if not exist
IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'hzb_param'
AND constraint_type = 'UNIQUE'
AND constraint_name = 'uk_hzb_param_monitor_field') THEN
ALTER TABLE hzb_param
ADD CONSTRAINT uk_hzb_param_monitor_field
UNIQUE (monitor_id, field);
END IF;
END IF;
END $$;
-- ========================================
-- hzb_plugin_param table
-- ========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'hzb_plugin_param') THEN
-- Drop old index if exists
IF EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_plugin_param' AND indexname = 'idx_hzb_plugin_param_plugin_metadata_id') THEN
DROP INDEX IF EXISTS idx_hzb_plugin_param_plugin_metadata_id;
END IF;
-- Create new index if not exist
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE tablename = 'hzb_plugin_param' AND indexname = 'idx_hzb_plugin_param_plugin_metadata_id') THEN
CREATE INDEX idx_hzb_plugin_param_plugin_metadata_id ON hzb_plugin_param(plugin_metadata_id);
END IF;
-- Drop old unique constraint if exists
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'hzb_plugin_param'
AND constraint_type = 'UNIQUE'
AND constraint_name = 'uk_hzb_plugin_param_metadata_field') THEN
ALTER TABLE hzb_plugin_param DROP CONSTRAINT IF EXISTS uk_hzb_plugin_param_metadata_field;
END IF;
-- Create new unique constraint if not exist
IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'hzb_plugin_param'
AND constraint_type = 'UNIQUE'
AND constraint_name = 'uk_hzb_plugin_param_metadata_field') THEN
ALTER TABLE hzb_plugin_param
ADD CONSTRAINT uk_hzb_plugin_param_metadata_field
UNIQUE (plugin_metadata_id, field);
END IF;
END IF;
END $$;
COMMIT;