private XDevAPI.Relational.Column DecodeColumn(ColumnMetaData colData) { XDevAPI.Relational.Column c = new XDevAPI.Relational.Column(); c._decoder = XValueDecoderFactory.GetValueDecoder(c, colData.Type); c._decoder.Column = c; if (!colData.Name.IsEmpty) { c.ColumnLabel = colData.Name.ToStringUtf8(); } if (!colData.OriginalName.IsEmpty) { c.ColumnName = colData.OriginalName.ToStringUtf8(); } if (!colData.Table.IsEmpty) { c.TableLabel = colData.Table.ToStringUtf8(); } if (!colData.OriginalTable.IsEmpty) { c.TableName = colData.OriginalTable.ToStringUtf8(); } if (!colData.Schema.IsEmpty) { c.SchemaName = colData.Schema.ToStringUtf8(); } if (!colData.Catalog.IsEmpty) { c.DatabaseName = colData.Catalog.ToStringUtf8(); } if (colData.Collation > 0) { c._collationNumber = colData.Collation; c.CollationName = CollationMap.GetCollationName((int)colData.Collation); c.CharacterSetName = c.CollationName.Split('_')[0]; } if (colData.Length > 0) { c.Length = colData.Length; } if (colData.FractionalDigits > 0) { c.FractionalDigits = colData.FractionalDigits; } if (colData.Flags > 0) { c._decoder.Flags = colData.Flags; } if (colData.ContentType > 0) { c._decoder.ContentType = colData.ContentType; } c._decoder.SetMetadata(); return(c); }
public void Utf8mb4CharsetExists() { if (!_serverVersion.isAtLeast(8, 0, 1)) { return; } using (Session session = MySQLX.GetSession(ConnectionString)) { // Search utf8mb4 database. var result = ExecuteSQLStatement(session.SQL("SHOW COLLATION WHERE id = 255")); Assert.True(result.HasData); var data = result.FetchOne(); Assert.AreEqual("utf8mb4_0900_ai_ci", data.GetString("Collation")); // Check in CollationMap. Assert.AreEqual("utf8mb4_0900_ai_ci", CollationMap.GetCollationName(255)); } }
public void ValidateCollationMapList() { if (!_serverVersion.isAtLeast(8, 0, 1)) { return; } using (var connection = new MySqlConnection(ConnectionStringRoot)) { connection.Open(); var command = new MySqlCommand("SELECT id, collation_name FROM INFORMATION_SCHEMA.COLLATIONS", connection); var reader = command.ExecuteReader(); Assert.True(reader.HasRows); while (reader.Read()) { var id = reader.GetInt32("id"); var collationName = reader.GetString("collation_name"); Assert.AreEqual(CollationMap.GetCollationName(id), collationName); } connection.Close(); } }