Beispiel #1
0
        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();
            }
        }