in src/TriggersBinding/MySqlTriggerUtils.cs [28:60]
internal static async Task<string> GetUserTableIdAsync(MySqlConnection connection, MySqlObject userTable, ILogger logger, CancellationToken cancellationToken)
{
string dbName = userTable.Schema;
// when schem name is same as schema function
if (dbName.Equals(MySqlObject.SCHEMA_NAME_FUNCTION, StringComparison.Ordinal))
{
var getDbCommand = new MySqlCommand($"SELECT {MySqlObject.SCHEMA_NAME_FUNCTION}", connection);
using (MySqlDataReader reader = getDbCommand.ExecuteReaderWithLogging(logger))
{
if (!await reader.ReadAsync(cancellationToken))
{
throw new InvalidOperationException($"Received empty response when querying for the database name");
}
object objDbName = reader.GetValue(0);
if (objDbName is DBNull)
{
throw new InvalidOperationException($"Could not find database.");
}
dbName = (string)objDbName;
}
}
using (var sha256 = SHA256.Create())
{
byte[] hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(dbName.AsAcuteQuotedString() + "." + userTable.AcuteQuotedName));
string tableId = new Guid(hash.Take(16).ToArray()).ToString("N");
return tableId;
}
}