diff --git a/internal/event/target/mysql.go b/internal/event/target/mysql.go index c1cd2894b..3d2709db5 100644 --- a/internal/event/target/mysql.go +++ b/internal/event/target/mysql.go @@ -38,13 +38,16 @@ import ( const ( mysqlTableExists = `SELECT 1 FROM %s;` // Some MySQL has a 3072 byte limit on key sizes. - mysqlCreateNamespaceTable = `CREATE TABLE %s (key_name VARCHAR(3072), value JSON, PRIMARY KEY (key_name)) - CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;` + mysqlCreateNamespaceTable = `CREATE TABLE %s ( + key_name VARCHAR(3072) NOT NULL, + key_hash CHAR(64) GENERATED ALWAYS AS (SHA2(key_name, 256)) STORED NOT NULL PRIMARY KEY, + value JSON) + CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;` mysqlCreateAccessTable = `CREATE TABLE %s (event_time DATETIME NOT NULL, event_data JSON) ROW_FORMAT = Dynamic;` mysqlUpdateRow = `INSERT INTO %s (key_name, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE value=VALUES(value);` - mysqlDeleteRow = `DELETE FROM %s WHERE key_name = ?;` + mysqlDeleteRow = `DELETE FROM %s WHERE key_hash = SHA2(?, 256);` mysqlInsertRow = `INSERT INTO %s (event_time, event_data) VALUES (?, ?);` )