2021-08-20 15:27:41 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-08-29 22:51:46 +00:00
CREATE TABLE ` abm_tokens ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` organization_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` apple_id ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` terms_expired ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
` renew_at ` timestamp NOT NULL ,
` token ` blob NOT NULL ,
` macos_default_team_id ` int unsigned DEFAULT NULL ,
` ios_default_team_id ` int unsigned DEFAULT NULL ,
` ipados_default_team_id ` int unsigned DEFAULT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_abm_tokens_organization_name ` ( ` organization_name ` ) ,
KEY ` fk_abm_tokens_macos_default_team_id ` ( ` macos_default_team_id ` ) ,
KEY ` fk_abm_tokens_ios_default_team_id ` ( ` ios_default_team_id ` ) ,
KEY ` fk_abm_tokens_ipados_default_team_id ` ( ` ipados_default_team_id ` ) ,
CONSTRAINT ` fk_abm_tokens_ios_default_team_id ` FOREIGN KEY ( ` ios_default_team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` fk_abm_tokens_ipados_default_team_id ` FOREIGN KEY ( ` ipados_default_team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` fk_abm_tokens_macos_default_team_id ` FOREIGN KEY ( ` macos_default_team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE SET NULL
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` activities ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
2024-06-18 20:37:08 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
2024-07-23 14:01:23 +00:00
` user_id ` int unsigned DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` user_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` activity_type ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
` details ` json DEFAULT NULL ,
2022-12-23 22:04:13 +00:00
` streamed ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2023-11-09 20:50:01 +00:00
` user_email ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2025-02-19 19:55:20 +00:00
` fleet_initiated ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
KEY ` fk_activities_user_id ` ( ` user_id ` ) ,
2022-12-23 22:04:13 +00:00
KEY ` activities_streamed_idx ` ( ` streamed ` ) ,
2023-05-25 19:50:36 +00:00
KEY ` activities_created_at_idx ` ( ` created_at ` ) ,
2021-08-20 15:27:41 +00:00
CONSTRAINT ` activities_ibfk_1 ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-10-20 21:35:38 +00:00
CREATE TABLE ` aggregated_stats ` (
2024-07-23 14:01:23 +00:00
` id ` bigint unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` type ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-10-20 21:35:38 +00:00
` json_value ` json NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-10-20 21:35:38 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2023-03-14 21:01:16 +00:00
` global_stats ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
PRIMARY KEY ( ` id ` , ` type ` , ` global_stats ` ) ,
2022-01-26 14:47:56 +00:00
KEY ` idx_aggregated_stats_updated_at ` ( ` updated_at ` ) ,
KEY ` aggregated_stats_type_idx ` ( ` type ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-10-20 21:35:38 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-02-24 20:31:21 +00:00
CREATE TABLE ` android_devices ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
` device_id ` varchar ( 32 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` enterprise_specific_id ` varchar ( 64 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` android_policy_id ` int unsigned DEFAULT NULL ,
` last_policy_sync_time ` datetime ( 3 ) DEFAULT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_android_devices_host_id ` ( ` host_id ` ) ,
UNIQUE KEY ` idx_android_devices_device_id ` ( ` device_id ` ) ,
UNIQUE KEY ` idx_android_devices_enterprise_specific_id ` ( ` enterprise_specific_id ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-02-13 20:32:19 +00:00
CREATE TABLE ` android_enterprises ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` signup_name ` varchar ( 63 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` enterprise_id ` varchar ( 63 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` created_at ` datetime ( 6 ) DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2025-02-24 20:31:21 +00:00
` signup_token ` varchar ( 64 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` pubsub_topic_id ` varchar ( 64 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2025-02-27 20:19:15 +00:00
` user_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2025-02-13 20:32:19 +00:00
PRIMARY KEY ( ` id ` )
2025-02-24 20:31:21 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2025-02-13 20:32:19 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` app_config_json ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL DEFAULT ' 1 ' ,
2021-08-20 15:27:41 +00:00
` json_value ` json NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-11-25 16:03:19 +00:00
PRIMARY KEY ( ` id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2025-04-24 20:18:01 +00:00
INSERT INTO ` app_config_json ` VALUES ( 1 , ' {\"mdm\": {\"ios_updates\": {\"deadline\": null, \"minimum_version\": null}, \"macos_setup\": {\"script\": null, \"software\": null, \"bootstrap_package\": null, \"manual_agent_install\": null, \"macos_setup_assistant\": null, \"enable_end_user_authentication\": false, \"enable_release_device_manually\": false}, \"macos_updates\": {\"deadline\": null, \"minimum_version\": null}, \"ipados_updates\": {\"deadline\": null, \"minimum_version\": null}, \"macos_settings\": {\"custom_settings\": null}, \"macos_migration\": {\"mode\": \"\", \"enable\": false, \"webhook_url\": \"\"}, \"windows_updates\": {\"deadline_days\": null, \"grace_period_days\": null}, \"apple_server_url\": \"\", \"windows_settings\": {\"custom_settings\": null}, \"apple_bm_terms_expired\": false, \"apple_business_manager\": null, \"enable_disk_encryption\": false, \"enabled_and_configured\": false, \"end_user_authentication\": {\"idp_name\": \"\", \"metadata\": \"\", \"entity_id\": \"\", \"issuer_uri\": \"\", \"metadata_url\": \"\"}, \"volume_purchasing_program\": null, \"windows_migration_enabled\": false, \"android_enabled_and_configured\": false, \"windows_enabled_and_configured\": false, \"apple_bm_enabled_and_configured\": false}, \"gitops\": {\"repository_url\": \"\", \"gitops_mode_enabled\": false}, \"scripts\": null, \"features\": {\"enable_host_users\": true, \"enable_software_inventory\": false}, \"org_info\": {\"org_name\": \"\", \"contact_url\": \"\", \"org_logo_url\": \"\", \"org_logo_url_light_background\": \"\"}, \"integrations\": {\"jira\": null, \"zendesk\": null, \"digicert\": null, \"google_calendar\": null, \"ndes_scep_proxy\": null, \"custom_scep_proxy\": null}, \"sso_settings\": {\"idp_name\": \"\", \"metadata\": \"\", \"entity_id\": \"\", \"enable_sso\": false, \"issuer_uri\": \"\", \"metadata_url\": \"\", \"idp_image_url\": \"\", \"enable_jit_role_sync\": false, \"enable_sso_idp_login\": false, \"enable_jit_provisioning\": false}, \"agent_options\": {\"config\": {\"options\": {\"logger_plugin\": \"tls\", \"pack_delimiter\": \"/\", \"logger_tls_period\": 10, \"distributed_plugin\": \"tls\", \"disable_distributed\": false, \"logger_tls_endpoint\": \"/api/osquery/log\", \"distributed_interval\": 10, \"distributed_tls_max_attempts\": 3}, \"decorators\": {\"load\": [\"SELECT uuid AS host_uuid FROM system_info;\", \"SELECT hostname AS hostname FROM system_info;\"]}}, \"overrides\": {}}, \"fleet_desktop\": {\"transparency_url\": \"\"}, \"smtp_settings\": {\"port\": 587, \"domain\": \"\", \"server\": \"\", \"password\": \"\", \"user_name\": \"\", \"configured\": false, \"enable_smtp\": false, \"enable_ssl_tls\": true, \"sender_address\": \"\", \"enable_start_tls\": true, \"verify_ssl_certs\": true, \"authentication_type\": \"0\", \"authentication_method\": \"0\"}, \"server_settings\": {\"server_url\": \"\", \"enable_analytics\": false, \"query_report_cap\": 0, \"scripts_disabled\": false, \"deferred_save_host\": false, \"live_query_disabled\": false, \"ai_features_disabled\": false, \"query_reports_disabled\": false}, \"webhook_settings\": {\"interval\": \"0s\", \"activities_webhook\": {\"destination_url\": \"\", \"enable_activities_webhook\": false}, \"host_status_webhook\": {\"days_count\": 0, \"destination_url\": \"\", \"host_percentage\": 0, \"enable_host_status_webhook\": false}, \"vulnerabilities_webhook\": {\"destination_url\": \"\", \"host_batch_size\": 0, \"enable_vulnerabilities_webhook\": false}, \"failing_policies_webhook\": {\"policy_ids\": null, \"destination_url\": \"\", \"host_batch_size\": 0, \"enable_failing_policies_webhook\": false}}, \"host_expiry_settings\": {\"host_expiry_window\": 0, \"host_expiry_enabled\": false}, \"vulnerability_settings\": {\"databases_path\": \"\"}, \"activity_expiry_settings\": {\"activity_expiry_window\": 0, \"activity_expiry_enabled\": false}} ' , ' 2020-01-01 01:01:01 ' , ' 2020-01-01 01:01:01 ' ) ;
2021-08-20 15:27:41 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-04-30 16:54:46 +00:00
CREATE TABLE ` batch_script_execution_host_results ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` batch_execution_id ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` host_id ` int unsigned NOT NULL ,
` host_execution_id ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` error ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_batch_script_execution_host_result_execution_id ` ( ` batch_execution_id ` ) ,
CONSTRAINT ` batch_script_batch_id ` FOREIGN KEY ( ` batch_execution_id ` ) REFERENCES ` batch_script_executions ` ( ` execution_id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` batch_script_executions ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` script_id ` int unsigned NOT NULL ,
` execution_id ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` user_id ` int unsigned DEFAULT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_batch_script_executions_execution_id ` ( ` execution_id ` ) ,
KEY ` batch_script_executions_script_id ` ( ` script_id ` ) ,
CONSTRAINT ` batch_script_executions_script_id ` FOREIGN KEY ( ` script_id ` ) REFERENCES ` scripts ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-03-06 18:47:57 +00:00
CREATE TABLE ` ca_config_assets ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` type ` enum ( ' digicert ' , ' custom_scep_proxy ' ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` value ` blob NOT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_ca_config_assets_name ` ( ` name ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-03-15 00:15:35 +00:00
CREATE TABLE ` calendar_events ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
2024-03-15 00:15:35 +00:00
` email ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` start_time ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` end_time ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` event ` json NOT NULL ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` timezone ` varchar ( 64 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-10 13:49:05 +00:00
` uuid_bin ` binary ( 16 ) NOT NULL ,
2024-07-23 14:01:23 +00:00
` uuid ` varchar ( 36 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ( insert ( insert ( insert ( insert ( hex ( ` uuid_bin ` ) , 9 , 0 , _utf8mb4 ' - ' ) , 14 , 0 , _utf8mb4 ' - ' ) , 19 , 0 , _utf8mb4 ' - ' ) , 24 , 0 , _utf8mb4 ' - ' ) ) VIRTUAL ,
2024-03-21 15:23:59 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-07-08 15:20:03 +00:00
UNIQUE KEY ` idx_one_calendar_event_per_email ` ( ` email ` ) ,
2024-07-10 13:49:05 +00:00
UNIQUE KEY ` idx_calendar_events_uuid_bin_unique ` ( ` uuid_bin ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-03-15 00:15:35 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2021-08-20 15:27:41 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` carve_blocks ` (
2024-07-23 14:01:23 +00:00
` metadata_id ` int unsigned NOT NULL ,
` block_id ` int NOT NULL ,
2021-08-20 15:27:41 +00:00
` data ` longblob ,
PRIMARY KEY ( ` metadata_id ` , ` block_id ` ) ,
CONSTRAINT ` carve_blocks_ibfk_1 ` FOREIGN KEY ( ` metadata_id ` ) REFERENCES ` carve_metadata ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` carve_metadata ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` block_count ` int unsigned NOT NULL ,
` block_size ` int unsigned NOT NULL ,
` carve_size ` bigint unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` carve_id ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` request_id ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` session_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` expired ` tinyint DEFAULT ' 0 ' ,
` max_block ` int DEFAULT ' -1 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` error ` text COLLATE utf8mb4_unicode_ci ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_session_id ` ( ` session_id ` ) ,
UNIQUE KEY ` idx_name ` ( ` name ` ) ,
KEY ` host_id ` ( ` host_id ` ) ,
CONSTRAINT ` carve_metadata_ibfk_1 ` FOREIGN KEY ( ` host_id ` ) REFERENCES ` hosts ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-11-16 21:14:38 +00:00
CREATE TABLE ` cron_stats ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` instance ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` stats_type ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` status ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-11-16 21:14:38 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
Monitor and alert on errors in cron jobs (#24347)
for #19930
# Checklist for submitter
- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [X] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [X] Added/updated tests
- [X] If database migrations are included, checked table schema to
confirm autoupdate
- [X] Manual QA for all new/changed functionality
# Details
This PR adds a new feature to the existing monitoring add-on. The add-on
will now send an SNS alert whenever a scheduled job like
"vulnerabilities" or "apple_mdm_apns_pusher" exits early due to errors.
The alert contains the job type and the set of errors (there can be
multiple, since jobs can have multiple sub-jobs). By default the SNS
topic for this new alert is the same as the one for the existing cron
system alerts, but it can be configured to use a separate topic (e.g.
dogfood instance will post to a separate slack channel).
The actual changes are:
**On the server side:**
- Add errors field to cron_stats table (json DEFAULT NULL)
- Added errors var to `Schedule` struct to collect errors from jobs
- In `RunAllJobs`, collect err from job into new errors var
- Update `Schedule.updateStats`and `CronStats.UpdateCronStats`to accept
errors argument
- If provided, update errors field of cron_stats table
**On the monitor side:**
- Add new SQL query to look for all completed schedules since last run
with non-null errors
- send SNS with job ID, name, errors
# Testing
New automated testing was added for the functional code that gathers and
stores errors from cron runs in the database. To test the actual Lambda,
I added a row in my `cron_stats` table with errors, then compiled and
ran the Lambda executable locally, pointing it to my local mysql and
localstack instances:
```
2024/12/03 14:43:54 main.go:258: Lambda execution environment not found. Falling back to local execution.
2024/12/03 14:43:54 main.go:133: Connected to database!
2024/12/03 14:43:54 main.go:161: Row vulnerabilities last updated at 2024-11-27 03:30:03 +0000 UTC
2024/12/03 14:43:54 main.go:163: *** 1h hasn't updated in more than vulnerabilities, alerting! (status completed)
2024/12/03 14:43:54 main.go:70: Sending SNS Message
2024/12/03 14:43:54 main.go:74: Sending 'Environment: dev
Message: Fleet cron 'vulnerabilities' hasn't updated in more than 1h. Last status was 'completed' at 2024-11-27 03:30:03 +0000 UTC.' to 'arn:aws:sns:us-east-1:000000000000:topic1'
2024/12/03 14:43:54 main.go:82: {
MessageId: "260864ff-4cc9-4951-acea-cef883b2de5f"
}
2024/12/03 14:43:54 main.go:198: *** mdm_apple_profile_manager job had errors, alerting! (errors {"something": "wrong"})
2024/12/03 14:43:54 main.go:70: Sending SNS Message
2024/12/03 14:43:54 main.go:74: Sending 'Environment: dev
Message: Fleet cron 'mdm_apple_profile_manager' (last updated 2024-12-03 20:34:14 +0000 UTC) raised errors during its run:
{"something": "wrong"}.' to 'arn:aws:sns:us-east-1:000000000000:topic1'
2024/12/03 14:43:54 main.go:82: {
MessageId: "5cd085ef-89f6-42c1-8470-d80a22b295f8"
2024-12-19 21:55:29 +00:00
` errors ` json DEFAULT NULL ,
2022-11-16 21:14:38 +00:00
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_cron_stats_name_created_at ` ( ` name ` , ` created_at ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-11-16 21:14:38 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-06-01 16:06:57 +00:00
CREATE TABLE ` cve_meta ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` cve ` varchar ( 20 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-05-20 16:58:40 +00:00
` cvss_score ` double DEFAULT NULL ,
` epss_probability ` double DEFAULT NULL ,
` cisa_known_exploit ` tinyint ( 1 ) DEFAULT NULL ,
2022-06-07 20:00:09 +00:00
` published ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` description ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
2022-05-20 16:58:40 +00:00
PRIMARY KEY ( ` cve ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-05-20 16:58:40 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` distributed_query_campaign_targets ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` type ` int DEFAULT NULL ,
` distributed_query_campaign_id ` int unsigned DEFAULT NULL ,
` target_id ` int unsigned DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` distributed_query_campaigns ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` query_id ` int unsigned DEFAULT NULL ,
` status ` int DEFAULT NULL ,
` user_id ` int unsigned DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` email_changes ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` user_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` token ` varchar ( 128 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` new_email ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_unique_email_changes_token ` ( ` token ` ) USING BTREE ,
KEY ` fk_email_changes_users ` ( ` user_id ` ) ,
CONSTRAINT ` fk_email_changes_users ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` enroll_secrets ` (
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
2021-09-13 17:20:31 +00:00
` secret ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL ,
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned DEFAULT NULL ,
2021-09-13 17:20:31 +00:00
PRIMARY KEY ( ` secret ` ) ,
2021-08-20 15:27:41 +00:00
KEY ` fk_enroll_secrets_team_id ` ( ` team_id ` ) ,
CONSTRAINT ` enroll_secrets_ibfk_1 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-05-02 13:09:33 +00:00
CREATE TABLE ` eulas ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL ,
2023-05-02 13:09:33 +00:00
` token ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` bytes ` longblob ,
` created_at ` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-03-21 02:21:56 +00:00
CREATE TABLE ` fleet_maintained_apps ` (
2024-09-09 15:45:38 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2025-03-21 02:21:56 +00:00
` slug ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-09-09 15:45:38 +00:00
` platform ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2025-03-21 02:21:56 +00:00
` unique_identifier ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-09-09 15:45:38 +00:00
` created_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
2025-03-21 02:21:56 +00:00
UNIQUE KEY ` idx_fleet_library_apps_token ` ( ` slug ` )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-09-09 15:45:38 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-04-29 18:35:37 +00:00
CREATE TABLE ` fleet_variables ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` is_prefix ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_fleet_variables_name_is_prefix ` ( ` name ` , ` is_prefix ` )
2025-04-30 19:31:45 +00:00
) ENGINE = InnoDB AUTO_INCREMENT = 13 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2025-04-29 18:35:37 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2025-04-30 19:31:45 +00:00
INSERT INTO ` fleet_variables ` VALUES ( 1 , ' FLEET_VAR_NDES_SCEP_CHALLENGE ' , 0 , ' 2025-04-22 00:00:00.000000 ' ) , ( 2 , ' FLEET_VAR_NDES_SCEP_PROXY_URL ' , 0 , ' 2025-04-22 00:00:00.000000 ' ) , ( 3 , ' FLEET_VAR_HOST_END_USER_EMAIL_IDP ' , 0 , ' 2025-04-22 00:00:00.000000 ' ) , ( 4 , ' FLEET_VAR_HOST_HARDWARE_SERIAL ' , 0 , ' 2025-04-22 00:00:00.000000 ' ) , ( 5 , ' FLEET_VAR_HOST_END_USER_IDP_USERNAME ' , 0 , ' 2025-04-22 00:00:00.000000 ' ) , ( 6 , ' FLEET_VAR_HOST_END_USER_IDP_USERNAME_LOCAL_PART ' , 0 , ' 2025-04-22 00:00:00.000000 ' ) , ( 7 , ' FLEET_VAR_HOST_END_USER_IDP_GROUPS ' , 0 , ' 2025-04-22 00:00:00.000000 ' ) , ( 8 , ' FLEET_VAR_DIGICERT_DATA_ ' , 1 , ' 2025-04-22 00:00:00.000000 ' ) , ( 9 , ' FLEET_VAR_DIGICERT_PASSWORD_ ' , 1 , ' 2025-04-22 00:00:00.000000 ' ) , ( 10 , ' FLEET_VAR_CUSTOM_SCEP_CHALLENGE_ ' , 1 , ' 2025-04-22 00:00:00.000000 ' ) , ( 11 , ' FLEET_VAR_CUSTOM_SCEP_PROXY_URL_ ' , 1 , ' 2025-04-22 00:00:00.000000 ' ) , ( 12 , ' FLEET_VAR_SCEP_RENEWAL_ID ' , 0 , ' 2025-04-30 00:00:00.000000 ' ) ;
2025-04-29 18:35:37 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-01-29 14:37:54 +00:00
CREATE TABLE ` host_activities ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
` activity_id ` int unsigned NOT NULL ,
2024-01-29 14:37:54 +00:00
PRIMARY KEY ( ` host_id ` , ` activity_id ` ) ,
KEY ` fk_host_activities_activity_id ` ( ` activity_id ` ) ,
CONSTRAINT ` host_activities_ibfk_1 ` FOREIGN KEY ( ` activity_id ` ) REFERENCES ` activities ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` host_additional ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
2021-08-20 15:27:41 +00:00
` additional ` json DEFAULT NULL ,
2022-01-12 17:07:51 +00:00
PRIMARY KEY ( ` host_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-06-28 18:11:49 +00:00
CREATE TABLE ` host_batteries ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` serial_number ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` cycle_count ` int NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` health ` varchar ( 40 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-06-28 18:11:49 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_host_batteries_host_id_serial_number ` ( ` host_id ` , ` serial_number ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-06-28 18:11:49 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-03-15 00:15:35 +00:00
CREATE TABLE ` host_calendar_events ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
` calendar_event_id ` int unsigned NOT NULL ,
` webhook_status ` tinyint NOT NULL ,
2024-03-15 00:15:35 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_one_calendar_event_per_host ` ( ` host_id ` ) ,
KEY ` calendar_event_id ` ( ` calendar_event_id ` ) ,
CONSTRAINT ` host_calendar_events_ibfk_1 ` FOREIGN KEY ( ` calendar_event_id ` ) REFERENCES ` calendar_events ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-02-13 17:03:17 +00:00
CREATE TABLE ` host_certificates ` (
` id ` bigint unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
` not_valid_after ` datetime ( 6 ) NOT NULL ,
` not_valid_before ` datetime ( 6 ) NOT NULL ,
` certificate_authority ` tinyint ( 1 ) NOT NULL ,
` common_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` key_algorithm ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` key_strength ` int NOT NULL ,
` key_usage ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` serial ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` signing_algorithm ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` subject_country ` varchar ( 2 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` subject_org ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` subject_org_unit ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` subject_common_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` issuer_country ` varchar ( 2 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` issuer_org ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` issuer_org_unit ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` issuer_common_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` sha1_sum ` binary ( 20 ) NOT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` deleted_at ` datetime ( 6 ) DEFAULT NULL ,
2025-05-28 15:42:11 +00:00
` source ` enum ( ' system ' , ' user ' ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' system ' ,
2025-02-13 17:03:17 +00:00
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_host_certs_hid_cn ` ( ` host_id ` , ` common_name ` ) ,
2025-02-18 23:49:02 +00:00
KEY ` idx_host_certs_not_valid_after ` ( ` host_id ` , ` not_valid_after ` )
2025-05-28 15:42:11 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2025-02-13 17:03:17 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-05-23 18:01:04 +00:00
CREATE TABLE ` host_dep_assignments ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
2023-05-23 18:01:04 +00:00
` added_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` deleted_at ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` profile_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` assign_profile_response ` varchar ( 15 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-03-01 16:52:19 +00:00
` response_updated_at ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` retry_job_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2024-08-29 22:51:46 +00:00
` abm_token_id ` int unsigned DEFAULT NULL ,
2024-03-01 16:52:19 +00:00
PRIMARY KEY ( ` host_id ` ) ,
2024-08-29 22:51:46 +00:00
KEY ` idx_hdep_response ` ( ` assign_profile_response ` , ` response_updated_at ` ) ,
KEY ` fk_host_dep_assignments_abm_token_id ` ( ` abm_token_id ` ) ,
CONSTRAINT ` fk_host_dep_assignments_abm_token_id ` FOREIGN KEY ( ` abm_token_id ` ) REFERENCES ` abm_tokens ` ( ` id ` ) ON DELETE SET NULL
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-05-23 18:01:04 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-03-08 12:05:53 +00:00
CREATE TABLE ` host_device_auth ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` token ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-10-10 20:15:35 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2022-03-08 12:05:53 +00:00
PRIMARY KEY ( ` host_id ` ) ,
2022-03-09 21:13:56 +00:00
UNIQUE KEY ` idx_host_device_auth_token ` ( ` token ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-03-08 12:05:53 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-02-08 14:49:42 +00:00
CREATE TABLE ` host_disk_encryption_keys ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` base64_encrypted ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-11-20 13:03:02 +00:00
` base64_encrypted_salt ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` key_slot ` tinyint unsigned DEFAULT NULL ,
2023-02-08 14:49:42 +00:00
` decryptable ` tinyint ( 1 ) DEFAULT NULL ,
2025-01-22 20:54:40 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2023-03-20 19:14:07 +00:00
` reset_requested ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-07-23 14:01:23 +00:00
` client_error ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2023-02-08 14:49:42 +00:00
PRIMARY KEY ( ` host_id ` ) ,
KEY ` idx_host_disk_encryption_keys_decryptable ` ( ` decryptable ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-02-08 14:49:42 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-01-22 20:54:40 +00:00
CREATE TABLE ` host_disk_encryption_keys_archive ` (
` id ` bigint unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
` hardware_serial ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` base64_encrypted ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` base64_encrypted_salt ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` key_slot ` tinyint unsigned DEFAULT NULL ,
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_host_disk_encryption_keys_archive_host_created_at ` ( ` host_id ` , ` created_at ` DESC )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-09-21 19:16:31 +00:00
CREATE TABLE ` host_disks ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
2022-09-21 19:16:31 +00:00
` gigs_disk_space_available ` decimal ( 10 , 2 ) NOT NULL DEFAULT ' 0.00 ' ,
` percent_disk_space_available ` decimal ( 10 , 2 ) NOT NULL DEFAULT ' 0.00 ' ,
2025-01-22 20:54:40 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2022-11-02 19:44:02 +00:00
` encrypted ` tinyint ( 1 ) DEFAULT NULL ,
2023-12-21 18:13:04 +00:00
` gigs_total_disk_space ` decimal ( 10 , 2 ) NOT NULL DEFAULT ' 0.00 ' ,
2022-09-21 19:16:31 +00:00
PRIMARY KEY ( ` host_id ` ) ,
KEY ` idx_host_disks_gigs_disk_space_available ` ( ` gigs_disk_space_available ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-09-21 19:16:31 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-08 12:57:46 +00:00
CREATE TABLE ` host_display_names ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` display_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-10-08 12:57:46 +00:00
PRIMARY KEY ( ` host_id ` ) ,
KEY ` display_name ` ( ` display_name ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-08 12:57:46 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-12-21 20:36:19 +00:00
CREATE TABLE ` host_emails ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` email ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` source ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-12-21 20:36:19 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_host_emails_host_id_email ` ( ` host_id ` , ` email ` ) ,
KEY ` idx_host_emails_email ` ( ` email ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-12-21 20:36:19 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-06-17 17:15:42 +00:00
CREATE TABLE ` host_issues ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
` failing_policies_count ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` critical_vulnerabilities_count ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` total_issues_count ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2024-06-17 17:15:42 +00:00
` created_at ` timestamp ( 3 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 3 ) ,
` updated_at ` timestamp ( 3 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 3 ) ON UPDATE CURRENT_TIMESTAMP ( 3 ) ,
PRIMARY KEY ( ` host_id ` ) ,
KEY ` total_issues_count ` ( ` total_issues_count ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-12-21 12:37:58 +00:00
CREATE TABLE ` host_mdm ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
2021-12-21 12:37:58 +00:00
` enrolled ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` server_url ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2021-12-21 12:37:58 +00:00
` installed_from_dep ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-07-23 14:01:23 +00:00
` mdm_id ` int unsigned DEFAULT NULL ,
2022-11-08 09:29:40 +00:00
` is_server ` tinyint ( 1 ) DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` fleet_enroll_ref ` varchar ( 36 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-10-24 21:42:30 +00:00
` enrollment_status ` enum ( ' On (manual) ' , ' On (automatic) ' , ' Pending ' , ' Off ' ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ( ( case when ( ` is_server ` = 1 ) then NULL when ( ( ` enrolled ` = 1 ) and ( ` installed_from_dep ` = 0 ) ) then _utf8mb4 ' On (manual) ' when ( ( ` enrolled ` = 1 ) and ( ` installed_from_dep ` = 1 ) ) then _utf8mb4 ' On (automatic) ' when ( ( ` enrolled ` = 0 ) and ( ` installed_from_dep ` = 1 ) ) then _utf8mb4 ' Pending ' when ( ( ` enrolled ` = 0 ) and ( ` installed_from_dep ` = 0 ) ) then _utf8mb4 ' Off ' else NULL end ) ) VIRTUAL ,
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2022-08-10 19:15:01 +00:00
PRIMARY KEY ( ` host_id ` ) ,
KEY ` host_mdm_mdm_id_idx ` ( ` mdm_id ` ) ,
KEY ` host_mdm_enrolled_installed_from_dep_idx ` ( ` enrolled ` , ` installed_from_dep ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-12-21 12:37:58 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-02-05 18:45:27 +00:00
CREATE TABLE ` host_mdm_actions ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
2024-02-05 18:45:27 +00:00
` lock_ref ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` wipe_ref ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-02-13 18:03:53 +00:00
` unlock_pin ` varchar ( 6 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` unlock_ref ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` fleet_platform ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-02-05 18:45:27 +00:00
PRIMARY KEY ( ` host_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-02-05 18:45:27 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-10-14 21:15:42 +00:00
CREATE TABLE ` host_mdm_apple_awaiting_configuration ` (
` host_uuid ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` awaiting_configuration ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
PRIMARY KEY ( ` host_uuid ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-04-22 15:23:38 +00:00
CREATE TABLE ` host_mdm_apple_bootstrap_packages ` (
` host_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( ` host_uuid ` ) ,
KEY ` command_uuid ` ( ` command_uuid ` ) ,
CONSTRAINT ` host_mdm_apple_bootstrap_packages_ibfk_1 ` FOREIGN KEY ( ` command_uuid ` ) REFERENCES ` nano_commands ` ( ` command_uuid ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-03-14 21:08:19 +00:00
CREATE TABLE ` host_mdm_apple_declarations ` (
2024-07-23 14:01:23 +00:00
` host_uuid ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` status ` varchar ( 20 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` operation_type ` varchar ( 20 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` detail ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
2025-01-02 00:43:02 +00:00
` token ` binary ( 16 ) NOT NULL ,
2024-07-23 14:01:23 +00:00
` declaration_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` declaration_identifier ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` declaration_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-12-30 23:58:39 +00:00
` secrets_updated_at ` datetime ( 6 ) DEFAULT NULL ,
2025-05-15 18:05:25 +00:00
` resync ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-03-14 21:08:19 +00:00
PRIMARY KEY ( ` host_uuid ` , ` declaration_uuid ` ) ,
KEY ` status ` ( ` status ` ) ,
KEY ` operation_type ` ( ` operation_type ` ) ,
2025-05-15 18:05:25 +00:00
KEY ` idx_token ` ( ` token ` ) ,
2024-03-14 21:08:19 +00:00
CONSTRAINT ` host_mdm_apple_declarations_ibfk_1 ` FOREIGN KEY ( ` status ` ) REFERENCES ` mdm_delivery_status ` ( ` status ` ) ON UPDATE CASCADE ,
CONSTRAINT ` host_mdm_apple_declarations_ibfk_2 ` FOREIGN KEY ( ` operation_type ` ) REFERENCES ` mdm_operation_types ` ( ` operation_type ` ) ON UPDATE CASCADE
2024-12-30 23:58:39 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-03-14 21:08:19 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-02-22 17:49:06 +00:00
CREATE TABLE ` host_mdm_apple_profiles ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` profile_identifier ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` host_uuid ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` status ` varchar ( 20 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` operation_type ` varchar ( 20 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` detail ` text COLLATE utf8mb4_unicode_ci ,
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` profile_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2023-04-09 02:23:36 +00:00
` checksum ` binary ( 16 ) NOT NULL ,
2024-07-23 14:01:23 +00:00
` retries ` tinyint unsigned NOT NULL DEFAULT ' 0 ' ,
` profile_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-12-05 21:40:59 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2024-12-30 23:58:39 +00:00
` secrets_updated_at ` datetime ( 6 ) DEFAULT NULL ,
2025-01-06 19:16:34 +00:00
` ignore_error ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2025-05-13 21:22:27 +00:00
` variables_updated_at ` datetime ( 6 ) DEFAULT NULL ,
2023-12-04 15:04:06 +00:00
PRIMARY KEY ( ` host_uuid ` , ` profile_uuid ` ) ,
2023-02-22 17:49:06 +00:00
KEY ` status ` ( ` status ` ) ,
KEY ` operation_type ` ( ` operation_type ` ) ,
2023-11-07 14:28:43 +00:00
CONSTRAINT ` host_mdm_apple_profiles_ibfk_1 ` FOREIGN KEY ( ` status ` ) REFERENCES ` mdm_delivery_status ` ( ` status ` ) ON UPDATE CASCADE ,
CONSTRAINT ` host_mdm_apple_profiles_ibfk_2 ` FOREIGN KEY ( ` operation_type ` ) REFERENCES ` mdm_operation_types ` ( ` operation_type ` ) ON UPDATE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-11-07 14:28:43 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-08-21 13:51:04 +00:00
CREATE TABLE ` host_mdm_commands ` (
` host_id ` int unsigned NOT NULL ,
` command_type ` varchar ( 31 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` created_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` host_id ` , ` command_type ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-05-19 18:29:46 +00:00
CREATE TABLE ` host_mdm_idp_accounts ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_uuid ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` account_uuid ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_host_mdm_idp_accounts ` ( ` host_uuid ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-10-11 14:20:19 +00:00
CREATE TABLE ` host_mdm_managed_certificates ` (
` host_uuid ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` profile_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2025-03-17 15:59:07 +00:00
` type ` enum ( ' digicert ' , ' custom_scep_proxy ' , ' ndes ' ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ndes ' ,
` ca_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' NDES ' ,
2024-10-11 14:20:19 +00:00
` challenge_retrieved_at ` timestamp ( 6 ) NULL DEFAULT NULL ,
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2025-03-06 18:47:57 +00:00
` not_valid_after ` datetime ( 6 ) DEFAULT NULL ,
2025-04-24 12:35:15 +00:00
` serial ` varchar ( 40 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` not_valid_before ` datetime ( 6 ) DEFAULT NULL ,
2025-03-19 13:27:55 +00:00
PRIMARY KEY ( ` host_uuid ` , ` profile_uuid ` , ` ca_name ` )
2025-03-06 18:47:57 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-10-11 14:20:19 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-07 14:28:43 +00:00
CREATE TABLE ` host_mdm_windows_profiles ` (
` host_uuid ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` status ` varchar ( 20 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` operation_type ` varchar ( 20 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` detail ` text COLLATE utf8mb4_unicode_ci ,
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` profile_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` retries ` tinyint unsigned NOT NULL DEFAULT ' 0 ' ,
` profile_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2025-03-20 19:43:04 +00:00
` checksum ` binary ( 16 ) NOT NULL DEFAULT ' 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 ' ,
` secrets_updated_at ` datetime ( 6 ) DEFAULT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2023-11-07 21:35:28 +00:00
PRIMARY KEY ( ` host_uuid ` , ` profile_uuid ` ) ,
2023-11-07 14:28:43 +00:00
KEY ` status ` ( ` status ` ) ,
KEY ` operation_type ` ( ` operation_type ` ) ,
CONSTRAINT ` host_mdm_windows_profiles_ibfk_1 ` FOREIGN KEY ( ` status ` ) REFERENCES ` mdm_delivery_status ` ( ` status ` ) ON UPDATE CASCADE ,
CONSTRAINT ` host_mdm_windows_profiles_ibfk_2 ` FOREIGN KEY ( ` operation_type ` ) REFERENCES ` mdm_operation_types ` ( ` operation_type ` ) ON UPDATE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-02-22 17:49:06 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-12-21 12:37:58 +00:00
CREATE TABLE ` host_munki_info ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` version ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2022-02-15 19:29:14 +00:00
` deleted_at ` timestamp NULL DEFAULT NULL ,
2021-12-21 12:37:58 +00:00
PRIMARY KEY ( ` host_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-12-21 12:37:58 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-08-29 18:40:16 +00:00
CREATE TABLE ` host_munki_issues ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
` munki_issue_id ` int unsigned NOT NULL ,
2022-08-29 18:40:16 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` host_id ` , ` munki_issue_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-08-29 18:40:16 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-08-09 18:34:41 +00:00
CREATE TABLE ` host_operating_system ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
` os_id ` int unsigned NOT NULL ,
2022-08-09 18:34:41 +00:00
PRIMARY KEY ( ` host_id ` ) ,
KEY ` idx_host_operating_system_id ` ( ` os_id ` ) ,
CONSTRAINT ` host_operating_system_ibfk_1 ` FOREIGN KEY ( ` os_id ` ) REFERENCES ` operating_systems ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-08-09 18:34:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-24 16:12:56 +00:00
CREATE TABLE ` host_orbit_info ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` version ` varchar ( 50 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-04-09 21:33:44 +00:00
` desktop_version ` varchar ( 50 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` scripts_enabled ` tinyint ( 1 ) DEFAULT NULL ,
2022-10-24 16:12:56 +00:00
PRIMARY KEY ( ` host_id ` ) ,
KEY ` idx_host_orbit_info_version ` ( ` version ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-24 16:12:56 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-04-01 16:02:24 +00:00
CREATE TABLE ` host_scim_user ` (
` host_id ` int unsigned NOT NULL ,
` scim_user_id ` int unsigned NOT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
2025-05-08 18:46:16 +00:00
PRIMARY KEY ( ` host_id ` ) ,
2025-04-01 16:02:24 +00:00
KEY ` fk_host_scim_scim_user_id ` ( ` scim_user_id ` ) ,
CONSTRAINT ` fk_host_scim_scim_user_id ` FOREIGN KEY ( ` scim_user_id ` ) REFERENCES ` scim_users ` ( ` id ` ) ON DELETE CASCADE
2025-05-08 18:46:16 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2025-04-01 16:02:24 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-08-21 18:47:19 +00:00
CREATE TABLE ` host_script_results ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
2023-08-21 18:47:19 +00:00
` execution_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` output ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` runtime ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` exit_code ` int DEFAULT NULL ,
2023-08-21 18:47:19 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` script_id ` int unsigned DEFAULT NULL ,
` user_id ` int unsigned DEFAULT NULL ,
2024-01-29 14:37:54 +00:00
` sync_request ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-07-23 14:01:23 +00:00
` script_content_id ` int unsigned DEFAULT NULL ,
2024-06-12 14:26:03 +00:00
` host_deleted_at ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` timeout ` int DEFAULT NULL ,
2024-10-08 20:45:31 +00:00
` policy_id ` int unsigned DEFAULT NULL ,
2024-10-25 22:11:56 +00:00
` setup_experience_script_id ` int unsigned DEFAULT NULL ,
2024-12-30 14:32:48 +00:00
` is_internal ` tinyint ( 1 ) DEFAULT ' 0 ' ,
2025-04-01 18:08:56 +00:00
` canceled ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2023-08-21 18:47:19 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_host_script_results_execution_id ` ( ` execution_id ` ) ,
2023-09-11 15:54:34 +00:00
KEY ` idx_host_script_results_host_exit_created ` ( ` host_id ` , ` exit_code ` , ` created_at ` ) ,
KEY ` fk_host_script_results_script_id ` ( ` script_id ` ) ,
2023-10-10 22:00:45 +00:00
KEY ` idx_host_script_created_at ` ( ` host_id ` , ` script_id ` , ` created_at ` ) ,
2024-01-29 14:37:54 +00:00
KEY ` fk_host_script_results_user_id ` ( ` user_id ` ) ,
2024-02-29 15:43:19 +00:00
KEY ` script_content_id ` ( ` script_content_id ` ) ,
2024-10-08 20:45:31 +00:00
KEY ` fk_script_result_policy_id ` ( ` policy_id ` ) ,
2024-10-25 22:11:56 +00:00
KEY ` fk_host_script_results_setup_experience_id ` ( ` setup_experience_script_id ` ) ,
2024-01-29 14:37:54 +00:00
CONSTRAINT ` fk_host_script_results_script_id ` FOREIGN KEY ( ` script_id ` ) REFERENCES ` scripts ` ( ` id ` ) ON DELETE SET NULL ,
2024-09-30 15:08:50 +00:00
CONSTRAINT ` fk_host_script_results_setup_experience_id ` FOREIGN KEY ( ` setup_experience_script_id ` ) REFERENCES ` setup_experience_scripts ` ( ` id ` ) ON DELETE SET NULL ,
2024-02-29 15:43:19 +00:00
CONSTRAINT ` fk_host_script_results_user_id ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL ,
2024-10-08 20:45:31 +00:00
CONSTRAINT ` host_script_results_ibfk_1 ` FOREIGN KEY ( ` script_content_id ` ) REFERENCES ` script_contents ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` host_script_results_ibfk_2 ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE SET NULL
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-08-21 18:47:19 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-11-08 14:42:37 +00:00
CREATE TABLE ` host_seen_times ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
2021-11-08 14:42:37 +00:00
` seen_time ` timestamp NULL DEFAULT NULL ,
PRIMARY KEY ( ` host_id ` ) ,
KEY ` idx_host_seen_times_seen_time ` ( ` seen_time ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-11-08 14:42:37 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` host_software ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
` software_id ` bigint unsigned NOT NULL ,
2022-04-26 18:16:59 +00:00
` last_opened_at ` timestamp NULL DEFAULT NULL ,
2021-08-20 17:57:37 +00:00
PRIMARY KEY ( ` host_id ` , ` software_id ` ) ,
2021-11-08 14:42:37 +00:00
KEY ` host_software_software_fk ` ( ` software_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-05-17 18:49:09 +00:00
CREATE TABLE ` host_software_installed_paths ` (
2024-07-23 14:01:23 +00:00
` id ` bigint unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
` software_id ` bigint unsigned NOT NULL ,
2023-05-17 18:49:09 +00:00
` installed_path ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
Add `team_identifier` to macOS software (#23766)
Changes to add `team_identifier` signing information to macOS
applications on the `/api/latest/fleet/hosts/:id/software` API endpoint.
Docs: https://github.com/fleetdm/fleet/pull/23743
- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [X] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [X] Added/updated tests
- [X] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes
- [X] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [X] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [X] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [ X Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [X] Manual QA for all new/changed functionality
- For Orbit and Fleet Desktop changes:
- [X] Orbit runs on macOS, Linux and Windows. Check if the orbit
feature/bugfix should only apply to one platform (`runtime.GOOS`).
- [X] Manual QA must be performed in the three main OSs, macOS, Windows
and Linux.
- [X] Auto-update manual QA, from released version of component to new
version (see [tools/tuf/test](../tools/tuf/test/README.md)).
---------
Co-authored-by: Tim Lee <timlee@fleetdm.com>
Co-authored-by: Ian Littman <iansltx@gmail.com>
2024-11-15 17:17:04 +00:00
` team_identifier ` varchar ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2025-05-21 04:38:59 +00:00
` executable_sha256 ` char ( 64 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2023-05-17 18:49:09 +00:00
PRIMARY KEY ( ` id ` ) ,
KEY ` host_id_software_id_idx ` ( ` host_id ` , ` software_id ` )
Add `team_identifier` to macOS software (#23766)
Changes to add `team_identifier` signing information to macOS
applications on the `/api/latest/fleet/hosts/:id/software` API endpoint.
Docs: https://github.com/fleetdm/fleet/pull/23743
- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [X] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [X] Added/updated tests
- [X] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes
- [X] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [X] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [X] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [ X Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [X] Manual QA for all new/changed functionality
- For Orbit and Fleet Desktop changes:
- [X] Orbit runs on macOS, Linux and Windows. Check if the orbit
feature/bugfix should only apply to one platform (`runtime.GOOS`).
- [X] Manual QA must be performed in the three main OSs, macOS, Windows
and Linux.
- [X] Auto-update manual QA, from released version of component to new
version (see [tools/tuf/test](../tools/tuf/test/README.md)).
---------
Co-authored-by: Tim Lee <timlee@fleetdm.com>
Co-authored-by: Ian Littman <iansltx@gmail.com>
2024-11-15 17:17:04 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-05-17 18:49:09 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-04-25 11:48:44 +00:00
CREATE TABLE ` host_software_installs ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` execution_id ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` host_id ` int unsigned NOT NULL ,
2024-10-21 22:46:50 +00:00
` software_installer_id ` int unsigned DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` pre_install_query_output ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
` install_script_output ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
` install_script_exit_code ` int DEFAULT NULL ,
` post_install_script_output ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
` post_install_script_exit_code ` int DEFAULT NULL ,
` user_id ` int unsigned DEFAULT NULL ,
2024-09-08 17:26:26 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2024-05-21 14:13:12 +00:00
` self_service ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-09-08 17:26:26 +00:00
` host_deleted_at ` timestamp ( 6 ) NULL DEFAULT NULL ,
2024-08-26 22:30:56 +00:00
` removed ` tinyint NOT NULL DEFAULT ' 0 ' ,
2024-09-08 17:26:26 +00:00
` uninstall_script_output ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
` uninstall_script_exit_code ` int DEFAULT NULL ,
` uninstall ` tinyint unsigned NOT NULL DEFAULT ' 0 ' ,
2025-04-01 18:08:56 +00:00
` status ` enum ( ' pending_install ' , ' failed_install ' , ' installed ' , ' pending_uninstall ' , ' failed_uninstall ' , ' canceled_install ' , ' canceled_uninstall ' ) COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ( ( case when ( ` removed ` = 1 ) then NULL when ( ( ` canceled ` = 1 ) and ( ` uninstall ` = 0 ) ) then _utf8mb4 ' canceled_install ' when ( ( ` canceled ` = 1 ) and ( ` uninstall ` = 1 ) ) then _utf8mb4 ' canceled_uninstall ' when ( ( ` post_install_script_exit_code ` is not null ) and ( ` post_install_script_exit_code ` = 0 ) ) then _utf8mb4 ' installed ' when ( ( ` post_install_script_exit_code ` is not null ) and ( ` post_install_script_exit_code ` < > 0 ) ) then _utf8mb4 ' failed_install ' when ( ( ` install_script_exit_code ` is not null ) and ( ` install_script_exit_code ` = 0 ) ) then _utf8mb4 ' installed ' when ( ( ` install_script_exit_code ` is not null ) and ( ` install_script_exit_code ` < > 0 ) ) then _utf8mb4 ' failed_install ' when ( ( ` pre_install_query_output ` is not null ) and ( ` pre_install_query_output ` = _utf8mb4 ' ' ) ) then _utf8mb4 ' failed_install ' when ( ( ` host_id ` is not null ) and ( ` uninstall ` = 0 ) ) then _utf8mb4 ' pending_install ' when ( ( ` uninstall_script_exit_code ` is not null ) and ( ` uninstall_script_exit_code ` < > 0 ) ) then _utf8mb4 ' failed_uninstall ' when ( ( ` uninstall_script_exit_code ` is not null ) and ( ` uninstall_script_exit_code ` = 0 ) ) then NULL when ( ( ` host_id ` is not null ) and ( ` uninstall ` = 1 ) ) then _utf8mb4 ' pending_uninstall ' else NULL end ) ) STORED ,
2024-10-09 23:15:56 +00:00
` policy_id ` int unsigned DEFAULT NULL ,
2024-10-21 22:46:50 +00:00
` installer_filename ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' [deleted installer] ' ,
` version ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' unknown ' ,
` software_title_id ` int unsigned DEFAULT NULL ,
` software_title_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' [deleted title] ' ,
2025-04-01 18:08:56 +00:00
` execution_status ` enum ( ' pending_install ' , ' failed_install ' , ' installed ' , ' pending_uninstall ' , ' failed_uninstall ' , ' canceled_install ' , ' canceled_uninstall ' ) COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ( ( case when ( ( ` canceled ` = 1 ) and ( ` uninstall ` = 0 ) ) then _utf8mb4 ' canceled_install ' when ( ( ` canceled ` = 1 ) and ( ` uninstall ` = 1 ) ) then _utf8mb4 ' canceled_uninstall ' when ( ( ` post_install_script_exit_code ` is not null ) and ( ` post_install_script_exit_code ` = 0 ) ) then _utf8mb4 ' installed ' when ( ( ` post_install_script_exit_code ` is not null ) and ( ` post_install_script_exit_code ` < > 0 ) ) then _utf8mb4 ' failed_install ' when ( ( ` install_script_exit_code ` is not null ) and ( ` install_script_exit_code ` = 0 ) ) then _utf8mb4 ' installed ' when ( ( ` install_script_exit_code ` is not null ) and ( ` install_script_exit_code ` < > 0 ) ) then _utf8mb4 ' failed_install ' when ( ( ` pre_install_query_output ` is not null ) and ( ` pre_install_query_output ` = _utf8mb4 ' ' ) ) then _utf8mb4 ' failed_install ' when ( ( ` host_id ` is not null ) and ( ` uninstall ` = 0 ) ) then _utf8mb4 ' pending_install ' when ( ( ` uninstall_script_exit_code ` is not null ) and ( ` uninstall_script_exit_code ` < > 0 ) ) then _utf8mb4 ' failed_uninstall ' when ( ( ` uninstall_script_exit_code ` is not null ) and ( ` uninstall_script_exit_code ` = 0 ) ) then NULL when ( ( ` host_id ` is not null ) and ( ` uninstall ` = 1 ) ) then _utf8mb4 ' pending_uninstall ' else NULL end ) ) VIRTUAL ,
` canceled ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-04-25 11:48:44 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_host_software_installs_execution_id ` ( ` execution_id ` ) ,
2024-05-07 15:28:16 +00:00
KEY ` fk_host_software_installs_user_id ` ( ` user_id ` ) ,
2024-05-01 18:37:52 +00:00
KEY ` idx_host_software_installs_host_installer ` ( ` host_id ` , ` software_installer_id ` ) ,
2024-10-09 23:15:56 +00:00
KEY ` fk_software_install_policy_id ` ( ` policy_id ` ) ,
2024-10-21 22:46:50 +00:00
KEY ` fk_host_software_installs_installer_id ` ( ` software_installer_id ` ) ,
KEY ` fk_host_software_installs_software_title_id ` ( ` software_title_id ` ) ,
CONSTRAINT ` fk_host_software_installs_installer_id ` FOREIGN KEY ( ` software_installer_id ` ) REFERENCES ` software_installers ` ( ` id ` ) ON DELETE SET NULL ON UPDATE CASCADE ,
CONSTRAINT ` fk_host_software_installs_software_title_id ` FOREIGN KEY ( ` software_title_id ` ) REFERENCES ` software_titles ` ( ` id ` ) ON DELETE SET NULL ON UPDATE CASCADE ,
2024-10-09 23:15:56 +00:00
CONSTRAINT ` fk_host_software_installs_user_id ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` host_software_installs_ibfk_1 ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE SET NULL
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-04-25 11:48:44 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-01-09 11:55:43 +00:00
CREATE TABLE ` host_updates ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
2023-01-09 11:55:43 +00:00
` software_updated_at ` timestamp NULL DEFAULT NULL ,
PRIMARY KEY ( ` host_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-01-09 11:55:43 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` host_users ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
` uid ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` username ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` groupname ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` removed_at ` timestamp NULL DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` user_type ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` shell ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT ' ' ,
2024-11-25 16:03:19 +00:00
PRIMARY KEY ( ` host_id ` , ` uid ` , ` username ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-07-03 21:34:24 +00:00
CREATE TABLE ` host_vpp_software_installs ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
2024-07-03 21:34:24 +00:00
` adam_id ` varchar ( 16 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-18 22:35:26 +00:00
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` user_id ` int unsigned DEFAULT NULL ,
2024-07-03 21:34:24 +00:00
` self_service ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
` associated_event_id ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2024-07-03 21:34:24 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-08-01 18:32:45 +00:00
` platform ` varchar ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-08-26 22:30:56 +00:00
` removed ` tinyint NOT NULL DEFAULT ' 0 ' ,
2024-08-29 22:51:46 +00:00
` vpp_token_id ` int unsigned DEFAULT NULL ,
2025-01-13 21:53:24 +00:00
` policy_id ` int unsigned DEFAULT NULL ,
2025-04-01 18:08:56 +00:00
` canceled ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-07-03 21:34:24 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-07-18 22:35:26 +00:00
UNIQUE KEY ` idx_host_vpp_software_installs_command_uuid ` ( ` command_uuid ` ) ,
2024-07-03 21:34:24 +00:00
KEY ` user_id ` ( ` user_id ` ) ,
2024-08-01 18:32:45 +00:00
KEY ` adam_id ` ( ` adam_id ` , ` platform ` ) ,
2024-08-29 22:51:46 +00:00
KEY ` fk_host_vpp_software_installs_vpp_token_id ` ( ` vpp_token_id ` ) ,
2025-01-13 21:53:24 +00:00
KEY ` fk_host_vpp_software_installs_policy_id ` ( ` policy_id ` ) ,
2024-08-29 22:51:46 +00:00
CONSTRAINT ` fk_host_vpp_software_installs_vpp_token_id ` FOREIGN KEY ( ` vpp_token_id ` ) REFERENCES ` vpp_tokens ` ( ` id ` ) ON DELETE SET NULL ,
2024-07-03 21:34:24 +00:00
CONSTRAINT ` host_vpp_software_installs_ibfk_1 ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL ,
2025-01-13 21:53:24 +00:00
CONSTRAINT ` host_vpp_software_installs_ibfk_3 ` FOREIGN KEY ( ` adam_id ` , ` platform ` ) REFERENCES ` vpp_apps ` ( ` adam_id ` , ` platform ` ) ON DELETE CASCADE ,
CONSTRAINT ` host_vpp_software_installs_ibfk_4 ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE SET NULL
2024-08-01 18:32:45 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-07-03 21:34:24 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` hosts ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` osquery_host_id ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
` detail_updated_at ` timestamp NULL DEFAULT NULL ,
` node_key ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` hostname ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` uuid ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` platform ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` osquery_version ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` os_version ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` build ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` platform_like ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` code_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` uptime ` bigint NOT NULL DEFAULT ' 0 ' ,
` memory ` bigint NOT NULL DEFAULT ' 0 ' ,
` cpu_type ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` cpu_subtype ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` cpu_brand ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` cpu_physical_cores ` int NOT NULL DEFAULT ' 0 ' ,
` cpu_logical_cores ` int NOT NULL DEFAULT ' 0 ' ,
` hardware_vendor ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` hardware_model ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` hardware_version ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` hardware_serial ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` computer_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` primary_ip_id ` int unsigned DEFAULT NULL ,
` distributed_interval ` int DEFAULT ' 0 ' ,
` logger_tls_period ` int DEFAULT ' 0 ' ,
` config_tls_refresh ` int DEFAULT ' 0 ' ,
` primary_ip ` varchar ( 45 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` primary_mac ` varchar ( 17 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2021-08-20 15:27:41 +00:00
` label_updated_at ` timestamp NOT NULL DEFAULT ' 2000-01-01 00:00:00 ' ,
` last_enrolled_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` refetch_requested ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned DEFAULT NULL ,
2021-09-27 19:27:38 +00:00
` policy_updated_at ` timestamp NOT NULL DEFAULT ' 2000-01-01 00:00:00 ' ,
2024-07-23 14:01:23 +00:00
` public_ip ` varchar ( 45 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2022-09-23 19:00:23 +00:00
` orbit_node_key ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL ,
2023-05-17 19:52:45 +00:00
` refetch_critical_queries_until ` timestamp NULL DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_osquery_host_id ` ( ` osquery_host_id ` ) ,
UNIQUE KEY ` idx_host_unique_nodekey ` ( ` node_key ` ) ,
2022-09-27 20:55:07 +00:00
UNIQUE KEY ` idx_host_unique_orbitnodekey ` ( ` orbit_node_key ` ) ,
2021-08-20 15:27:41 +00:00
KEY ` fk_hosts_team_id ` ( ` team_id ` ) ,
2022-06-08 01:09:47 +00:00
KEY ` hosts_platform_idx ` ( ` platform ` ) ,
2022-12-26 21:32:39 +00:00
KEY ` idx_hosts_hardware_serial ` ( ` hardware_serial ` ) ,
2024-08-26 18:20:57 +00:00
KEY ` idx_hosts_uuid ` ( ` uuid ` ) ,
2021-08-20 15:27:41 +00:00
CONSTRAINT ` hosts_ibfk_1 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE SET NULL
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` invite_teams ` (
2024-07-23 14:01:23 +00:00
` invite_id ` int unsigned NOT NULL ,
` team_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` role ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` invite_id ` , ` team_id ` ) ,
KEY ` fk_team_id ` ( ` team_id ` ) ,
CONSTRAINT ` invite_teams_ibfk_1 ` FOREIGN KEY ( ` invite_id ` ) REFERENCES ` invites ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` invite_teams_ibfk_2 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` invites ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` invited_by ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` email ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` position ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` token ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
` sso_enabled ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` global_role ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-12-05 14:37:10 +00:00
` mfa_enabled ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_invite_unique_email ` ( ` email ` ) ,
UNIQUE KEY ` idx_invite_unique_key ` ( ` token ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-04-05 16:56:15 +00:00
CREATE TABLE ` jobs ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
2022-04-05 16:56:15 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-04-05 16:56:15 +00:00
` args ` json DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` state ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` retries ` int NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` error ` text COLLATE utf8mb4_unicode_ci ,
2023-05-03 20:25:36 +00:00
` not_before ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
2024-08-06 18:49:01 +00:00
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_jobs_state_not_before_updated_at ` ( ` state ` , ` not_before ` , ` updated_at ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-04-05 16:56:15 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2024-03-25 17:25:29 +00:00
INSERT INTO ` jobs ` VALUES ( 1 , ' 2024-03-20 00:00:00 ' , ' 2024-03-20 00:00:00 ' , ' macos_setup_assistant ' , ' {\"task\": \"update_all_profiles\"} ' , ' queued ' , 0 , ' ' , ' 2024-03-20 00:00:00 ' ) ;
2022-04-05 16:56:15 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` label_membership ` (
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` label_id ` int unsigned NOT NULL ,
` host_id ` int unsigned NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` host_id ` , ` label_id ` ) ,
2021-09-21 14:48:20 +00:00
KEY ` idx_lm_label_id ` ( ` label_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` labels ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` description ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` query ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
` platform ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` label_type ` int unsigned NOT NULL DEFAULT ' 1 ' ,
` label_membership_type ` int unsigned NOT NULL DEFAULT ' 0 ' ,
Add author ID to labels (#27055)
For #27035
# Checklist for submitter
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [x] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [x] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [x] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [ ] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality
## Details
This PR adds an `author_id` column to the `labels` table, and adds the
associated properties to the `Label` and `LabelSpec` types. When a new
label is created via the UI or API, an author ID is set on the label if
one can be inferred from the context. Otherwise, the author ID is set to
`null`.
## Authz and Automated testing
Additional backend authorization logic is introduced in a follow-on PR,
https://github.com/fleetdm/fleet/pull/27089, because rconciling all of
the test updates between this PR and
https://github.com/fleetdm/fleet/pull/27038 was getting complicated.
## Manual Testing
* Tested in the UI by creating a new label on the Hosts page
* Tested via Gitops by merging this branch with
https://github.com/fleetdm/fleet/pull/27038 and doing `fleetctl gitops`
with a global config with `labels:` in it.
2025-03-20 21:05:16 +00:00
` author_id ` int unsigned DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_label_unique_name ` ( ` name ` ) ,
Add author ID to labels (#27055)
For #27035
# Checklist for submitter
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [x] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [x] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [x] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [ ] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality
## Details
This PR adds an `author_id` column to the `labels` table, and adds the
associated properties to the `Label` and `LabelSpec` types. When a new
label is created via the UI or API, an author ID is set on the label if
one can be inferred from the context. Otherwise, the author ID is set to
`null`.
## Authz and Automated testing
Additional backend authorization logic is introduced in a follow-on PR,
https://github.com/fleetdm/fleet/pull/27089, because rconciling all of
the test updates between this PR and
https://github.com/fleetdm/fleet/pull/27038 was getting complicated.
## Manual Testing
* Tested in the UI by creating a new label on the Hosts page
* Tested via Gitops by merging this branch with
https://github.com/fleetdm/fleet/pull/27038 and doing `fleetctl gitops`
with a global config with `labels:` in it.
2025-03-20 21:05:16 +00:00
KEY ` author_id ` ( ` author_id ` ) ,
FULLTEXT KEY ` labels_search ` ( ` name ` ) ,
CONSTRAINT ` labels_ibfk_1 ` FOREIGN KEY ( ` author_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL
2025-02-25 19:44:48 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 6 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
Add author ID to labels (#27055)
For #27035
# Checklist for submitter
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [x] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [x] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [x] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [ ] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality
## Details
This PR adds an `author_id` column to the `labels` table, and adds the
associated properties to the `Label` and `LabelSpec` types. When a new
label is created via the UI or API, an author ID is set on the label if
one can be inferred from the context. Otherwise, the author ID is set to
`null`.
## Authz and Automated testing
Additional backend authorization logic is introduced in a follow-on PR,
https://github.com/fleetdm/fleet/pull/27089, because rconciling all of
the test updates between this PR and
https://github.com/fleetdm/fleet/pull/27038 was getting complicated.
## Manual Testing
* Tested in the UI by creating a new label on the Hosts page
* Tested via Gitops by merging this branch with
https://github.com/fleetdm/fleet/pull/27038 and doing `fleetctl gitops`
with a global config with `labels:` in it.
2025-03-20 21:05:16 +00:00
INSERT INTO ` labels ` VALUES ( 1 , ' 2024-04-03 00:00:00 ' , ' 2024-04-03 00:00:00 ' , ' macOS 14+ (Sonoma+) ' , ' macOS hosts with version 14 and above ' , ' select 1 from os_version where platform = \ ' darwin \ ' and major >= 14; ' , ' darwin ' , 1 , 0 , NULL ) , ( 2 , ' 2024-06-28 00:00:00 ' , ' 2024-06-28 00:00:00 ' , ' iOS ' , ' All iOS hosts ' , ' ' , ' ios ' , 1 , 1 , NULL ) , ( 3 , ' 2024-06-28 00:00:00 ' , ' 2024-06-28 00:00:00 ' , ' iPadOS ' , ' All iPadOS hosts ' , ' ' , ' ipados ' , 1 , 1 , NULL ) , ( 4 , ' 2024-09-27 00:00:00 ' , ' 2024-09-27 00:00:00 ' , ' Fedora Linux ' , ' All Fedora hosts ' , ' select 1 from os_version where name = \ ' Fedora Linux \ ' ; ' , ' rhel ' , 1 , 0 , NULL ) , ( 5 , ' 2025-02-25 00:00:00 ' , ' 2025-02-25 00:00:00 ' , ' Android ' , ' All Android hosts ' , ' ' , ' android ' , 1 , 1 , NULL ) ;
2021-08-20 15:27:41 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-05-19 18:29:46 +00:00
CREATE TABLE ` legacy_host_mdm_enroll_refs ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_uuid ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` enroll_ref ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_legacy_enroll_refs_host_uuid ` ( ` host_uuid ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` legacy_host_mdm_idp_accounts ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_uuid ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` email ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` account_uuid ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` host_id ` int unsigned DEFAULT NULL ,
` email_id ` int unsigned DEFAULT NULL ,
` email_created_at ` datetime DEFAULT NULL ,
` email_updated_at ` datetime DEFAULT NULL ,
PRIMARY KEY ( ` id ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` locks ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` owner ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` expires_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_name ` ( ` name ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-04-07 20:31:02 +00:00
CREATE TABLE ` mdm_apple_bootstrap_packages ` (
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned NOT NULL ,
2023-04-07 20:31:02 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` sha256 ` binary ( 32 ) NOT NULL ,
` bytes ` longblob ,
` token ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2023-04-22 15:23:38 +00:00
` created_at ` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2023-04-07 20:31:02 +00:00
PRIMARY KEY ( ` team_id ` ) ,
UNIQUE KEY ` idx_token ` ( ` token ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-04-07 20:31:02 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-02-09 00:36:20 +00:00
CREATE TABLE ` mdm_apple_configuration_profiles ` (
2024-07-23 14:01:23 +00:00
` profile_id ` int unsigned NOT NULL AUTO_INCREMENT ,
` team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` identifier ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-06-18 17:02:00 +00:00
` mobileconfig ` mediumblob NOT NULL ,
2024-12-30 23:58:39 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` uploaded_at ` timestamp ( 6 ) NULL DEFAULT NULL ,
2023-04-09 02:23:36 +00:00
` checksum ` binary ( 16 ) NOT NULL ,
2024-07-23 14:01:23 +00:00
` profile_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-12-30 23:58:39 +00:00
` secrets_updated_at ` datetime ( 6 ) DEFAULT NULL ,
2023-12-04 15:04:06 +00:00
PRIMARY KEY ( ` profile_uuid ` ) ,
2023-02-09 00:36:20 +00:00
UNIQUE KEY ` idx_mdm_apple_config_prof_team_identifier ` ( ` team_id ` , ` identifier ` ) ,
2023-12-04 15:04:06 +00:00
UNIQUE KEY ` idx_mdm_apple_config_prof_team_name ` ( ` team_id ` , ` name ` ) ,
UNIQUE KEY ` idx_mdm_apple_config_prof_id ` ( ` profile_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-02-09 00:36:20 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-03-14 21:08:19 +00:00
CREATE TABLE ` mdm_apple_declaration_activation_references ` (
2024-07-23 14:01:23 +00:00
` declaration_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` reference ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-03-14 21:08:19 +00:00
PRIMARY KEY ( ` declaration_uuid ` , ` reference ` ) ,
KEY ` reference ` ( ` reference ` ) ,
CONSTRAINT ` mdm_apple_declaration_activation_references_ibfk_1 ` FOREIGN KEY ( ` declaration_uuid ` ) REFERENCES ` mdm_apple_declarations ` ( ` declaration_uuid ` ) ON UPDATE CASCADE ,
CONSTRAINT ` mdm_apple_declaration_activation_references_ibfk_2 ` FOREIGN KEY ( ` reference ` ) REFERENCES ` mdm_apple_declarations ` ( ` declaration_uuid ` ) ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-03-14 21:08:19 +00:00
CREATE TABLE ` mdm_apple_declarations ` (
2024-07-23 14:01:23 +00:00
` declaration_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` identifier ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-12-20 22:32:09 +00:00
` raw_json ` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-12-30 23:58:39 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` uploaded_at ` timestamp ( 6 ) NULL DEFAULT NULL ,
2024-08-30 21:00:35 +00:00
` auto_increment ` bigint NOT NULL AUTO_INCREMENT ,
2024-12-30 23:58:39 +00:00
` secrets_updated_at ` datetime ( 6 ) DEFAULT NULL ,
` token ` binary ( 16 ) GENERATED ALWAYS AS ( unhex ( md5 ( concat ( ` raw_json ` , ifnull ( ` secrets_updated_at ` , _utf8mb4 ' ' ) ) ) ) ) STORED ,
2024-03-14 21:08:19 +00:00
PRIMARY KEY ( ` declaration_uuid ` ) ,
UNIQUE KEY ` idx_mdm_apple_declaration_team_identifier ` ( ` team_id ` , ` identifier ` ) ,
2024-08-30 21:00:35 +00:00
UNIQUE KEY ` idx_mdm_apple_declaration_team_name ` ( ` team_id ` , ` name ` ) ,
UNIQUE KEY ` auto_increment ` ( ` auto_increment ` )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-03-14 21:08:19 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-03-27 03:09:09 +00:00
CREATE TABLE ` mdm_apple_declarative_requests ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` enrollment_id ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` message_type ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-03-27 03:09:09 +00:00
` raw_json ` text COLLATE utf8mb4_unicode_ci ,
PRIMARY KEY ( ` id ` ) ,
KEY ` mdm_apple_declarative_requests_enrollment_id ` ( ` enrollment_id ` ) ,
CONSTRAINT ` mdm_apple_declarative_requests_enrollment_id ` FOREIGN KEY ( ` enrollment_id ` ) REFERENCES ` nano_enrollments ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-05-17 13:06:14 +00:00
CREATE TABLE ` mdm_apple_default_setup_assistants ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` team_id ` int unsigned DEFAULT NULL ,
` global_or_team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2023-05-17 13:06:14 +00:00
` profile_uuid ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2023-05-17 13:06:14 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-08-29 22:51:46 +00:00
` abm_token_id ` int unsigned DEFAULT NULL ,
2023-05-17 13:06:14 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-08-29 22:51:46 +00:00
UNIQUE KEY ` idx_mdm_default_setup_assistant_global_or_team_id_abm_token_id ` ( ` global_or_team_id ` , ` abm_token_id ` ) ,
2023-05-17 13:06:14 +00:00
KEY ` fk_mdm_default_setup_assistant_team_id ` ( ` team_id ` ) ,
2024-08-29 22:51:46 +00:00
KEY ` fk_mdm_default_setup_assistant_abm_token_id ` ( ` abm_token_id ` ) ,
CONSTRAINT ` fk_mdm_default_setup_assistant_abm_token_id ` FOREIGN KEY ( ` abm_token_id ` ) REFERENCES ` abm_tokens ` ( ` id ` ) ON DELETE CASCADE ,
2023-05-17 13:06:14 +00:00
CONSTRAINT ` mdm_apple_default_setup_assistants_ibfk_1 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
2024-08-29 22:51:46 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-05-17 13:06:14 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` mdm_apple_enrollment_profiles ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` token ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` type ` varchar ( 10 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' automatic ' ,
2022-10-05 22:53:54 +00:00
` dep_profile ` json DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2022-10-05 22:53:54 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_type ` ( ` type ` ) ,
UNIQUE KEY ` idx_token ` ( ` token ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` mdm_apple_installers ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` size ` bigint NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` manifest ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-10-05 22:53:54 +00:00
` installer ` longblob ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` url_token ` varchar ( 36 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-08-29 22:51:46 +00:00
CREATE TABLE ` mdm_apple_setup_assistant_profiles ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` setup_assistant_id ` int unsigned NOT NULL ,
` abm_token_id ` int unsigned NOT NULL ,
` profile_uuid ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_mdm_apple_setup_assistant_profiles_asst_id_tok_id ` ( ` setup_assistant_id ` , ` abm_token_id ` ) ,
KEY ` fk_mdm_apple_setup_assistant_profiles_abm_token_id ` ( ` abm_token_id ` ) ,
CONSTRAINT ` fk_mdm_apple_setup_assistant_profiles_abm_token_id ` FOREIGN KEY ( ` abm_token_id ` ) REFERENCES ` abm_tokens ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_mdm_apple_setup_assistant_profiles_setup_assistant_id ` FOREIGN KEY ( ` setup_assistant_id ` ) REFERENCES ` mdm_apple_setup_assistants ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-04-25 13:36:01 +00:00
CREATE TABLE ` mdm_apple_setup_assistants ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` team_id ` int unsigned DEFAULT NULL ,
` global_or_team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2023-04-25 13:36:01 +00:00
` name ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
` profile ` json NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2023-04-25 13:36:01 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_mdm_setup_assistant_global_or_team_id ` ( ` global_or_team_id ` ) ,
KEY ` fk_mdm_setup_assistant_team_id ` ( ` team_id ` ) ,
CONSTRAINT ` mdm_apple_setup_assistants_ibfk_1 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-04-25 13:36:01 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-05-22 20:42:37 +00:00
CREATE TABLE ` mdm_config_assets ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 256 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-05-22 20:42:37 +00:00
` value ` longblob NOT NULL ,
` deleted_at ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` deletion_uuid ` varchar ( 127 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-05-30 21:18:42 +00:00
` md5_checksum ` binary ( 16 ) NOT NULL ,
2024-05-22 20:42:37 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_mdm_config_assets_name_deletion_uuid ` ( ` name ` , ` deletion_uuid ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-01-26 16:00:58 +00:00
CREATE TABLE ` mdm_configuration_profile_labels ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
2024-01-26 16:00:58 +00:00
` apple_profile_uuid ` varchar ( 37 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` windows_profile_uuid ` varchar ( 37 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` label_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` label_id ` int unsigned DEFAULT NULL ,
2024-01-26 16:00:58 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-06-17 17:22:43 +00:00
` exclude ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-10-31 01:58:34 +00:00
` require_all ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-01-26 16:00:58 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_mdm_configuration_profile_labels_apple_label_name ` ( ` apple_profile_uuid ` , ` label_name ` ) ,
UNIQUE KEY ` idx_mdm_configuration_profile_labels_windows_label_name ` ( ` windows_profile_uuid ` , ` label_name ` ) ,
KEY ` label_id ` ( ` label_id ` ) ,
CONSTRAINT ` mdm_configuration_profile_labels_ibfk_1 ` FOREIGN KEY ( ` apple_profile_uuid ` ) REFERENCES ` mdm_apple_configuration_profiles ` ( ` profile_uuid ` ) ON DELETE CASCADE ,
CONSTRAINT ` mdm_configuration_profile_labels_ibfk_2 ` FOREIGN KEY ( ` windows_profile_uuid ` ) REFERENCES ` mdm_windows_configuration_profiles ` ( ` profile_uuid ` ) ON DELETE CASCADE ,
2024-07-23 14:01:23 +00:00
CONSTRAINT ` mdm_configuration_profile_labels_ibfk_3 ` FOREIGN KEY ( ` label_id ` ) REFERENCES ` labels ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` ck_mdm_configuration_profile_labels_apple_or_windows ` CHECK ( ( ( ` apple_profile_uuid ` is null ) < > ( ` windows_profile_uuid ` is null ) ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-01-26 16:00:58 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-04-29 18:35:37 +00:00
CREATE TABLE ` mdm_configuration_profile_variables ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` apple_profile_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` windows_profile_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` fleet_variable_id ` int unsigned NOT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_mdm_configuration_profile_variables_apple_variable ` ( ` apple_profile_uuid ` , ` fleet_variable_id ` ) ,
UNIQUE KEY ` idx_mdm_configuration_profile_variables_windows_label_name ` ( ` windows_profile_uuid ` , ` fleet_variable_id ` ) ,
KEY ` mdm_configuration_profile_variables_fleet_variable_id ` ( ` fleet_variable_id ` ) ,
CONSTRAINT ` fk_mdm_configuration_profile_variables_apple_profile_uuid ` FOREIGN KEY ( ` apple_profile_uuid ` ) REFERENCES ` mdm_apple_configuration_profiles ` ( ` profile_uuid ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_mdm_configuration_profile_variables_windows_profile_uuid ` FOREIGN KEY ( ` windows_profile_uuid ` ) REFERENCES ` mdm_windows_configuration_profiles ` ( ` profile_uuid ` ) ON DELETE CASCADE ,
CONSTRAINT ` mdm_configuration_profile_variables_fleet_variable_id ` FOREIGN KEY ( ` fleet_variable_id ` ) REFERENCES ` fleet_variables ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` ck_mdm_configuration_profile_variables_apple_or_windows ` CHECK ( ( ( ` apple_profile_uuid ` is null ) < > ( ` windows_profile_uuid ` is null ) ) )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-03-14 21:08:19 +00:00
CREATE TABLE ` mdm_declaration_labels ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` apple_declaration_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` label_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` label_id ` int unsigned DEFAULT NULL ,
2024-03-14 21:08:19 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` uploaded_at ` timestamp NULL DEFAULT NULL ,
2024-06-17 17:22:43 +00:00
` exclude ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-10-31 01:58:34 +00:00
` require_all ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-03-14 21:08:19 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-03-21 16:12:32 +00:00
UNIQUE KEY ` idx_mdm_declaration_labels_label_name ` ( ` apple_declaration_uuid ` , ` label_name ` ) ,
2024-03-14 21:08:19 +00:00
KEY ` label_id ` ( ` label_id ` ) ,
2024-03-21 16:12:32 +00:00
CONSTRAINT ` mdm_declaration_labels_ibfk_1 ` FOREIGN KEY ( ` apple_declaration_uuid ` ) REFERENCES ` mdm_apple_declarations ` ( ` declaration_uuid ` ) ON DELETE CASCADE ,
2024-03-14 21:08:19 +00:00
CONSTRAINT ` mdm_declaration_labels_ibfk_3 ` FOREIGN KEY ( ` label_id ` ) REFERENCES ` labels ` ( ` id ` ) ON DELETE SET NULL
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-03-14 21:08:19 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-07 14:28:43 +00:00
CREATE TABLE ` mdm_delivery_status ` (
` status ` varchar ( 20 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( ` status ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-11-07 14:28:43 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
INSERT INTO ` mdm_delivery_status ` VALUES ( ' failed ' ) , ( ' pending ' ) , ( ' verified ' ) , ( ' verifying ' ) ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-03-07 13:57:26 +00:00
CREATE TABLE ` mdm_idp_accounts ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` uuid ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` username ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2023-05-18 15:50:00 +00:00
` fullname ` varchar ( 256 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` email ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2023-10-27 15:42:30 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` uuid ` ) ,
UNIQUE KEY ` unique_idp_email ` ( ` email ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-03-07 13:57:26 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-07 14:28:43 +00:00
CREATE TABLE ` mdm_operation_types ` (
` operation_type ` varchar ( 20 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( ` operation_type ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-11-07 14:28:43 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
INSERT INTO ` mdm_operation_types ` VALUES ( ' install ' ) , ( ' remove ' ) ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-07 14:28:43 +00:00
CREATE TABLE ` mdm_windows_configuration_profiles ` (
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2023-11-07 14:28:43 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` syncml ` mediumblob NOT NULL ,
2025-03-20 19:43:04 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` uploaded_at ` timestamp ( 6 ) NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` profile_uuid ` varchar ( 37 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-08-30 21:00:35 +00:00
` auto_increment ` bigint NOT NULL AUTO_INCREMENT ,
2025-03-20 19:43:04 +00:00
` checksum ` binary ( 16 ) GENERATED ALWAYS AS ( unhex ( md5 ( ` syncml ` ) ) ) STORED ,
` secrets_updated_at ` datetime ( 6 ) DEFAULT NULL ,
2023-11-07 21:35:28 +00:00
PRIMARY KEY ( ` profile_uuid ` ) ,
2024-08-30 21:00:35 +00:00
UNIQUE KEY ` idx_mdm_windows_configuration_profiles_team_id_name ` ( ` team_id ` , ` name ` ) ,
UNIQUE KEY ` auto_increment ` ( ` auto_increment ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-11-07 14:28:43 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-07-05 13:06:37 +00:00
CREATE TABLE ` mdm_windows_enrollments ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
2023-07-05 13:06:37 +00:00
` mdm_device_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` mdm_hardware_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` device_state ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` device_type ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` device_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` enroll_type ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` enroll_user_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` enroll_proto_version ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` enroll_client_version ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` not_in_oobe ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` host_uuid ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2023-07-05 13:06:37 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-03-13 15:27:37 +00:00
UNIQUE KEY ` idx_type ` ( ` mdm_hardware_id ` ) ,
2024-06-14 18:01:12 +00:00
KEY ` idx_mdm_windows_enrollments_mdm_device_id ` ( ` mdm_device_id ` ) ,
KEY ` idx_mdm_windows_enrollments_host_uuid ` ( ` host_uuid ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-07-05 13:06:37 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` migration_status_tables ` (
2024-07-23 14:01:23 +00:00
` id ` bigint unsigned NOT NULL AUTO_INCREMENT ,
` version_id ` bigint NOT NULL ,
2021-08-20 15:27:41 +00:00
` is_applied ` tinyint ( 1 ) NOT NULL ,
` tstamp ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2024-11-25 16:03:19 +00:00
PRIMARY KEY ( ` id ` )
2025-05-29 19:26:02 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 390 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-08-10 19:15:01 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2025-05-29 19:26:02 +00:00
INSERT INTO ` migration_status_tables ` VALUES ( 1 , 0 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 2 , 20161118193812 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 3 , 20161118211713 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 4 , 20161118212436 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 5 , 20161118212515 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 6 , 20161118212528 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 7 , 20161118212538 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 8 , 20161118212549 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 9 , 20161118212557 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 10 , 20161118212604 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 11 , 20161118212613 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 12 , 20161118212621 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 13 , 20161118212630 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 14 , 20161118212641 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 15 , 20161118212649 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 16 , 20161118212656 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 17 , 20161118212758 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 18 , 20161128234849 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 19 , 20161230162221 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 20 , 20170104113816 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 21 , 20170105151732 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 22 , 20170108191242 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 23 , 20170109094020 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 24 , 20170109130438 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 25 , 20170110202752 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 26 , 20170111133013 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 27 , 20170117025759 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 28 , 20170118191001 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 29 , 20170119234632 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 30 , 20170124230432 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 31 , 20170127014618 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 32 , 20170131232841 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 33 , 20170223094154 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 34 , 20170306075207 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 35 , 20170309100733 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 36 , 20170331111922 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 37 , 20170502143928 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 38 , 20170504130602 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 39 , 20170509132100 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 40 , 20170519105647 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 41 , 20170519105648 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 42 , 20170831234300 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 43 , 20170831234301 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 44 , 20170831234303 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 45 , 20171116163618 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 46 , 20171219164727 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 47 , 20180620164811 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 48 , 20180620175054 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 49 , 20180620175055 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 50 , 20191010101639 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 51 , 20191010155147 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 52 , 20191220130734 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 53 , 20200311140000 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 54 , 20200405120000 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 55 , 20200407120000 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 56 , 20200420120000 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 57 , 20200504120000 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 58 , 20200512120000 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 59 , 20200707120000 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 60 , 20201011162341 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 61 , 20201021104586 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 62 , 20201102112520 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 63 , 20201208121729 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 64 , 20201215091637 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 65 , 20210119174155 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 66 , 20210326182902 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 67 , 20210421112652 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 68 , 20210506095025 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 69 , 20210513115729 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 70 , 20210526113559 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 71 , 20210601000001 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 72 , 20210601000002 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 73 , 20210601000003 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 74 , 20210601000004 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 75 , 20210601000005 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 76 , 20210601000006 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 77 , 20210601000007 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 78 , 20210601000008 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 79 , 20210606151329 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 80 , 20210616163757 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 81 , 20210617174723 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 82 , 20210622160235 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 83 , 20210623100031 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 84 , 20210623133615 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 85 , 20210708143152 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 86 , 20210709124443 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 87 , 20210712155608 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 88 , 20210714102108 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 89 , 20210719153709 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 90 , 20210721171531 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 91 , 20210723135713 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 92 , 20210802135933 , 1 , ' 2020-01-01 01:01:01 ' ) , ( 93 , 20210806112844 , 1 , ' 20
2022-08-10 19:15:01 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-08-10 19:15:01 +00:00
CREATE TABLE ` mobile_device_management_solutions ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 100 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` server_url ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-08-10 19:15:01 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_mobile_device_management_solutions_name ` ( ` name ` , ` server_url ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-08-29 18:40:16 +00:00
CREATE TABLE ` munki_issues ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` issue_type ` varchar ( 10 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-08-29 18:40:16 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_munki_issues_name ` ( ` name ` , ` issue_type ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-08-29 18:40:16 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_cert_auth_associations ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` sha256 ` char ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-02-22 22:24:11 +00:00
` cert_not_valid_after ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` renew_command_uuid ` varchar ( 127 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-02-22 22:24:11 +00:00
PRIMARY KEY ( ` id ` , ` sha256 ` ) ,
KEY ` renew_command_uuid_fk ` ( ` renew_command_uuid ` ) ,
2024-07-23 14:01:23 +00:00
CONSTRAINT ` renew_command_uuid_fk ` FOREIGN KEY ( ` renew_command_uuid ` ) REFERENCES ` nano_commands ` ( ` command_uuid ` ) ,
CONSTRAINT ` nano_cert_auth_associations_chk_1 ` CHECK ( ( ` id ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_cert_auth_associations_chk_2 ` CHECK ( ( ` sha256 ` < > _utf8mb4 ' ' ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_command_results ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` status ` varchar ( 31 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` result ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-10-05 22:53:54 +00:00
` not_now_at ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` not_now_tally ` int NOT NULL DEFAULT ' 0 ' ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` id ` , ` command_uuid ` ) ,
KEY ` command_uuid ` ( ` command_uuid ` ) ,
KEY ` status ` ( ` status ` ) ,
CONSTRAINT ` nano_command_results_ibfk_1 ` FOREIGN KEY ( ` id ` ) REFERENCES ` nano_enrollments ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
2024-07-23 14:01:23 +00:00
CONSTRAINT ` nano_command_results_ibfk_2 ` FOREIGN KEY ( ` command_uuid ` ) REFERENCES ` nano_commands ` ( ` command_uuid ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` nano_command_results_chk_1 ` CHECK ( ( ` status ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_command_results_chk_2 ` CHECK ( ( substr ( ` result ` , 1 , 5 ) = _utf8mb4 ' <?xml ' ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_commands ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` request_type ` varchar ( 63 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` command ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-28 14:17:27 +00:00
` created_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2024-12-20 21:40:23 +00:00
` subtype ` enum ( ' None ' , ' ProfileWithSecrets ' ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' None ' ,
2024-07-23 14:01:23 +00:00
PRIMARY KEY ( ` command_uuid ` ) ,
CONSTRAINT ` nano_commands_chk_1 ` CHECK ( ( ` command_uuid ` < > _utf8mb4 ' ' ) ) ,
2024-12-20 21:40:23 +00:00
CONSTRAINT ` nano_commands_chk_2 ` CHECK ( ( ` request_type ` < > _utf8mb4 ' ' ) )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_dep_names ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` consumer_key ` text COLLATE utf8mb4_unicode_ci ,
` consumer_secret ` text COLLATE utf8mb4_unicode_ci ,
` access_token ` text COLLATE utf8mb4_unicode_ci ,
` access_secret ` text COLLATE utf8mb4_unicode_ci ,
2022-10-05 22:53:54 +00:00
` access_token_expiry ` timestamp NULL DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` config_base_url ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` tokenpki_cert_pem ` text COLLATE utf8mb4_unicode_ci ,
` tokenpki_key_pem ` text COLLATE utf8mb4_unicode_ci ,
` syncer_cursor ` varchar ( 1024 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2022-10-05 22:53:54 +00:00
` syncer_cursor_at ` timestamp NULL DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` assigner_profile_uuid ` text COLLATE utf8mb4_unicode_ci ,
2022-10-05 22:53:54 +00:00
` assigner_profile_uuid_at ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` name ` ) ,
CONSTRAINT ` nano_dep_names_chk_1 ` CHECK ( ( ( ` tokenpki_cert_pem ` is null ) or ( substr ( ` tokenpki_cert_pem ` , 1 , 27 ) = _utf8mb4 ' -----BEGIN CERTIFICATE----- ' ) ) ) ,
CONSTRAINT ` nano_dep_names_chk_2 ` CHECK ( ( ( ` tokenpki_key_pem ` is null ) or ( substr ( ` tokenpki_key_pem ` , 1 , 5 ) = _utf8mb4 ' ----- ' ) ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_devices ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` identity_cert ` text COLLATE utf8mb4_unicode_ci ,
` serial_number ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2022-10-05 22:53:54 +00:00
` unlock_token ` mediumblob ,
` unlock_token_at ` timestamp NULL DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` authenticate ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-10-05 22:53:54 +00:00
` authenticate_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` token_update ` text COLLATE utf8mb4_unicode_ci ,
2022-10-05 22:53:54 +00:00
` token_update_at ` timestamp NULL DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` bootstrap_token_b64 ` text COLLATE utf8mb4_unicode_ci ,
2022-10-05 22:53:54 +00:00
` bootstrap_token_at ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2025-03-26 13:33:38 +00:00
` platform ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` enroll_team_id ` int unsigned DEFAULT NULL ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-07-23 14:01:23 +00:00
KEY ` serial_number ` ( ` serial_number ` ) ,
2025-03-26 13:33:38 +00:00
KEY ` fk_nano_devices_team_id ` ( ` enroll_team_id ` ) ,
CONSTRAINT ` fk_nano_devices_team_id ` FOREIGN KEY ( ` enroll_team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE SET NULL ,
2024-07-23 14:01:23 +00:00
CONSTRAINT ` nano_devices_chk_1 ` CHECK ( ( ( ` identity_cert ` is null ) or ( substr ( ` identity_cert ` , 1 , 27 ) = _utf8mb4 ' -----BEGIN CERTIFICATE----- ' ) ) ) ,
CONSTRAINT ` nano_devices_chk_2 ` CHECK ( ( ( ` serial_number ` is null ) or ( ` serial_number ` < > _utf8mb4 ' ' ) ) ) ,
CONSTRAINT ` nano_devices_chk_3 ` CHECK ( ( ( ` unlock_token ` is null ) or ( length ( ` unlock_token ` ) > 0 ) ) ) ,
CONSTRAINT ` nano_devices_chk_4 ` CHECK ( ( ` authenticate ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_devices_chk_5 ` CHECK ( ( ( ` token_update ` is null ) or ( ` token_update ` < > _utf8mb4 ' ' ) ) ) ,
CONSTRAINT ` nano_devices_chk_6 ` CHECK ( ( ( ` bootstrap_token_b64 ` is null ) or ( ` bootstrap_token_b64 ` < > _utf8mb4 ' ' ) ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_enrollment_queue ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-10-05 22:53:54 +00:00
` active ` tinyint ( 1 ) NOT NULL DEFAULT ' 1 ' ,
2024-07-23 14:01:23 +00:00
` priority ` tinyint NOT NULL DEFAULT ' 0 ' ,
2024-07-28 14:17:27 +00:00
` created_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` id ` , ` command_uuid ` ) ,
KEY ` command_uuid ` ( ` command_uuid ` ) ,
2024-07-23 14:01:23 +00:00
KEY ` priority ` ( ` priority ` DESC , ` created_at ` ) ,
2022-10-05 22:53:54 +00:00
CONSTRAINT ` nano_enrollment_queue_ibfk_1 ` FOREIGN KEY ( ` id ` ) REFERENCES ` nano_enrollments ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` nano_enrollment_queue_ibfk_2 ` FOREIGN KEY ( ` command_uuid ` ) REFERENCES ` nano_commands ` ( ` command_uuid ` ) ON DELETE CASCADE ON UPDATE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_enrollments ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` device_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` user_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` type ` varchar ( 31 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` topic ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` push_magic ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` token_hex ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-10-05 22:53:54 +00:00
` enabled ` tinyint ( 1 ) NOT NULL DEFAULT ' 1 ' ,
2024-07-23 14:01:23 +00:00
` token_update_tally ` int NOT NULL DEFAULT ' 1 ' ,
` last_seen_at ` timestamp NOT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
` enrolled_from_migration ` tinyint unsigned NOT NULL DEFAULT ' 0 ' ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` user_id ` ( ` user_id ` ) ,
KEY ` device_id ` ( ` device_id ` ) ,
KEY ` type ` ( ` type ` ) ,
CONSTRAINT ` nano_enrollments_ibfk_1 ` FOREIGN KEY ( ` device_id ` ) REFERENCES ` nano_devices ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
2024-07-23 14:01:23 +00:00
CONSTRAINT ` nano_enrollments_ibfk_2 ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` nano_users ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` nano_enrollments_chk_1 ` CHECK ( ( ` id ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_enrollments_chk_2 ` CHECK ( ( ` type ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_enrollments_chk_3 ` CHECK ( ( ` topic ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_enrollments_chk_4 ` CHECK ( ( ` push_magic ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_enrollments_chk_5 ` CHECK ( ( ` token_hex ` < > _utf8mb4 ' ' ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_push_certs ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` topic ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` cert_pem ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
` key_pem ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` stale_token ` int NOT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` topic ` ) ,
CONSTRAINT ` nano_push_certs_chk_1 ` CHECK ( ( ` topic ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_push_certs_chk_2 ` CHECK ( ( substr ( ` cert_pem ` , 1 , 27 ) = _utf8mb4 ' -----BEGIN CERTIFICATE----- ' ) ) ,
CONSTRAINT ` nano_push_certs_chk_3 ` CHECK ( ( substr ( ` key_pem ` , 1 , 5 ) = _utf8mb4 ' ----- ' ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` nano_users ` (
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` device_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` user_short_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` user_long_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` token_update ` text COLLATE utf8mb4_unicode_ci ,
2022-10-05 22:53:54 +00:00
` token_update_at ` timestamp NULL DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` user_authenticate ` text COLLATE utf8mb4_unicode_ci ,
2022-10-05 22:53:54 +00:00
` user_authenticate_at ` timestamp NULL DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` user_authenticate_digest ` text COLLATE utf8mb4_unicode_ci ,
2022-10-05 22:53:54 +00:00
` user_authenticate_digest_at ` timestamp NULL DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` id ` , ` device_id ` ) ,
2024-08-16 14:32:38 +00:00
UNIQUE KEY ` idx_unique_id ` ( ` id ` ) ,
2022-10-05 22:53:54 +00:00
KEY ` device_id ` ( ` device_id ` ) ,
2024-07-23 14:01:23 +00:00
CONSTRAINT ` nano_users_ibfk_1 ` FOREIGN KEY ( ` device_id ` ) REFERENCES ` nano_devices ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` nano_users_chk_1 ` CHECK ( ( ( ` user_short_name ` is null ) or ( ` user_short_name ` < > _utf8mb4 ' ' ) ) ) ,
CONSTRAINT ` nano_users_chk_2 ` CHECK ( ( ( ` user_long_name ` is null ) or ( ` user_long_name ` < > _utf8mb4 ' ' ) ) ) ,
CONSTRAINT ` nano_users_chk_3 ` CHECK ( ( ( ` token_update ` is null ) or ( ` token_update ` < > _utf8mb4 ' ' ) ) ) ,
CONSTRAINT ` nano_users_chk_4 ` CHECK ( ( ( ` user_authenticate ` is null ) or ( ` user_authenticate ` < > _utf8mb4 ' ' ) ) ) ,
CONSTRAINT ` nano_users_chk_5 ` CHECK ( ( ( ` user_authenticate_digest ` is null ) or ( ` user_authenticate_digest ` < > _utf8mb4 ' ' ) ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
SET @ saved_cs_client = @ @ character_set_client ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-10-14 20:41:06 +00:00
/* !50001 CREATE VIEW `nano_view_queue` AS SELECT
2022-10-05 22:53:54 +00:00
1 AS ` id ` ,
1 AS ` created_at ` ,
1 AS ` active ` ,
1 AS ` priority ` ,
1 AS ` command_uuid ` ,
1 AS ` request_type ` ,
1 AS ` command ` ,
1 AS ` result_updated_at ` ,
1 AS ` status ` ,
1 AS ` result ` * / ;
SET character_set_client = @ saved_cs_client ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` network_interfaces ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` mac ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` ip_address ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` broadcast ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` ibytes ` bigint NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` interface ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` ipackets ` bigint NOT NULL DEFAULT ' 0 ' ,
` last_change ` bigint NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` mask ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` metric ` int NOT NULL DEFAULT ' 0 ' ,
` mtu ` int NOT NULL DEFAULT ' 0 ' ,
` obytes ` bigint NOT NULL DEFAULT ' 0 ' ,
` ierrors ` bigint NOT NULL DEFAULT ' 0 ' ,
` oerrors ` bigint NOT NULL DEFAULT ' 0 ' ,
` opackets ` bigint NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` point_to_point ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` type ` int NOT NULL DEFAULT ' 0 ' ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_network_interfaces_unique_ip_host_intf ` ( ` ip_address ` , ` host_id ` , ` interface ` ) ,
KEY ` idx_network_interfaces_hosts_fk ` ( ` host_id ` ) ,
FULLTEXT KEY ` ip_address_search ` ( ` ip_address ` ) ,
CONSTRAINT ` network_interfaces_ibfk_1 ` FOREIGN KEY ( ` host_id ` ) REFERENCES ` hosts ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-28 15:12:21 +00:00
CREATE TABLE ` operating_system_vulnerabilities ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` operating_system_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` cve ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` source ` smallint DEFAULT ' 0 ' ,
2022-10-28 15:12:21 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` resolved_in_version ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-01-24 19:18:57 +00:00
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2022-10-28 15:12:21 +00:00
PRIMARY KEY ( ` id ` ) ,
2025-02-25 02:59:56 +00:00
UNIQUE KEY ` idx_os_vulnerabilities_unq_os_id_cve ` ( ` operating_system_id ` , ` cve ` ) ,
KEY ` idx_os_vulnerabilities_cve ` ( ` cve ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-28 15:12:21 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-08-09 18:34:41 +00:00
CREATE TABLE ` operating_systems ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` version ` varchar ( 150 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` arch ` varchar ( 150 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` kernel_version ` varchar ( 150 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` platform ` varchar ( 50 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` display_version ` varchar ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` os_version_id ` int unsigned DEFAULT NULL ,
2022-08-09 18:34:41 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-01-24 19:18:57 +00:00
UNIQUE KEY ` idx_unique_os ` ( ` name ` , ` version ` , ` arch ` , ` kernel_version ` , ` platform ` , ` display_version ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-08-09 18:34:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` osquery_options ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` override_type ` int NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` override_identifier ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2021-08-20 15:27:41 +00:00
` options ` json NOT NULL ,
PRIMARY KEY ( ` id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
INSERT INTO ` osquery_options ` VALUES ( 1 , 0 , ' ' , ' {\"options\": {\"logger_plugin\": \"tls\", \"pack_delimiter\": \"/\", \"logger_tls_period\": 10, \"distributed_plugin\": \"tls\", \"disable_distributed\": false, \"logger_tls_endpoint\": \"/api/v1/osquery/log\", \"distributed_interval\": 10, \"distributed_tls_max_attempts\": 3}, \"decorators\": {\"load\": [\"SELECT uuid AS host_uuid FROM system_info;\", \"SELECT hostname AS hostname FROM system_info;\"]}} ' ) ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` pack_targets ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` pack_id ` int unsigned DEFAULT NULL ,
` type ` int DEFAULT NULL ,
` target_id ` int unsigned NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` constraint_pack_target_unique ` ( ` pack_id ` , ` target_id ` , ` type ` ) ,
CONSTRAINT ` pack_targets_ibfk_1 ` FOREIGN KEY ( ` pack_id ` ) REFERENCES ` packs ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` packs ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
` disabled ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` description ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` platform ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` pack_type ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_pack_unique_name ` ( ` name ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` password_reset_requests ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` expires_at ` timestamp NOT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` user_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` token ` varchar ( 1024 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-24 20:24:52 +00:00
CREATE TABLE ` policies ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-24 20:24:52 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` resolution ` text COLLATE utf8mb4_unicode_ci ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` query ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
` description ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` author_id ` int unsigned DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` platforms ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2022-12-06 14:59:20 +00:00
` critical ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-02-02 23:41:32 +00:00
` checksum ` binary ( 16 ) NOT NULL ,
2024-07-23 14:01:23 +00:00
` calendar_events_enabled ` tinyint unsigned NOT NULL DEFAULT ' 0 ' ,
2024-08-30 17:13:25 +00:00
` software_installer_id ` int unsigned DEFAULT NULL ,
2024-10-04 01:03:40 +00:00
` script_id ` int unsigned DEFAULT NULL ,
2025-01-13 21:53:24 +00:00
` vpp_apps_teams_id ` int unsigned DEFAULT NULL ,
2021-08-24 20:24:52 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-02-02 23:41:32 +00:00
UNIQUE KEY ` idx_policies_checksum ` ( ` checksum ` ) ,
2021-11-24 17:16:42 +00:00
KEY ` idx_policies_author_id ` ( ` author_id ` ) ,
KEY ` idx_policies_team_id ` ( ` team_id ` ) ,
2024-08-30 17:13:25 +00:00
KEY ` fk_policies_software_installer_id ` ( ` software_installer_id ` ) ,
2024-10-04 01:03:40 +00:00
KEY ` fk_policies_script_id ` ( ` script_id ` ) ,
2025-01-13 21:53:24 +00:00
KEY ` fk_policies_vpp_apps_team_id ` ( ` vpp_apps_teams_id ` ) ,
2024-08-30 17:13:25 +00:00
CONSTRAINT ` policies_ibfk_3 ` FOREIGN KEY ( ` software_installer_id ` ) REFERENCES ` software_installers ` ( ` id ` ) ,
2024-10-04 01:03:40 +00:00
CONSTRAINT ` policies_ibfk_4 ` FOREIGN KEY ( ` script_id ` ) REFERENCES ` scripts ` ( ` id ` ) ,
2025-01-13 21:53:24 +00:00
CONSTRAINT ` policies_ibfk_5 ` FOREIGN KEY ( ` vpp_apps_teams_id ` ) REFERENCES ` vpp_apps_teams ` ( ` id ` ) ,
2021-11-24 17:16:42 +00:00
CONSTRAINT ` policies_queries_ibfk_1 ` FOREIGN KEY ( ` author_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-24 20:24:52 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-12-16 21:00:54 +00:00
CREATE TABLE ` policy_automation_iterations ` (
2024-07-23 14:01:23 +00:00
` policy_id ` int unsigned NOT NULL ,
` iteration ` int NOT NULL ,
2022-12-16 21:00:54 +00:00
PRIMARY KEY ( ` policy_id ` ) ,
CONSTRAINT ` policy_automation_iterations_ibfk_1 ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-12-16 21:00:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-04-02 16:36:03 +00:00
CREATE TABLE ` policy_labels ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` policy_id ` int unsigned NOT NULL ,
` label_id ` int unsigned NOT NULL ,
` exclude ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_policy_labels_policy_label ` ( ` policy_id ` , ` label_id ` ) ,
KEY ` policy_labels_label_id ` ( ` label_id ` ) ,
CONSTRAINT ` policy_labels_label_id ` FOREIGN KEY ( ` label_id ` ) REFERENCES ` labels ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` policy_labels_policy_id ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-12-03 16:10:11 +00:00
CREATE TABLE ` policy_membership ` (
2024-07-23 14:01:23 +00:00
` policy_id ` int unsigned NOT NULL ,
` host_id ` int unsigned NOT NULL ,
2021-08-24 20:24:52 +00:00
` passes ` tinyint ( 1 ) DEFAULT NULL ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` automation_iteration ` int DEFAULT NULL ,
2021-12-03 16:10:11 +00:00
PRIMARY KEY ( ` policy_id ` , ` host_id ` ) ,
2021-08-24 20:24:52 +00:00
KEY ` idx_policy_membership_passes ` ( ` passes ` ) ,
KEY ` idx_policy_membership_host_id_passes ` ( ` host_id ` , ` passes ` ) ,
2022-01-12 17:07:51 +00:00
CONSTRAINT ` policy_membership_ibfk_1 ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-24 20:24:52 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-21 19:52:06 +00:00
CREATE TABLE ` policy_stats ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` policy_id ` int unsigned NOT NULL ,
2024-09-12 17:23:25 +00:00
` inherited_team_id ` int unsigned DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` passing_host_count ` mediumint unsigned NOT NULL DEFAULT ' 0 ' ,
` failing_host_count ` mediumint unsigned NOT NULL DEFAULT ' 0 ' ,
2023-11-21 19:52:06 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-09-12 17:23:25 +00:00
` inherited_team_id_char ` char ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ( if ( ( ` inherited_team_id ` is null ) , _utf8mb4 ' global ' , cast ( ` inherited_team_id ` as char charset utf8mb4 ) ) ) VIRTUAL ,
2023-11-21 19:52:06 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-09-12 17:23:25 +00:00
UNIQUE KEY ` policy_id ` ( ` policy_id ` , ` inherited_team_id_char ` ) ,
2023-11-21 19:52:06 +00:00
CONSTRAINT ` policy_stats_ibfk_1 ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE CASCADE
2024-09-12 17:23:25 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-11-21 19:52:06 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` queries ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
` saved ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` description ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
` query ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` author_id ` int unsigned DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
` observer_can_run ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned DEFAULT NULL ,
2023-07-10 18:53:00 +00:00
` team_id_char ` char ( 10 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2023-07-10 17:22:51 +00:00
` platform ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` min_osquery_version ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` schedule_interval ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` automations_enabled ` tinyint unsigned NOT NULL DEFAULT ' 0 ' ,
2023-07-10 17:22:51 +00:00
` logging_type ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' snapshot ' ,
2023-10-05 12:29:40 +00:00
` discard_data ` tinyint ( 1 ) NOT NULL DEFAULT ' 1 ' ,
2024-09-30 21:39:17 +00:00
` is_scheduled ` tinyint ( 1 ) GENERATED ALWAYS AS ( ( ` schedule_interval ` > 0 ) ) STORED NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
2023-07-06 21:28:25 +00:00
UNIQUE KEY ` idx_team_id_name_unq ` ( ` team_id_char ` , ` name ` ) ,
2023-07-26 21:13:27 +00:00
UNIQUE KEY ` idx_name_team_id_unq ` ( ` name ` , ` team_id_char ` ) ,
2021-08-20 15:27:41 +00:00
KEY ` author_id ` ( ` author_id ` ) ,
2023-07-26 21:13:27 +00:00
KEY ` idx_team_id_saved_auto_interval ` ( ` team_id ` , ` saved ` , ` automations_enabled ` , ` schedule_interval ` ) ,
2024-09-30 21:39:17 +00:00
KEY ` idx_queries_schedule_automations ` ( ` is_scheduled ` , ` automations_enabled ` ) ,
2023-07-06 21:28:25 +00:00
CONSTRAINT ` queries_ibfk_1 ` FOREIGN KEY ( ` author_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL ,
2023-07-10 18:53:00 +00:00
CONSTRAINT ` queries_ibfk_2 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-03-11 13:45:01 +00:00
CREATE TABLE ` query_labels ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` query_id ` int unsigned NOT NULL ,
` label_id ` int unsigned NOT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_query_labels_query_label ` ( ` query_id ` , ` label_id ` ) ,
KEY ` query_labels_label_id ` ( ` label_id ` ) ,
CONSTRAINT ` query_labels_label_id ` FOREIGN KEY ( ` label_id ` ) REFERENCES ` labels ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` query_labels_query_id ` FOREIGN KEY ( ` query_id ` ) REFERENCES ` queries ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-10-05 02:56:17 +00:00
CREATE TABLE ` query_results ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` query_id ` int unsigned NOT NULL ,
` host_id ` int unsigned NOT NULL ,
2023-10-05 02:56:17 +00:00
` osquery_version ` varchar ( 50 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` error ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
` last_fetched ` timestamp NOT NULL ,
2023-10-05 02:56:17 +00:00
` data ` json DEFAULT NULL ,
PRIMARY KEY ( ` id ` ) ,
2024-08-14 13:00:27 +00:00
KEY ` idx_query_id_host_id_last_fetched ` ( ` query_id ` , ` host_id ` , ` last_fetched ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-10-05 02:56:17 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` scep_certificates ` (
2024-07-23 14:01:23 +00:00
` serial ` bigint NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 1024 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2022-10-05 22:53:54 +00:00
` not_valid_before ` datetime NOT NULL ,
` not_valid_after ` datetime NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` certificate_pem ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
2022-10-05 22:53:54 +00:00
` revoked ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` serial ` ) ,
2024-07-23 14:01:23 +00:00
CONSTRAINT ` scep_certificates_ibfk_1 ` FOREIGN KEY ( ` serial ` ) REFERENCES ` scep_serials ` ( ` serial ` ) ,
CONSTRAINT ` scep_certificates_chk_1 ` CHECK ( ( substr ( ` certificate_pem ` , 1 , 27 ) = _utf8mb4 ' -----BEGIN CERTIFICATE----- ' ) ) ,
CONSTRAINT ` scep_certificates_chk_2 ` CHECK ( ( ( ` name ` is null ) or ( ` name ` < > _utf8mb4 ' ' ) ) )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-10-05 22:53:54 +00:00
CREATE TABLE ` scep_serials ` (
2024-07-23 14:01:23 +00:00
` serial ` bigint NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` serial ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-10-05 22:53:54 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` scheduled_queries ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` pack_id ` int unsigned DEFAULT NULL ,
` query_id ` int unsigned DEFAULT NULL ,
` interval ` int unsigned DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
` snapshot ` tinyint ( 1 ) DEFAULT NULL ,
` removed ` tinyint ( 1 ) DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` platform ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT ' ' ,
` version ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` shard ` int unsigned DEFAULT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` query_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` description ` varchar ( 1023 ) COLLATE utf8mb4_unicode_ci DEFAULT ' ' ,
2021-08-20 15:27:41 +00:00
` denylist ` tinyint ( 1 ) DEFAULT NULL ,
2023-07-10 18:56:44 +00:00
` team_id_char ` char ( 10 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` unique_names_in_packs ` ( ` name ` , ` pack_id ` ) ,
KEY ` scheduled_queries_pack_id ` ( ` pack_id ` ) ,
KEY ` scheduled_queries_query_name ` ( ` query_name ` ) ,
2023-07-10 18:53:00 +00:00
KEY ` fk_scheduled_queries_queries ` ( ` team_id_char ` , ` query_name ` ) ,
2023-07-10 20:01:46 +00:00
CONSTRAINT ` scheduled_queries_ibfk_1 ` FOREIGN KEY ( ` team_id_char ` , ` query_name ` ) REFERENCES ` queries ` ( ` team_id_char ` , ` name ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
2023-07-06 21:28:25 +00:00
CONSTRAINT ` scheduled_queries_pack_id ` FOREIGN KEY ( ` pack_id ` ) REFERENCES ` packs ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` scheduled_query_stats ` (
2024-07-23 14:01:23 +00:00
` host_id ` int unsigned NOT NULL ,
` scheduled_query_id ` int unsigned NOT NULL ,
` average_memory ` bigint unsigned NOT NULL ,
2021-08-20 15:27:41 +00:00
` denylisted ` tinyint ( 1 ) DEFAULT NULL ,
2024-07-23 14:01:23 +00:00
` executions ` bigint unsigned NOT NULL ,
` schedule_interval ` int DEFAULT NULL ,
` last_executed ` timestamp NULL DEFAULT NULL ,
` output_size ` bigint unsigned NOT NULL ,
` system_time ` bigint unsigned NOT NULL ,
` user_time ` bigint unsigned NOT NULL ,
` wall_time ` bigint unsigned NOT NULL ,
` query_type ` tinyint NOT NULL DEFAULT ' 0 ' ,
2023-12-13 20:46:59 +00:00
PRIMARY KEY ( ` host_id ` , ` scheduled_query_id ` , ` query_type ` ) ,
2021-08-20 15:27:41 +00:00
KEY ` scheduled_query_id ` ( ` scheduled_query_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-04-01 16:02:24 +00:00
CREATE TABLE ` scim_groups ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` external_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` display_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_scim_groups_display_name ` ( ` display_name ` ) ,
KEY ` idx_scim_groups_external_id ` ( ` external_id ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2025-04-10 19:08:45 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` scim_last_request ` (
` id ` tinyint unsigned NOT NULL DEFAULT ' 1 ' ,
` status ` varchar ( 31 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` details ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` 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 ;
2025-04-01 16:02:24 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` scim_user_emails ` (
` id ` bigint unsigned NOT NULL AUTO_INCREMENT ,
` scim_user_id ` int unsigned NOT NULL ,
` email ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` primary ` tinyint ( 1 ) DEFAULT NULL ,
` type ` varchar ( 31 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_scim_user_emails_email_type ` ( ` type ` , ` email ` ) ,
KEY ` fk_scim_user_emails_scim_user_id ` ( ` scim_user_id ` ) ,
CONSTRAINT ` fk_scim_user_emails_scim_user_id ` FOREIGN KEY ( ` scim_user_id ` ) REFERENCES ` scim_users ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` scim_user_group ` (
` scim_user_id ` int unsigned NOT NULL ,
` group_id ` int unsigned NOT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` scim_user_id ` , ` group_id ` ) ,
KEY ` fk_scim_user_group_group_id ` ( ` group_id ` ) ,
CONSTRAINT ` fk_scim_user_group_group_id ` FOREIGN KEY ( ` group_id ` ) REFERENCES ` scim_groups ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_scim_user_group_scim_user_id ` FOREIGN KEY ( ` scim_user_id ` ) REFERENCES ` scim_users ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` scim_users ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` external_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` user_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` given_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` family_name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` active ` tinyint ( 1 ) DEFAULT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_scim_users_user_name ` ( ` user_name ` ) ,
KEY ` idx_scim_users_external_id ` ( ` external_id ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-02-29 15:43:19 +00:00
CREATE TABLE ` script_contents ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
2024-02-29 15:43:19 +00:00
` md5_checksum ` binary ( 16 ) NOT NULL ,
2024-07-23 14:01:23 +00:00
` contents ` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-02-29 15:43:19 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_script_contents_md5_checksum ` ( ` md5_checksum ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-02-11 19:53:11 +00:00
CREATE TABLE ` script_upcoming_activities ` (
` upcoming_activity_id ` bigint unsigned NOT NULL ,
` script_id ` int unsigned DEFAULT NULL ,
` script_content_id ` int unsigned DEFAULT NULL ,
` policy_id ` int unsigned DEFAULT NULL ,
` setup_experience_script_id ` int unsigned DEFAULT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` upcoming_activity_id ` ) ,
KEY ` fk_script_upcoming_activities_script_id ` ( ` script_id ` ) ,
KEY ` fk_script_upcoming_activities_script_content_id ` ( ` script_content_id ` ) ,
KEY ` fk_script_upcoming_activities_policy_id ` ( ` policy_id ` ) ,
KEY ` fk_script_upcoming_activities_setup_experience_script_id ` ( ` setup_experience_script_id ` ) ,
CONSTRAINT ` fk_script_upcoming_activities_policy_id ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` fk_script_upcoming_activities_script_content_id ` FOREIGN KEY ( ` script_content_id ` ) REFERENCES ` script_contents ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_script_upcoming_activities_script_id ` FOREIGN KEY ( ` script_id ` ) REFERENCES ` scripts ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` fk_script_upcoming_activities_setup_experience_script_id ` FOREIGN KEY ( ` setup_experience_script_id ` ) REFERENCES ` setup_experience_scripts ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` fk_script_upcoming_activities_upcoming_activity_id ` FOREIGN KEY ( ` upcoming_activity_id ` ) REFERENCES ` upcoming_activities ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-09-11 15:54:34 +00:00
CREATE TABLE ` scripts ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` team_id ` int unsigned DEFAULT NULL ,
` global_or_team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2023-09-11 15:54:34 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` script_content_id ` int unsigned DEFAULT NULL ,
2023-09-11 15:54:34 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_scripts_global_or_team_id_name ` ( ` global_or_team_id ` , ` name ` ) ,
2023-10-10 22:00:45 +00:00
UNIQUE KEY ` idx_scripts_team_name ` ( ` team_id ` , ` name ` ) ,
2024-02-29 15:43:19 +00:00
KEY ` script_content_id ` ( ` script_content_id ` ) ,
CONSTRAINT ` scripts_ibfk_1 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` scripts_ibfk_2 ` FOREIGN KEY ( ` script_content_id ` ) REFERENCES ` script_contents ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-09-11 15:54:34 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-12-10 21:32:51 +00:00
CREATE TABLE ` secret_variables ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` value ` blob NOT NULL ,
2024-12-30 19:07:32 +00:00
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2024-12-10 21:32:51 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-12-10 23:17:21 +00:00
UNIQUE KEY ` idx_secret_variables_name ` ( ` name ` )
2024-12-10 21:32:51 +00:00
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` sessions ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` accessed_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` user_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` key ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_session_unique_key ` ( ` key ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-09-30 15:08:50 +00:00
CREATE TABLE ` setup_experience_scripts ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` team_id ` int unsigned DEFAULT NULL ,
` global_or_team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
` script_content_id ` int unsigned DEFAULT NULL ,
PRIMARY KEY ( ` id ` ) ,
2024-10-09 16:43:12 +00:00
UNIQUE KEY ` idx_setup_experience_scripts_global_or_team_id ` ( ` global_or_team_id ` ) ,
2024-09-30 15:08:50 +00:00
KEY ` idx_script_content_id ` ( ` script_content_id ` ) ,
2024-10-09 16:43:12 +00:00
KEY ` fk_setup_experience_scripts_ibfk_1 ` ( ` team_id ` ) ,
2024-09-30 15:08:50 +00:00
CONSTRAINT ` fk_setup_experience_scripts_ibfk_1 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` fk_setup_experience_scripts_ibfk_2 ` FOREIGN KEY ( ` script_content_id ` ) REFERENCES ` script_contents ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` setup_experience_status_results ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_uuid ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
Mark setup experience installs as "cancelled" and later fail them when certain bulk actions happen (#29355)
Still adding tests but wanted to get this up for review of the overall
"shape" of the fix
When certain things happen like installer updates we delete pending
upcoming_activities(UA) and host_software_install(HSI) entries and need
to mark setup_experience_status_results(SESR) cancelled. When this
happens if that UA/HSI are being depended on by setup experience we need
to make sure that that setup experience result eventually gets marked
failed.
I kind of went back and forth a few times on how best to do this and
avoid race conditions. One thing I tried was looking at existence of the
UA/HSI but found that naively just trying to look at that in relation to
the SESR entry seemed to have a few race conditions that were hard to
resolve. There are a few possible states here we need to account for
such as:
un-activated, totally not yet running software install cancelled
activated but not yet running on the host software install cancelled
activated and running on the host software install cancelled before
results are completely reported back
What I eventually came around to was essentially that we want to mark
the SESR cancelled in the same transaction we delete the HSI/UA in. We
then finalize it by marking it failed and sending the activity the next
time the host fetches setupm experience results. The new cancelled
status never leaves fleet. This is a bit ugly but in my testing avoided
the race conditions and works well.
Note that to actually avoid setup experience hanging entirely we still
need to fix #29357 which encompasses several cases where the unified
queue can get completely stuck for a host
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
<!-- Note that API documentation changes are now addressed by the
product design team. -->
- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [ ] Added support on fleet's osquery simulator `cmd/osquery-perf` for
new osquery data ingestion features.
- [ ] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes
- [ ] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [ ] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [ ] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [ ] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [ ] Added/updated automated tests
- [ ] Manual QA for all new/changed functionality
- For Orbit and Fleet Desktop changes:
- [ ] Make sure fleetd is compatible with the latest released version of
Fleet (see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/workflows/fleetd-development-and-release-strategy.md)).
- [ ] Orbit runs on macOS, Linux and Windows. Check if the orbit
feature/bugfix should only apply to one platform (`runtime.GOOS`).
- [ ] Manual QA must be performed in the three main OSs, macOS, Windows
and Linux.
- [ ] Auto-update manual QA, from released version of component to new
version (see [tools/tuf/test](../tools/tuf/test/README.md)).
- [ ] For unreleased bug fixes in a release candidate, confirmed that
the fix is not expected to adversely impact load test results or alerted
the release DRI if additional load testing is needed.
2025-05-27 20:52:51 +00:00
` status ` enum ( ' pending ' , ' running ' , ' success ' , ' failure ' , ' cancelled ' ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-10-04 20:49:41 +00:00
` software_installer_id ` int unsigned DEFAULT NULL ,
2024-10-18 16:01:53 +00:00
` host_software_installs_execution_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-10-04 20:49:41 +00:00
` vpp_app_team_id ` int unsigned DEFAULT NULL ,
2024-09-30 15:08:50 +00:00
` nano_command_uuid ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-10-04 20:49:41 +00:00
` setup_experience_script_id ` int unsigned DEFAULT NULL ,
2024-09-30 15:08:50 +00:00
` script_execution_id ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
` error ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
PRIMARY KEY ( ` id ` ) ,
KEY ` idx_setup_experience_scripts_host_uuid ` ( ` host_uuid ` ) ,
2024-10-18 16:01:53 +00:00
KEY ` idx_setup_experience_scripts_hsi_id ` ( ` host_software_installs_execution_id ` ) ,
2024-09-30 15:08:50 +00:00
KEY ` idx_setup_experience_scripts_nano_command_uuid ` ( ` nano_command_uuid ` ) ,
KEY ` idx_setup_experience_scripts_script_execution_id ` ( ` script_execution_id ` ) ,
2024-10-04 20:49:41 +00:00
KEY ` fk_setup_experience_status_results_si_id ` ( ` software_installer_id ` ) ,
KEY ` fk_setup_experience_status_results_va_id ` ( ` vpp_app_team_id ` ) ,
KEY ` fk_setup_experience_status_results_ses_id ` ( ` setup_experience_script_id ` ) ,
CONSTRAINT ` fk_setup_experience_status_results_ses_id ` FOREIGN KEY ( ` setup_experience_script_id ` ) REFERENCES ` setup_experience_scripts ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_setup_experience_status_results_si_id ` FOREIGN KEY ( ` software_installer_id ` ) REFERENCES ` software_installers ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_setup_experience_status_results_va_id ` FOREIGN KEY ( ` vpp_app_team_id ` ) REFERENCES ` vpp_apps_teams ` ( ` id ` ) ON DELETE CASCADE
Mark setup experience installs as "cancelled" and later fail them when certain bulk actions happen (#29355)
Still adding tests but wanted to get this up for review of the overall
"shape" of the fix
When certain things happen like installer updates we delete pending
upcoming_activities(UA) and host_software_install(HSI) entries and need
to mark setup_experience_status_results(SESR) cancelled. When this
happens if that UA/HSI are being depended on by setup experience we need
to make sure that that setup experience result eventually gets marked
failed.
I kind of went back and forth a few times on how best to do this and
avoid race conditions. One thing I tried was looking at existence of the
UA/HSI but found that naively just trying to look at that in relation to
the SESR entry seemed to have a few race conditions that were hard to
resolve. There are a few possible states here we need to account for
such as:
un-activated, totally not yet running software install cancelled
activated but not yet running on the host software install cancelled
activated and running on the host software install cancelled before
results are completely reported back
What I eventually came around to was essentially that we want to mark
the SESR cancelled in the same transaction we delete the HSI/UA in. We
then finalize it by marking it failed and sending the activity the next
time the host fetches setupm experience results. The new cancelled
status never leaves fleet. This is a bit ugly but in my testing avoided
the race conditions and works well.
Note that to actually avoid setup experience hanging entirely we still
need to fix #29357 which encompasses several cases where the unified
queue can get completely stuck for a host
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
<!-- Note that API documentation changes are now addressed by the
product design team. -->
- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [ ] Added support on fleet's osquery simulator `cmd/osquery-perf` for
new osquery data ingestion features.
- [ ] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes
- [ ] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [ ] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [ ] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [ ] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [ ] Added/updated automated tests
- [ ] Manual QA for all new/changed functionality
- For Orbit and Fleet Desktop changes:
- [ ] Make sure fleetd is compatible with the latest released version of
Fleet (see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/workflows/fleetd-development-and-release-strategy.md)).
- [ ] Orbit runs on macOS, Linux and Windows. Check if the orbit
feature/bugfix should only apply to one platform (`runtime.GOOS`).
- [ ] Manual QA must be performed in the three main OSs, macOS, Windows
and Linux.
- [ ] Auto-update manual QA, from released version of component to new
version (see [tools/tuf/test](../tools/tuf/test/README.md)).
- [ ] For unreleased bug fixes in a release candidate, confirmed that
the fix is not expected to adversely impact load test results or alerted
the release DRI if additional load testing is needed.
2025-05-27 20:52:51 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-09-30 15:08:50 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` software ` (
2024-07-23 14:01:23 +00:00
` id ` bigint unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` version ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` source ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` bundle_identifier ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT ' ' ,
` release ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` vendor_old ` varchar ( 32 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` arch ` varchar ( 16 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` vendor ` varchar ( 114 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2023-12-01 01:06:17 +00:00
` browser ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` extension_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` title_id ` int unsigned DEFAULT NULL ,
2023-12-12 22:51:58 +00:00
` checksum ` binary ( 16 ) NOT NULL ,
2025-04-11 23:19:07 +00:00
` name_source ` enum ( ' basic ' , ' bundle_4.67 ' ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' basic ' ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
2023-12-12 22:51:58 +00:00
UNIQUE KEY ` idx_software_checksum ` ( ` checksum ` ) ,
2023-12-01 14:33:07 +00:00
KEY ` software_source_vendor_idx ` ( ` source ` , ` vendor_old ` ) ,
2023-12-07 23:43:37 +00:00
KEY ` title_id ` ( ` title_id ` ) ,
2024-11-25 16:03:19 +00:00
KEY ` idx_sw_name_source_browser ` ( ` name ` , ` source ` , ` browser ` ) ,
KEY ` software_listing_idx ` ( ` name ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-05-02 15:41:26 +00:00
CREATE TABLE ` software_categories ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 63 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_software_categories_name ` ( ` name ` )
) ENGINE = InnoDB AUTO_INCREMENT = 5 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
INSERT INTO ` software_categories ` VALUES ( 2 , ' Browsers ' ) , ( 3 , ' Communication ' ) , ( 4 , ' Developer tools ' ) , ( 1 , ' Productivity ' ) ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` software_cpe ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` software_id ` bigint unsigned DEFAULT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` cpe ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
2023-04-03 17:45:18 +00:00
UNIQUE KEY ` unq_software_id ` ( ` software_id ` ) ,
2022-02-02 21:34:37 +00:00
KEY ` software_cpe_cpe_idx ` ( ` cpe ` ) ,
2021-08-20 15:27:41 +00:00
CONSTRAINT ` software_cpe_ibfk_1 ` FOREIGN KEY ( ` software_id ` ) REFERENCES ` software ` ( ` id ` ) ON DELETE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` software_cve ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` cve ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` source ` int DEFAULT ' 0 ' ,
` software_id ` bigint unsigned DEFAULT NULL ,
` resolved_in_version ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
2025-02-14 17:53:41 +00:00
UNIQUE KEY ` unq_software_id_cve ` ( ` software_id ` , ` cve ` ) ,
KEY ` idx_software_cve_cve ` ( ` cve ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-02-09 15:16:50 +00:00
CREATE TABLE ` software_host_counts ` (
2024-07-23 14:01:23 +00:00
` software_id ` bigint unsigned NOT NULL ,
` hosts_count ` int unsigned NOT NULL ,
2022-02-09 15:16:50 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2024-07-30 17:19:05 +00:00
` global_stats ` tinyint unsigned NOT NULL DEFAULT ' 0 ' ,
PRIMARY KEY ( ` software_id ` , ` team_id ` , ` global_stats ` ) ,
2022-02-28 18:55:14 +00:00
KEY ` idx_software_host_counts_updated_at_software_id ` ( ` updated_at ` , ` software_id ` ) ,
KEY ` idx_software_host_counts_team_id_hosts_count_software_id ` ( ` team_id ` , ` hosts_count ` , ` software_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-02-09 15:16:50 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-02-11 19:53:11 +00:00
CREATE TABLE ` software_install_upcoming_activities ` (
` upcoming_activity_id ` bigint unsigned NOT NULL ,
` software_installer_id ` int unsigned DEFAULT NULL ,
` policy_id ` int unsigned DEFAULT NULL ,
` software_title_id ` int unsigned DEFAULT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` upcoming_activity_id ` ) ,
KEY ` fk_software_install_upcoming_activities_software_installer_id ` ( ` software_installer_id ` ) ,
KEY ` fk_software_install_upcoming_activities_policy_id ` ( ` policy_id ` ) ,
KEY ` fk_software_install_upcoming_activities_software_title_id ` ( ` software_title_id ` ) ,
CONSTRAINT ` fk_software_install_upcoming_activities_policy_id ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` fk_software_install_upcoming_activities_software_installer_id ` FOREIGN KEY ( ` software_installer_id ` ) REFERENCES ` software_installers ` ( ` id ` ) ON DELETE SET NULL ON UPDATE CASCADE ,
CONSTRAINT ` fk_software_install_upcoming_activities_software_title_id ` FOREIGN KEY ( ` software_title_id ` ) REFERENCES ` software_titles ` ( ` id ` ) ON DELETE SET NULL ON UPDATE CASCADE ,
CONSTRAINT ` fk_software_install_upcoming_activities_upcoming_activity_id ` FOREIGN KEY ( ` upcoming_activity_id ` ) REFERENCES ` upcoming_activities ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-12-10 16:40:46 +00:00
CREATE TABLE ` software_installer_labels ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` software_installer_id ` int unsigned NOT NULL ,
` label_id ` int unsigned NOT NULL ,
` exclude ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-12-10 21:20:40 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2024-12-10 16:40:46 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_software_installer_labels_software_installer_id_label_id ` ( ` software_installer_id ` , ` label_id ` ) ,
KEY ` label_id ` ( ` label_id ` ) ,
CONSTRAINT ` software_installer_labels_ibfk_1 ` FOREIGN KEY ( ` software_installer_id ` ) REFERENCES ` software_installers ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` software_installer_labels_ibfk_2 ` FOREIGN KEY ( ` label_id ` ) REFERENCES ` labels ` ( ` id ` ) ON DELETE RESTRICT
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-05-02 15:41:26 +00:00
CREATE TABLE ` software_installer_software_categories ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` software_category_id ` int unsigned NOT NULL ,
` software_installer_id ` int unsigned NOT NULL ,
` created_at ` datetime ( 6 ) DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_unique_software_installer_id_software_category_id ` ( ` software_installer_id ` , ` software_category_id ` ) ,
KEY ` software_category_id ` ( ` software_category_id ` ) ,
CONSTRAINT ` software_installer_software_categories_ibfk_1 ` FOREIGN KEY ( ` software_installer_id ` ) REFERENCES ` software_installers ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` software_installer_software_categories_ibfk_2 ` FOREIGN KEY ( ` software_category_id ` ) REFERENCES ` software_categories ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-04-25 11:48:44 +00:00
CREATE TABLE ` software_installers ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` team_id ` int unsigned DEFAULT NULL ,
` global_or_team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` title_id ` int unsigned DEFAULT NULL ,
` filename ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` version ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` platform ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` pre_install_query ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
` install_script_content_id ` int unsigned NOT NULL ,
` post_install_script_content_id ` int unsigned DEFAULT NULL ,
` storage_id ` varchar ( 64 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-09-08 17:26:26 +00:00
` uploaded_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
2024-05-21 14:13:12 +00:00
` self_service ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-08-30 17:13:25 +00:00
` user_id ` int unsigned DEFAULT NULL ,
` user_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` user_email ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-12-20 17:58:21 +00:00
` url ` varchar ( 4095 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-09-08 17:26:26 +00:00
` package_ids ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-09-12 21:22:35 +00:00
` extension ` varchar ( 32 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-09-08 17:26:26 +00:00
` uninstall_script_content_id ` int unsigned NOT NULL ,
2024-09-12 21:22:35 +00:00
` updated_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2025-03-21 02:21:56 +00:00
` fleet_maintained_app_id ` int unsigned DEFAULT NULL ,
2024-10-25 22:11:56 +00:00
` install_during_setup ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-04-25 11:48:44 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-04-29 17:22:59 +00:00
UNIQUE KEY ` idx_software_installers_team_id_title_id ` ( ` global_or_team_id ` , ` title_id ` ) ,
KEY ` fk_software_installers_title ` ( ` title_id ` ) ,
2024-04-25 11:48:44 +00:00
KEY ` fk_software_installers_install_script_content_id ` ( ` install_script_content_id ` ) ,
KEY ` fk_software_installers_post_install_script_content_id ` ( ` post_install_script_content_id ` ) ,
2024-04-29 17:22:59 +00:00
KEY ` fk_software_installers_team_id ` ( ` team_id ` ) ,
2024-05-16 22:09:41 +00:00
KEY ` idx_software_installers_platform_title_id ` ( ` platform ` , ` title_id ` ) ,
2024-08-30 17:13:25 +00:00
KEY ` fk_software_installers_user_id ` ( ` user_id ` ) ,
2024-09-08 17:26:26 +00:00
KEY ` fk_uninstall_script_content_id ` ( ` uninstall_script_content_id ` ) ,
2025-03-21 02:21:56 +00:00
KEY ` fk_software_installers_fleet_library_app_id ` ( ` fleet_maintained_app_id ` ) ,
2024-07-23 14:01:23 +00:00
CONSTRAINT ` fk_software_installers_install_script_content_id ` FOREIGN KEY ( ` install_script_content_id ` ) REFERENCES ` script_contents ` ( ` id ` ) ON DELETE RESTRICT ON UPDATE CASCADE ,
CONSTRAINT ` fk_software_installers_post_install_script_content_id ` FOREIGN KEY ( ` post_install_script_content_id ` ) REFERENCES ` script_contents ` ( ` id ` ) ON DELETE RESTRICT ON UPDATE CASCADE ,
2024-04-29 17:22:59 +00:00
CONSTRAINT ` fk_software_installers_team_id ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
2024-08-30 17:13:25 +00:00
CONSTRAINT ` fk_software_installers_title ` FOREIGN KEY ( ` title_id ` ) REFERENCES ` software_titles ` ( ` id ` ) ON DELETE SET NULL ON UPDATE CASCADE ,
2024-09-08 17:26:26 +00:00
CONSTRAINT ` fk_software_installers_user_id ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL ,
2024-09-13 12:54:10 +00:00
CONSTRAINT ` fk_uninstall_script_content_id ` FOREIGN KEY ( ` uninstall_script_content_id ` ) REFERENCES ` script_contents ` ( ` id ` ) ON DELETE RESTRICT ON UPDATE CASCADE ,
2025-03-21 02:21:56 +00:00
CONSTRAINT ` software_installers_ibfk_1 ` FOREIGN KEY ( ` fleet_maintained_app_id ` ) REFERENCES ` fleet_maintained_apps ` ( ` id ` ) ON DELETE SET NULL
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-04-25 11:48:44 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-12-01 14:33:07 +00:00
CREATE TABLE ` software_titles ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
2023-12-01 14:33:07 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` source ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` browser ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` bundle_identifier ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2024-07-28 14:17:27 +00:00
` additional_identifier ` tinyint unsigned GENERATED ALWAYS AS ( ( case when ( ` source ` = _utf8mb4 ' ios_apps ' ) then 1 when ( ` source ` = _utf8mb4 ' ipados_apps ' ) then 2 when ( ` bundle_identifier ` is not null ) then 0 else NULL end ) ) VIRTUAL ,
2025-02-03 19:23:21 +00:00
` unique_identifier ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ( coalesce ( ` bundle_identifier ` , ` name ` ) ) VIRTUAL ,
2023-12-01 14:33:07 +00:00
PRIMARY KEY ( ` id ` ) ,
2025-02-03 19:23:21 +00:00
UNIQUE KEY ` idx_software_titles_bundle_identifier ` ( ` bundle_identifier ` , ` additional_identifier ` ) ,
UNIQUE KEY ` idx_unique_sw_titles ` ( ` unique_identifier ` , ` source ` , ` browser ` ) ,
KEY ` idx_sw_titles ` ( ` name ` , ` source ` , ` browser ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-12-01 14:33:07 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-12-13 15:48:57 +00:00
CREATE TABLE ` software_titles_host_counts ` (
2024-07-23 14:01:23 +00:00
` software_title_id ` int unsigned NOT NULL ,
` hosts_count ` int unsigned NOT NULL ,
` team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
2023-12-13 15:48:57 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-30 17:19:05 +00:00
` global_stats ` tinyint unsigned NOT NULL DEFAULT ' 0 ' ,
PRIMARY KEY ( ` software_title_id ` , ` team_id ` , ` global_stats ` ) ,
2023-12-13 15:48:57 +00:00
KEY ` idx_software_titles_host_counts_team_counts_title ` ( ` team_id ` , ` hosts_count ` , ` software_title_id ` ) ,
KEY ` idx_software_titles_host_counts_updated_at_software_title_id ` ( ` updated_at ` , ` software_title_id ` )
2024-07-30 17:19:05 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-12-13 15:48:57 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` statistics ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` anonymous_identifier ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` teams ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` description ` varchar ( 1023 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2022-03-21 19:16:47 +00:00
` config ` json DEFAULT NULL ,
2024-02-27 18:55:05 +00:00
` name_bin ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin GENERATED ALWAYS AS ( ` name ` ) VIRTUAL ,
2024-07-23 14:01:23 +00:00
` filename ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-06-27 21:10:49 +00:00
UNIQUE KEY ` idx_teams_filename ` ( ` filename ` ) ,
2024-02-27 18:55:05 +00:00
UNIQUE KEY ` idx_name_bin ` ( ` name_bin ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-02-11 19:53:11 +00:00
CREATE TABLE ` upcoming_activities ` (
` id ` bigint unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
` priority ` int NOT NULL DEFAULT ' 0 ' ,
` user_id ` int unsigned DEFAULT NULL ,
` fleet_initiated ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
` activity_type ` enum ( ' script ' , ' software_install ' , ' software_uninstall ' , ' vpp_app_install ' ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` execution_id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` payload ` json NOT NULL ,
` activated_at ` datetime ( 6 ) DEFAULT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_upcoming_activities_execution_id ` ( ` execution_id ` ) ,
KEY ` idx_upcoming_activities_host_id_priority_created_at ` ( ` host_id ` , ` priority ` , ` created_at ` ) ,
KEY ` idx_upcoming_activities_host_id_activity_type ` ( ` activity_type ` , ` host_id ` ) ,
KEY ` fk_upcoming_activities_user_id ` ( ` user_id ` ) ,
CONSTRAINT ` fk_upcoming_activities_user_id ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE SET NULL
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` user_teams ` (
2024-07-23 14:01:23 +00:00
` user_id ` int unsigned NOT NULL ,
` team_id ` int unsigned NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` role ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` user_id ` , ` team_id ` ) ,
KEY ` fk_user_teams_team_id ` ( ` team_id ` ) ,
CONSTRAINT ` user_teams_ibfk_1 ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` user_teams_ibfk_2 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2021-08-20 15:27:41 +00:00
CREATE TABLE ` users ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2021-08-20 15:27:41 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
` password ` varbinary ( 255 ) NOT NULL ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` salt ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` email ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2021-08-20 15:27:41 +00:00
` admin_forced_password_reset ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` gravatar_url ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` position ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` sso_enabled ` tinyint NOT NULL DEFAULT ' 0 ' ,
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
` global_role ` varchar ( 64 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
` api_only ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-12-05 14:37:10 +00:00
` mfa_enabled ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2025-01-09 18:04:47 +00:00
` settings ` json NOT NULL DEFAULT ( json_object ( ) ) ,
2025-05-29 19:26:02 +00:00
` invite_id ` int unsigned DEFAULT NULL ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
2025-05-29 19:26:02 +00:00
UNIQUE KEY ` idx_user_unique_email ` ( ` email ` ) ,
UNIQUE KEY ` invite_id ` ( ` invite_id ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2025-02-27 20:19:15 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` users_deleted ` (
` id ` int unsigned NOT NULL ,
` name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` email ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` created_at ` datetime ( 6 ) DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2022-08-26 18:55:03 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-12-05 14:37:10 +00:00
CREATE TABLE ` verification_tokens ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` user_id ` int unsigned NOT NULL ,
` token ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` token ` ( ` token ` ) ,
KEY ` verification_tokens_users ` ( ` user_id ` ) ,
CONSTRAINT ` verification_tokens_users ` FOREIGN KEY ( ` user_id ` ) REFERENCES ` users ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-12-10 16:40:46 +00:00
CREATE TABLE ` vpp_app_team_labels ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` vpp_app_team_id ` int unsigned NOT NULL ,
` label_id ` int unsigned NOT NULL ,
` exclude ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-12-10 21:20:40 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2024-12-10 16:40:46 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_vpp_app_team_labels_vpp_app_team_id_label_id ` ( ` vpp_app_team_id ` , ` label_id ` ) ,
KEY ` label_id ` ( ` label_id ` ) ,
CONSTRAINT ` vpp_app_team_labels_ibfk_1 ` FOREIGN KEY ( ` vpp_app_team_id ` ) REFERENCES ` vpp_apps_teams ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` vpp_app_team_labels_ibfk_2 ` FOREIGN KEY ( ` label_id ` ) REFERENCES ` labels ` ( ` id ` ) ON DELETE RESTRICT
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-05-02 15:41:26 +00:00
CREATE TABLE ` vpp_app_team_software_categories ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` software_category_id ` int unsigned NOT NULL ,
` vpp_app_team_id ` int unsigned NOT NULL ,
` created_at ` datetime ( 6 ) DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_unique_vpp_app_team_id_software_category_id ` ( ` vpp_app_team_id ` , ` software_category_id ` ) ,
KEY ` software_category_id ` ( ` software_category_id ` ) ,
CONSTRAINT ` vpp_app_team_software_categories_ibfk_1 ` FOREIGN KEY ( ` vpp_app_team_id ` ) REFERENCES ` vpp_apps_teams ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` vpp_app_team_software_categories_ibfk_2 ` FOREIGN KEY ( ` software_category_id ` ) REFERENCES ` software_categories ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2025-02-11 19:53:11 +00:00
CREATE TABLE ` vpp_app_upcoming_activities ` (
` upcoming_activity_id ` bigint unsigned NOT NULL ,
` adam_id ` varchar ( 16 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` platform ` varchar ( 10 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` vpp_token_id ` int unsigned DEFAULT NULL ,
` policy_id ` int unsigned DEFAULT NULL ,
` created_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` datetime ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
PRIMARY KEY ( ` upcoming_activity_id ` ) ,
KEY ` fk_vpp_app_upcoming_activities_adam_id_platform ` ( ` adam_id ` , ` platform ` ) ,
KEY ` fk_vpp_app_upcoming_activities_vpp_token_id ` ( ` vpp_token_id ` ) ,
KEY ` fk_vpp_app_upcoming_activities_policy_id ` ( ` policy_id ` ) ,
CONSTRAINT ` fk_vpp_app_upcoming_activities_adam_id_platform ` FOREIGN KEY ( ` adam_id ` , ` platform ` ) REFERENCES ` vpp_apps ` ( ` adam_id ` , ` platform ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_vpp_app_upcoming_activities_policy_id ` FOREIGN KEY ( ` policy_id ` ) REFERENCES ` policies ` ( ` id ` ) ON DELETE SET NULL ,
CONSTRAINT ` fk_vpp_app_upcoming_activities_upcoming_activity_id ` FOREIGN KEY ( ` upcoming_activity_id ` ) REFERENCES ` upcoming_activities ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_vpp_app_upcoming_activities_vpp_token_id ` FOREIGN KEY ( ` vpp_token_id ` ) REFERENCES ` vpp_tokens ` ( ` id ` ) ON DELETE SET NULL
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-07-03 21:34:24 +00:00
CREATE TABLE ` vpp_apps ` (
` adam_id ` varchar ( 16 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` title_id ` int unsigned DEFAULT NULL ,
2024-07-03 21:34:24 +00:00
` bundle_identifier ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` icon_url ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-11 20:09:30 +00:00
` latest_version ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ' ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
2024-07-03 21:34:24 +00:00
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-30 20:43:51 +00:00
` platform ` varchar ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( ` adam_id ` , ` platform ` ) ,
2024-07-05 21:04:41 +00:00
KEY ` fk_vpp_apps_title ` ( ` title_id ` ) ,
CONSTRAINT ` fk_vpp_apps_title ` FOREIGN KEY ( ` title_id ` ) REFERENCES ` software_titles ` ( ` id ` ) ON DELETE SET NULL ON UPDATE CASCADE
2024-07-30 20:43:51 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-07-03 21:34:24 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-07-03 21:34:24 +00:00
CREATE TABLE ` vpp_apps_teams ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
2024-07-03 21:34:24 +00:00
` adam_id ` varchar ( 16 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned DEFAULT NULL ,
` global_or_team_id ` int NOT NULL DEFAULT ' 0 ' ,
2024-07-30 20:43:51 +00:00
` platform ` varchar ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-08-07 13:51:24 +00:00
` self_service ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2024-09-06 13:14:09 +00:00
` vpp_token_id ` int unsigned NOT NULL ,
2024-09-30 15:08:50 +00:00
` install_during_setup ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
2025-02-21 21:07:52 +00:00
` created_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ,
` updated_at ` timestamp ( 6 ) NOT NULL DEFAULT CURRENT_TIMESTAMP ( 6 ) ON UPDATE CURRENT_TIMESTAMP ( 6 ) ,
2024-07-17 19:22:22 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-07-30 20:43:51 +00:00
UNIQUE KEY ` idx_global_or_team_id_adam_id ` ( ` global_or_team_id ` , ` adam_id ` , ` platform ` ) ,
2024-07-03 21:34:24 +00:00
KEY ` team_id ` ( ` team_id ` ) ,
2024-07-30 20:43:51 +00:00
KEY ` adam_id ` ( ` adam_id ` , ` platform ` ) ,
2024-09-06 13:14:09 +00:00
KEY ` fk_vpp_apps_teams_vpp_token_id ` ( ` vpp_token_id ` ) ,
CONSTRAINT ` fk_vpp_apps_teams_vpp_token_id ` FOREIGN KEY ( ` vpp_token_id ` ) REFERENCES ` vpp_tokens ` ( ` id ` ) ON DELETE CASCADE ,
2024-07-30 20:43:51 +00:00
CONSTRAINT ` vpp_apps_teams_ibfk_2 ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` vpp_apps_teams_ibfk_3 ` FOREIGN KEY ( ` adam_id ` , ` platform ` ) REFERENCES ` vpp_apps ` ( ` adam_id ` , ` platform ` ) ON DELETE CASCADE
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-07-03 21:34:24 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2024-08-29 22:51:46 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` vpp_token_teams ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` vpp_token_id ` int unsigned NOT NULL ,
` team_id ` int unsigned DEFAULT NULL ,
` null _team_type ` enum ( ' none ' , ' allteams ' , ' noteam ' ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT ' none ' ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_vpp_token_teams_team_id ` ( ` team_id ` ) ,
KEY ` fk_vpp_token_teams_vpp_token_id ` ( ` vpp_token_id ` ) ,
CONSTRAINT ` fk_vpp_token_teams_team_id ` FOREIGN KEY ( ` team_id ` ) REFERENCES ` teams ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_vpp_token_teams_vpp_token_id ` FOREIGN KEY ( ` vpp_token_id ` ) REFERENCES ` vpp_tokens ` ( ` id ` ) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` vpp_tokens ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` organization_name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` location ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` renew_at ` timestamp NOT NULL ,
` token ` blob NOT NULL ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_vpp_tokens_location ` ( ` location ` )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
2024-07-03 21:34:24 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2024-02-08 20:52:17 +00:00
CREATE TABLE ` vulnerability_host_counts ` (
` cve ` varchar ( 20 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` team_id ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` host_count ` int unsigned NOT NULL DEFAULT ' 0 ' ,
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2024-07-30 17:19:05 +00:00
` global_stats ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
UNIQUE KEY ` cve_team_id_global_stats ` ( ` cve ` , ` team_id ` , ` global_stats ` )
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2024-02-08 20:52:17 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-01 14:13:12 +00:00
CREATE TABLE ` windows_mdm_command_queue ` (
2024-07-23 14:01:23 +00:00
` enrollment_id ` int unsigned NOT NULL ,
2023-11-01 14:13:12 +00:00
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2023-11-01 14:13:12 +00:00
PRIMARY KEY ( ` enrollment_id ` , ` command_uuid ` ) ,
KEY ` command_uuid ` ( ` command_uuid ` ) ,
CONSTRAINT ` windows_mdm_command_queue_ibfk_1 ` FOREIGN KEY ( ` enrollment_id ` ) REFERENCES ` mdm_windows_enrollments ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` windows_mdm_command_queue_ibfk_2 ` FOREIGN KEY ( ` command_uuid ` ) REFERENCES ` windows_mdm_commands ` ( ` command_uuid ` ) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-01 14:13:12 +00:00
CREATE TABLE ` windows_mdm_command_results ` (
2024-07-23 14:01:23 +00:00
` enrollment_id ` int unsigned NOT NULL ,
2023-11-01 14:13:12 +00:00
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` raw_result ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` response_id ` int unsigned NOT NULL ,
2023-11-01 14:13:12 +00:00
` status_code ` varchar ( 31 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2023-11-01 14:13:12 +00:00
PRIMARY KEY ( ` enrollment_id ` , ` command_uuid ` ) ,
KEY ` command_uuid ` ( ` command_uuid ` ) ,
KEY ` response_id ` ( ` response_id ` ) ,
CONSTRAINT ` windows_mdm_command_results_ibfk_1 ` FOREIGN KEY ( ` enrollment_id ` ) REFERENCES ` mdm_windows_enrollments ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` windows_mdm_command_results_ibfk_2 ` FOREIGN KEY ( ` command_uuid ` ) REFERENCES ` windows_mdm_commands ` ( ` command_uuid ` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT ` windows_mdm_command_results_ibfk_3 ` FOREIGN KEY ( ` response_id ` ) REFERENCES ` windows_mdm_responses ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-01 14:13:12 +00:00
CREATE TABLE ` windows_mdm_commands ` (
` command_uuid ` varchar ( 127 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` raw_command ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
` target_loc_uri ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2023-11-01 14:13:12 +00:00
PRIMARY KEY ( ` command_uuid ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-11-01 14:13:12 +00:00
CREATE TABLE ` windows_mdm_responses ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` enrollment_id ` int unsigned NOT NULL ,
2023-11-01 14:13:12 +00:00
` raw_response ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-07-23 14:01:23 +00:00
` created_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
2023-11-01 14:13:12 +00:00
PRIMARY KEY ( ` id ` ) ,
KEY ` enrollment_id ` ( ` enrollment_id ` ) ,
CONSTRAINT ` windows_mdm_responses_ibfk_1 ` FOREIGN KEY ( ` enrollment_id ` ) REFERENCES ` mdm_windows_enrollments ` ( ` id ` ) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2022-08-26 18:55:03 +00:00
CREATE TABLE ` windows_updates ` (
2024-07-23 14:01:23 +00:00
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` host_id ` int unsigned NOT NULL ,
` date_epoch ` int unsigned NOT NULL ,
` kb_id ` int unsigned NOT NULL ,
2022-08-26 18:55:03 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_unique_windows_updates ` ( ` host_id ` , ` kb_id ` ) ,
KEY ` idx_update_date ` ( ` host_id ` , ` date_epoch ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-08-26 18:55:03 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2023-06-29 22:31:53 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-06-29 22:31:53 +00:00
CREATE TABLE ` wstep_cert_auth_associations ` (
` id ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` sha256 ` char ( 64 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` id ` , ` sha256 ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-06-29 22:31:53 +00:00
CREATE TABLE ` wstep_certificates ` (
2024-07-23 14:01:23 +00:00
` serial ` bigint unsigned NOT NULL ,
2023-06-29 22:31:53 +00:00
` name ` varchar ( 1024 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` not_valid_before ` datetime NOT NULL ,
` not_valid_after ` datetime NOT NULL ,
` certificate_pem ` text COLLATE utf8mb4_unicode_ci NOT NULL ,
` revoked ` tinyint ( 1 ) NOT NULL DEFAULT ' 0 ' ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` serial ` ) ,
CONSTRAINT ` wstep_certificates_ibfk_1 ` FOREIGN KEY ( ` serial ` ) REFERENCES ` wstep_serials ` ( ` serial ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
2024-07-23 14:01:23 +00:00
/* !50503 SET character_set_client = utf8mb4 */ ;
2023-06-29 22:31:53 +00:00
CREATE TABLE ` wstep_serials ` (
2024-07-23 14:01:23 +00:00
` serial ` bigint unsigned NOT NULL AUTO_INCREMENT ,
2023-06-29 22:31:53 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY ( ` serial ` )
2024-07-23 14:01:23 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2023-06-29 22:31:53 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2024-11-13 17:01:08 +00:00
/* !40101 SET @saved_cs_client = @@character_set_client */ ;
/* !50503 SET character_set_client = utf8mb4 */ ;
CREATE TABLE ` yara_rules ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL ,
` contents ` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_yara_rules_name ` ( ` name ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
/* !40101 SET character_set_client = @saved_cs_client */ ;
2022-10-05 22:53:54 +00:00
/* !50001 DROP VIEW IF EXISTS `nano_view_queue` */ ;
/* !50001 SET @saved_cs_client = @@character_set_client */ ;
/* !50001 SET @saved_cs_results = @@character_set_results */ ;
/* !50001 SET @saved_col_connection = @@collation_connection */ ;
/* !50001 SET character_set_client = utf8mb4 */ ;
/* !50001 SET character_set_results = utf8mb4 */ ;
enforce an uniform collation for all tables (#10515)
related to #10441, inspired by the prior work done in
https://github.com/kolide/fleet/pull/1360, this PR:
1. Adds a migration to use `utf8mb4_general_ci` as the default collation
for the database and all the tables. From [MySQL's documentation][1]:
> To change the table default character set and all character columns
> (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
> this:
>
> ```
> ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
> ```
> The statement also changes the collation of all character columns. If
> you specify no COLLATE clause to indicate which collation to use, the
> statement uses default collation for the character set.
2. Changes the connection settings to use `utf8mb4_general_ci` as the
default collation, from the [driver docs][2]:
> Sets the collation used for client-server interaction on
connection. In contrast to charset, collation does not issue additional
queries. If the specified collation is unavailable on the target server,
the connection will fail.
[1]: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
[2]: https://github.com/go-sql-driver/mysql
**TODO:** discuss how we can enforce this, is setting the database
default collation enough? should we add some kind of custom lint rule to
all migrations?
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2023-03-16 18:49:24 +00:00
/* !50001 SET collation_connection = utf8mb4_unicode_ci */ ;
2022-10-05 22:53:54 +00:00
/* !50001 CREATE ALGORITHM=UNDEFINED */
/* !50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */
/* !50001 VIEW `nano_view_queue` AS select `q`.`id` AS `id`,`q`.`created_at` AS `created_at`,`q`.`active` AS `active`,`q`.`priority` AS `priority`,`c`.`command_uuid` AS `command_uuid`,`c`.`request_type` AS `request_type`,`c`.`command` AS `command`,`r`.`updated_at` AS `result_updated_at`,`r`.`status` AS `status`,`r`.`result` AS `result` from ((`nano_enrollment_queue` `q` join `nano_commands` `c` on((`q`.`command_uuid` = `c`.`command_uuid`))) left join `nano_command_results` `r` on(((`r`.`command_uuid` = `q`.`command_uuid`) and (`r`.`id` = `q`.`id`)))) order by `q`.`priority` desc,`q`.`created_at` */ ;
/* !50001 SET character_set_client = @saved_cs_client */ ;
/* !50001 SET character_set_results = @saved_cs_results */ ;
/* !50001 SET collation_connection = @saved_col_connection */ ;