645 lines
28 KiB
SQL
645 lines
28 KiB
SQL
-- Additive TCP NATMap v2 group/channel migration. Safe to rerun.
|
|
|
|
SET NAMES utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `network_port_forward_group` (
|
|
`id` BIGINT NOT NULL,
|
|
`name` VARCHAR(100) NOT NULL,
|
|
`remark` TEXT NULL,
|
|
`external_port` INT UNSIGNED NOT NULL,
|
|
`internal_port` INT UNSIGNED NOT NULL,
|
|
`protocol_mode` VARCHAR(8) NOT NULL,
|
|
`target_ipv4` VARCHAR(15) NOT NULL,
|
|
`is_deleted` TINYINT(1) NOT NULL DEFAULT 0,
|
|
`create_time` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|
`update_time` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
SET @network_port_forward_group_id_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'group_id'
|
|
);
|
|
SET @network_port_forward_group_id_sql := IF(
|
|
@network_port_forward_group_id_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `group_id` BIGINT NULL AFTER `remark`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_port_forward_group_id_stmt FROM @network_port_forward_group_id_sql;
|
|
EXECUTE network_port_forward_group_id_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_group_id_stmt;
|
|
|
|
SET @network_port_forward_active_group_protocol_key_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'active_group_protocol_key'
|
|
);
|
|
SET @network_port_forward_active_group_protocol_key_sql := IF(
|
|
@network_port_forward_active_group_protocol_key_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `active_group_protocol_key` VARCHAR(64) NULL AFTER `active_key`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_port_forward_active_group_protocol_key_stmt FROM @network_port_forward_active_group_protocol_key_sql;
|
|
EXECUTE network_port_forward_active_group_protocol_key_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_active_group_protocol_key_stmt;
|
|
|
|
SET @network_port_forward_natmap_desired_enabled_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'natmap_desired_enabled'
|
|
);
|
|
SET @network_port_forward_natmap_desired_enabled_sql := IF(
|
|
@network_port_forward_natmap_desired_enabled_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `natmap_desired_enabled` TINYINT(1) NOT NULL DEFAULT 0 AFTER `keeper_desired_enabled`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_port_forward_natmap_desired_enabled_stmt FROM @network_port_forward_natmap_desired_enabled_sql;
|
|
EXECUTE network_port_forward_natmap_desired_enabled_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_natmap_desired_enabled_stmt;
|
|
|
|
SET @network_port_forward_natmap_status_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'natmap_status'
|
|
);
|
|
SET @network_port_forward_natmap_status_sql := IF(
|
|
@network_port_forward_natmap_status_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `natmap_status` VARCHAR(16) NOT NULL DEFAULT ''disabled'' AFTER `keeper_status`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_port_forward_natmap_status_stmt FROM @network_port_forward_natmap_status_sql;
|
|
EXECUTE network_port_forward_natmap_status_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_natmap_status_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'last_reported_at'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `last_reported_at` DATETIME(6) NULL AFTER `reported_revision`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'last_reported_at_wire'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `last_reported_at_wire` VARCHAR(64) NULL AFTER `last_reported_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'natmap_last_error_code'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `natmap_last_error_code` VARCHAR(64) NULL AFTER `last_error_message`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'natmap_last_error_message'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `natmap_last_error_message` VARCHAR(512) NULL AFTER `natmap_last_error_code`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'keeper_last_error_code'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `keeper_last_error_code` VARCHAR(64) NULL AFTER `last_error_message`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'keeper_last_error_message'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `keeper_last_error_message` VARCHAR(512) NULL AFTER `keeper_last_error_code`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'candidate_public_ipv4'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `candidate_public_ipv4` VARCHAR(15) NULL AFTER `current_public_port`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'candidate_public_port'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `candidate_public_port` INT NULL AFTER `candidate_public_ipv4`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'candidate_observed_at'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `candidate_observed_at` DATETIME(6) NULL AFTER `candidate_public_port`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'candidate_validated_at'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `candidate_validated_at` DATETIME(6) NULL AFTER `candidate_observed_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'current_validated_at'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `current_validated_at` DATETIME(6) NULL AFTER `current_observed_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'last_observed_validated_at'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `last_observed_validated_at` DATETIME(6) NULL AFTER `last_observed_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'candidate_validated_at_wire'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `candidate_validated_at_wire` VARCHAR(64) NULL AFTER `candidate_validated_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'current_validated_at_wire'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `current_validated_at_wire` VARCHAR(64) NULL AFTER `current_validated_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'current_endpoint_identity'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `current_endpoint_identity` CHAR(64) NULL AFTER `current_valid_until`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'last_observed_validated_at_wire'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `last_observed_validated_at_wire` VARCHAR(64) NULL AFTER `last_observed_validated_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'last_published_public_ipv4'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `last_published_public_ipv4` VARCHAR(15) NULL AFTER `last_observed_validated_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'last_published_public_port'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `last_published_public_port` INT NULL AFTER `last_published_public_ipv4`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'last_published_at'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD COLUMN `last_published_at` DATETIME(6) NULL AFTER `last_published_public_port`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_agent_state'
|
|
AND COLUMN_NAME = 'desired_schema_version'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_agent_state` ADD COLUMN `desired_schema_version` INT UNSIGNED NOT NULL DEFAULT 1 AFTER `desired_revision`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_agent_state'
|
|
AND COLUMN_NAME = 'published_schema_version'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_agent_state` ADD COLUMN `published_schema_version` INT UNSIGNED NOT NULL DEFAULT 1 AFTER `published_revision`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_agent_state'
|
|
AND COLUMN_NAME = 'max_supported_schema_version'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_agent_state` ADD COLUMN `max_supported_schema_version` INT UNSIGNED NOT NULL DEFAULT 1 AFTER `published_schema_version`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_agent_state'
|
|
AND COLUMN_NAME = 'tcp_natmap_capable'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_agent_state` ADD COLUMN `tcp_natmap_capable` TINYINT(1) NOT NULL DEFAULT 0 AFTER `max_supported_schema_version`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_agent_state'
|
|
AND COLUMN_NAME = 'applied_schema_version'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_agent_state` ADD COLUMN `applied_schema_version` INT UNSIGNED NOT NULL DEFAULT 1 AFTER `applied_revision`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_needs_resize := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_agent_state'
|
|
AND COLUMN_NAME = 'version'
|
|
AND (COLUMN_TYPE <> 'varchar(128)' OR IS_NULLABLE <> 'YES')
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_needs_resize = 1,
|
|
'ALTER TABLE `network_agent_state` MODIFY COLUMN `version` VARCHAR(128) NULL',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_needs_resize := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_agent_state'
|
|
AND COLUMN_NAME = 'last_mqtt_error_message'
|
|
AND (COLUMN_TYPE <> 'varchar(512)' OR IS_NULLABLE <> 'YES')
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_needs_resize = 1,
|
|
'ALTER TABLE `network_agent_state` MODIFY COLUMN `last_mqtt_error_message` VARCHAR(512) NULL',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_needs_resize := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_agent_state'
|
|
AND COLUMN_NAME = 'last_reconcile_error_message'
|
|
AND (COLUMN_TYPE <> 'varchar(512)' OR IS_NULLABLE <> 'YES')
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_needs_resize = 1,
|
|
'ALTER TABLE `network_agent_state` MODIFY COLUMN `last_reconcile_error_message` VARCHAR(512) NULL',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_endpoint_history_mechanism_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_endpoint_history'
|
|
AND COLUMN_NAME = 'mechanism'
|
|
);
|
|
SET @network_endpoint_history_mechanism_sql := IF(
|
|
@network_endpoint_history_mechanism_exists = 0,
|
|
'ALTER TABLE `network_endpoint_history` ADD COLUMN `mechanism` VARCHAR(16) NULL AFTER `event_type`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_endpoint_history_mechanism_stmt FROM @network_endpoint_history_mechanism_sql;
|
|
EXECUTE network_endpoint_history_mechanism_stmt;
|
|
DEALLOCATE PREPARE network_endpoint_history_mechanism_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_endpoint_history'
|
|
AND COLUMN_NAME = 'source_revision'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_endpoint_history` ADD COLUMN `source_revision` BIGINT NULL AFTER `mechanism`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_endpoint_history'
|
|
AND COLUMN_NAME = 'endpoint_identity'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_endpoint_history` ADD COLUMN `endpoint_identity` CHAR(64) NULL AFTER `source_revision`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_endpoint_history'
|
|
AND COLUMN_NAME = 'endpoint_validated_at'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_endpoint_history` ADD COLUMN `endpoint_validated_at` DATETIME(6) NULL AFTER `public_port`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
SET @network_tcp_natmap_v2_column_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_endpoint_history'
|
|
AND COLUMN_NAME = 'endpoint_valid_until'
|
|
);
|
|
SET @network_tcp_natmap_v2_alter_sql := IF(
|
|
@network_tcp_natmap_v2_column_exists = 0,
|
|
'ALTER TABLE `network_endpoint_history` ADD COLUMN `endpoint_valid_until` DATETIME(6) NULL AFTER `endpoint_validated_at`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_tcp_natmap_v2_alter_stmt FROM @network_tcp_natmap_v2_alter_sql;
|
|
EXECUTE network_tcp_natmap_v2_alter_stmt;
|
|
DEALLOCATE PREPARE network_tcp_natmap_v2_alter_stmt;
|
|
|
|
INSERT INTO `network_port_forward_group` (
|
|
`id`, `name`, `remark`, `external_port`, `internal_port`, `protocol_mode`,
|
|
`target_ipv4`, `is_deleted`, `create_time`, `update_time`
|
|
)
|
|
SELECT channel.id, channel.name, channel.remark, channel.external_port,
|
|
channel.internal_port, channel.protocol, channel.target_ipv4, channel.is_deleted,
|
|
channel.create_time, channel.update_time
|
|
FROM `network_port_forward` channel
|
|
LEFT JOIN `network_port_forward_group` grouped ON grouped.id = channel.id
|
|
WHERE channel.group_id IS NULL
|
|
AND grouped.id IS NULL;
|
|
|
|
UPDATE `network_port_forward` channel
|
|
SET `group_id` = channel.id
|
|
WHERE channel.group_id IS NULL;
|
|
|
|
UPDATE `network_port_forward` channel
|
|
SET `active_group_protocol_key` = CASE
|
|
WHEN channel.is_deleted = 0 THEN CONCAT(channel.group_id, ':', channel.protocol)
|
|
ELSE NULL
|
|
END
|
|
WHERE NOT (
|
|
channel.active_group_protocol_key <=> CASE
|
|
WHEN channel.is_deleted = 0 THEN CONCAT(channel.group_id, ':', channel.protocol)
|
|
ELSE NULL
|
|
END
|
|
);
|
|
|
|
UPDATE `network_endpoint_history`
|
|
SET `mechanism` = 'udp_stun'
|
|
WHERE `mechanism` IS NULL;
|
|
|
|
SET @network_endpoint_history_mechanism_nullable := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_endpoint_history'
|
|
AND COLUMN_NAME = 'mechanism' AND IS_NULLABLE = 'YES'
|
|
);
|
|
SET @network_endpoint_history_mechanism_sql := IF(
|
|
@network_endpoint_history_mechanism_nullable = 1,
|
|
'ALTER TABLE `network_endpoint_history` MODIFY COLUMN `mechanism` VARCHAR(16) NOT NULL DEFAULT ''udp_stun''',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_endpoint_history_mechanism_not_null_stmt FROM @network_endpoint_history_mechanism_sql;
|
|
EXECUTE network_endpoint_history_mechanism_not_null_stmt;
|
|
DEALLOCATE PREPARE network_endpoint_history_mechanism_not_null_stmt;
|
|
|
|
SET @network_port_forward_group_id_null_count := (
|
|
SELECT COUNT(*) FROM `network_port_forward` WHERE `group_id` IS NULL
|
|
);
|
|
SELECT @network_port_forward_group_id_null_count AS network_port_forward_group_id_null_count;
|
|
SET @network_port_forward_group_id_abort_sql := IF(
|
|
@network_port_forward_group_id_null_count = 0,
|
|
'SELECT 1',
|
|
'SIGNAL SQLSTATE ''45000'' SET MESSAGE_TEXT = ''network_port_forward.group_id backfill incomplete'''
|
|
);
|
|
PREPARE network_port_forward_group_id_abort_stmt FROM @network_port_forward_group_id_abort_sql;
|
|
EXECUTE network_port_forward_group_id_abort_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_group_id_abort_stmt;
|
|
|
|
SET @network_port_forward_group_id_nullable := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND COLUMN_NAME = 'group_id' AND IS_NULLABLE = 'YES'
|
|
);
|
|
SET @network_port_forward_group_id_not_null_sql := IF(
|
|
@network_port_forward_group_id_nullable = 1,
|
|
'ALTER TABLE `network_port_forward` MODIFY COLUMN `group_id` BIGINT NOT NULL',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_port_forward_group_id_not_null_stmt FROM @network_port_forward_group_id_not_null_sql;
|
|
EXECUTE network_port_forward_group_id_not_null_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_group_id_not_null_stmt;
|
|
|
|
SET @network_port_forward_active_group_protocol_key_conflicts := (
|
|
SELECT COUNT(*) FROM (
|
|
SELECT `active_group_protocol_key`
|
|
FROM `network_port_forward`
|
|
WHERE `active_group_protocol_key` IS NOT NULL
|
|
GROUP BY `active_group_protocol_key`
|
|
HAVING COUNT(*) > 1
|
|
) conflicts
|
|
);
|
|
SELECT @network_port_forward_active_group_protocol_key_conflicts AS network_port_forward_active_group_protocol_key_conflicts;
|
|
SET @network_port_forward_active_group_protocol_key_abort_sql := IF(
|
|
@network_port_forward_active_group_protocol_key_conflicts = 0,
|
|
'SELECT 1',
|
|
'SIGNAL SQLSTATE ''45000'' SET MESSAGE_TEXT = ''network_port_forward active group/protocol key conflict'''
|
|
);
|
|
PREPARE network_port_forward_active_group_protocol_key_abort_stmt FROM @network_port_forward_active_group_protocol_key_abort_sql;
|
|
EXECUTE network_port_forward_active_group_protocol_key_abort_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_active_group_protocol_key_abort_stmt;
|
|
|
|
SET @network_port_forward_active_group_protocol_key_index_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND INDEX_NAME = 'uk_network_port_forward_active_group_protocol_key'
|
|
);
|
|
SET @network_port_forward_active_group_protocol_key_index_sql := IF(
|
|
@network_port_forward_active_group_protocol_key_index_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD UNIQUE KEY `uk_network_port_forward_active_group_protocol_key` (`active_group_protocol_key`)',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_port_forward_active_group_protocol_key_index_stmt FROM @network_port_forward_active_group_protocol_key_index_sql;
|
|
EXECUTE network_port_forward_active_group_protocol_key_index_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_active_group_protocol_key_index_stmt;
|
|
|
|
SET @network_port_forward_group_index_exists := (
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'network_port_forward'
|
|
AND INDEX_NAME = 'idx_network_port_forward_group'
|
|
);
|
|
SET @network_port_forward_group_index_sql := IF(
|
|
@network_port_forward_group_index_exists = 0,
|
|
'ALTER TABLE `network_port_forward` ADD KEY `idx_network_port_forward_group` (`group_id`, `is_deleted`, `protocol`)',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE network_port_forward_group_index_stmt FROM @network_port_forward_group_index_sql;
|
|
EXECUTE network_port_forward_group_index_stmt;
|
|
DEALLOCATE PREPARE network_port_forward_group_index_stmt;
|