private byte[] ReceiveSliceResponse(ArrayDesc desc)
        {
            try
            {
                int operation = _database.ReadOperation();

                if (operation == IscCodes.op_slice)
                {
                    // Read	slice length
                    bool isVariying = false;
                    int  elements   = 0;
                    int  length     = _database.ReadInt32();

                    length = _database.ReadInt32();

                    switch (desc.DataType)
                    {
                    case IscCodes.blr_text:
                    case IscCodes.blr_text2:
                    case IscCodes.blr_cstring:
                    case IscCodes.blr_cstring2:
                        elements = length / desc.Length;
                        length  += elements * ((4 - desc.Length) & 3);
                        break;

                    case IscCodes.blr_varying:
                    case IscCodes.blr_varying2:
                        elements   = length / desc.Length;
                        isVariying = true;
                        break;

                    case IscCodes.blr_short:
                        length = length * desc.Length;
                        break;
                    }

                    if (isVariying)
                    {
                        XdrStream xdr = new XdrStream();

                        for (int i = 0; i < elements; i++)
                        {
                            byte[] buffer = _database.ReadOpaque(_database.ReadInt32());

                            xdr.WriteBuffer(buffer, buffer.Length);
                        }

                        return(xdr.ToArray());
                    }
                    else
                    {
                        return(_database.ReadOpaque(length));
                    }
                }
                else
                {
                    _database.SetOperation(operation);
                    _database.ReadResponse();

                    return(null);
                }
            }
            catch (IOException)
            {
                throw new IscException(IscCodes.isc_net_read_err);
            }
        }