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 ' ' ,
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 */ ;
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 ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` id ` ( ` 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 */ ;
2024-10-23 18:51:02 +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, \"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_enabled_and_configured\": false, \"apple_bm_enabled_and_configured\": 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, \"google_calendar\": null, \"ndes_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 */ ;
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 ,
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 */ ;
2024-09-09 15:45:38 +00:00
CREATE TABLE ` fleet_library_apps ` (
` id ` int unsigned NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` token ` 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 ,
` installer_url ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` sha256 ` varchar ( 64 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
2024-09-10 17:55:13 +00:00
` bundle_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 ) ,
` install_script_content_id ` int unsigned NOT NULL ,
` uninstall_script_content_id ` int unsigned NOT NULL ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_fleet_library_apps_token ` ( ` token ` ) ,
KEY ` fk_fleet_library_apps_install_script_content ` ( ` install_script_content_id ` ) ,
KEY ` fk_fleet_library_apps_uninstall_script_content ` ( ` uninstall_script_content_id ` ) ,
CONSTRAINT ` fk_fleet_library_apps_install_script_content ` FOREIGN KEY ( ` install_script_content_id ` ) REFERENCES ` script_contents ` ( ` id ` ) ON DELETE CASCADE ,
CONSTRAINT ` fk_fleet_library_apps_uninstall_script_content ` FOREIGN KEY ( ` uninstall_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 */ ;
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 */ ;
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 ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
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 */ ;
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 ' ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` updated_at ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
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 ,
2024-03-21 16:12:32 +00:00
` checksum ` 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-03-14 21:08:19 +00:00
PRIMARY KEY ( ` host_uuid ` , ` declaration_uuid ` ) ,
KEY ` status ` ( ` status ` ) ,
KEY ` operation_type ` ( ` operation_type ` ) ,
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
) 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-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 ' ' ,
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 */ ;
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 ,
` 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 ) ,
PRIMARY KEY ( ` host_uuid ` , ` profile_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-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 ' ' ,
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 */ ;
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 ,
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 ' ' ,
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 ' ,
2024-09-11 20:56:49 +00:00
` status ` enum ( ' pending_install ' , ' failed_install ' , ' installed ' , ' pending_uninstall ' , ' failed_uninstall ' ) COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ( ( case when ( ` removed ` = 1 ) then NULL 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] ' ,
2024-10-22 17:47:46 +00:00
` execution_status ` enum ( ' pending_install ' , ' failed_install ' , ' installed ' , ' pending_uninstall ' , ' failed_uninstall ' ) COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ( ( case 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 ,
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 ' ' ,
2021-09-07 14:02:35 +00:00
PRIMARY KEY ( ` host_id ` , ` uid ` , ` username ` ) ,
2022-01-12 17:07:51 +00:00
UNIQUE KEY ` idx_uid_username ` ( ` 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 ,
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 ` ) ,
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 ,
2024-08-01 18:32:45 +00:00
CONSTRAINT ` host_vpp_software_installs_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 */ ;
/* !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 ,
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 ' ,
2021-08-20 15:27:41 +00:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_label_unique_name ` ( ` name ` ) ,
FULLTEXT KEY ` labels_search ` ( ` name ` )
2024-09-30 16:02:54 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 5 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2021-08-20 15:27:41 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2024-09-30 16:02:54 +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 ) , ( 2 , ' 2024-06-28 00:00:00 ' , ' 2024-06-28 00:00:00 ' , ' iOS ' , ' All iOS hosts ' , ' ' , ' ios ' , 1 , 1 ) , ( 3 , ' 2024-06-28 00:00:00 ' , ' 2024-06-28 00:00:00 ' , ' iPadOS ' , ' All iPadOS hosts ' , ' ' , ' ipados ' , 1 , 1 ) , ( 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 ) ;
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 ` 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 ,
2023-02-09 00:36:20 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
2024-02-05 15:01:38 +00:00
` uploaded_at ` timestamp 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 ' ' ,
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-03-21 16:12:32 +00:00
` raw_json ` json NOT NULL ,
` checksum ` binary ( 16 ) NOT NULL ,
2024-03-14 21:08:19 +00:00
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
` uploaded_at ` timestamp NULL DEFAULT NULL ,
2024-08-30 21:00:35 +00:00
` auto_increment ` bigint NOT NULL AUTO_INCREMENT ,
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 */ ;
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 ,
` created_at ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
2024-02-05 15:01:38 +00:00
` uploaded_at ` timestamp 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 ,
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 ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` id ` ( ` id ` )
2024-11-18 22:44:25 +00:00
) /* !50100 TABLESPACE `innodb_system` */ ENGINE = InnoDB AUTO_INCREMENT = 331 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ;
2022-08-10 19:15:01 +00:00
/* !40101 SET character_set_client = @saved_cs_client */ ;
2024-11-18 22:44:25 +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-07-23 14:01:23 +00:00
PRIMARY KEY ( ` command_uuid ` ) ,
CONSTRAINT ` nano_commands_chk_1 ` CHECK ( ( ` command_uuid ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_commands_chk_2 ` CHECK ( ( ` request_type ` < > _utf8mb4 ' ' ) ) ,
CONSTRAINT ` nano_commands_chk_3 ` CHECK ( ( substr ( ` command ` , 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_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 ,
2022-10-05 22:53:54 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-07-23 14:01:23 +00:00
KEY ` serial_number ` ( ` serial_number ` ) ,
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 ` ) ,
2024-01-24 19:18:57 +00:00
UNIQUE KEY ` idx_os_vulnerabilities_unq_os_id_cve ` ( ` operating_system_id ` , ` 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 ,
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 ` ) ,
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 ` ) ,
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 */ ;
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_policy_id ` ( ` policy_id ` ) ,
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 */ ;
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 */ ;
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 */ ;
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 */ ;
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 ,
` status ` enum ( ' pending ' , ' running ' , ' success ' , ' failure ' ) 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
2024-09-30 15:08:50 +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 ` 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 ,
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 ` ) ,
2022-02-14 18:13:44 +00:00
KEY ` software_listing_idx ` ( ` name ` , ` id ` ) ,
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 ` ) ,
KEY ` idx_sw_name_source_browser ` ( ` name ` , ` source ` , ` browser ` )
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_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 ` ) ,
2022-08-04 13:24:44 +00:00
UNIQUE KEY ` unq_software_id_cve ` ( ` software_id ` , ` cve ` ) ,
2022-08-24 17:10:58 +00:00
KEY ` software_cve_software_id ` ( ` 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 */ ;
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 */ ;
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-09-06 22:10:28 +00:00
` url ` varchar ( 255 ) 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 ) ,
2024-09-09 15:45:38 +00:00
` fleet_library_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 ` ) ,
2024-09-09 15:45:38 +00:00
KEY ` fk_software_installers_fleet_library_app_id ` ( ` fleet_library_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 ,
2024-09-09 15:45:38 +00:00
CONSTRAINT ` software_installers_ibfk_1 ` FOREIGN KEY ( ` fleet_library_app_id ` ) REFERENCES ` fleet_library_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 ,
2023-12-01 14:33:07 +00:00
PRIMARY KEY ( ` id ` ) ,
2024-07-09 16:43:21 +00:00
UNIQUE KEY ` idx_sw_titles ` ( ` name ` , ` source ` , ` browser ` ) ,
2024-07-28 14:17:27 +00:00
UNIQUE KEY ` idx_software_titles_bundle_identifier ` ( ` bundle_identifier ` , ` additional_identifier ` )
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 */ ;
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 ' ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE KEY ` idx_user_unique_email ` ( ` email ` )
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 */ ;
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-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 ' ,
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 */ ;