private void ReadNullMap(int fieldCount)
 {
     // if we are binary, then we need to load in our null bitmap
     nullMap = null;
     byte[] nullMapBytes = new byte[(fieldCount + 9) / 8];
     packet.ReadByte();
     packet.Read(nullMapBytes, 0, nullMapBytes.Length);
     nullMap = new BitArray(nullMapBytes);
 }
        private MySqlGuid ReadOldGuid(MySqlPacket packet, long length)
        {
            if (length == -1)
                length = (long)packet.ReadFieldLength();

            byte[] buff = new byte[length];
            packet.Read(buff, 0, (int)length);
            MySqlGuid g = new MySqlGuid(buff);
            g.OldGuids = OldGuids;
            return g;
        }
        IMySqlValue IMySqlValue.ReadValue(MySqlPacket packet, long length,
                bool nullVal)
        {
            if (nullVal)
                return new MySqlDouble(true);

            if (length == -1)
            {
                byte[] b = new byte[8];
                packet.Read(b, 0, 8);
                return new MySqlDouble(BitConverter.ToDouble(b, 0));
            }
            string s = packet.ReadString(length);
            double d;
            try
            {
                d = Double.Parse(s, CultureInfo.InvariantCulture);
            }
            catch (OverflowException)
            {
                // MySQL server < 5.5 can return values not compatible with
                // Double.Parse(), i.e out of range for double.

                if (s.StartsWith("-"))
                    d = double.MinValue;
                else
                    d = double.MaxValue;
            }
            return new MySqlDouble(d);
        }
        IMySqlValue IMySqlValue.ReadValue(MySqlPacket packet, long length, bool nullVal)
        {
            MySqlBinary b;
            if (nullVal)
                b = new MySqlBinary(type, true);
            else
            {
                if (length == -1)
                    length = (long)packet.ReadFieldLength();

                byte[] newBuff = new byte[length];
                packet.Read(newBuff, 0, (int)length);
                b = new MySqlBinary(type, newBuff);
            }
            return b;
        }
        IMySqlValue IMySqlValue.ReadValue(MySqlPacket packet, long length, bool nullVal)
        {
            if (nullVal)
                return new MySqlSingle(true);

            if (length == -1)
            {
                byte[] b = new byte[4];
                packet.Read(b, 0, 4);
                return new MySqlSingle(BitConverter.ToSingle(b, 0));
            }
            return new MySqlSingle(Single.Parse(packet.ReadString(length),
                     CultureInfo.InvariantCulture));
        }