Beispiel #1
0
        void ReadHeader()
        {
            _leftToReadInDataMsg = _connector.ReadExpecting <CopyDataMessage>().Length;
            var headerLen = NpgsqlRawCopyStream.BinarySignature.Length + 4 + 4;

            _buf.Ensure(headerLen);
            if (NpgsqlRawCopyStream.BinarySignature.Any(t => _buf.ReadByte() != t))
            {
                throw new Exception("Invalid COPY binary signature at beginning!");
            }
            var flags = _buf.ReadInt32();

            if (flags != 0)
            {
                throw new NotSupportedException("Unsupported flags in COPY operation (OID inclusion?)");
            }
            _buf.ReadInt32();   // Header extensions, currently unused
            _leftToReadInDataMsg -= headerLen;
        }
Beispiel #2
0
        internal NpgsqlError(NpgsqlBuffer buf) : this()
        {
            while (true)
            {
                var code = (ErrorFieldTypeCode)buf.ReadByte();
                switch (code)
                {
                case ErrorFieldTypeCode.Done:
                    // Null terminator; error message fully consumed.
                    return;

                case ErrorFieldTypeCode.Severity:
                    Severity = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.Code:
                    Code = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.Message:
                    Message = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.Detail:
                    Detail = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.Hint:
                    Hint = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.Position:
                    Position = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.InternalPosition:
                    InternalPosition = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.InternalQuery:
                    InternalQuery = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.Where:
                    Where = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.File:
                    File = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.Line:
                    Line = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.Routine:
                    Routine = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.SchemaName:
                    SchemaName = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.TableName:
                    TableName = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.ColumnName:
                    ColumnName = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.DataTypeName:
                    DataTypeName = buf.ReadNullTerminatedString();
                    break;

                case ErrorFieldTypeCode.ConstraintName:
                    ConstraintName = buf.ReadNullTerminatedString();
                    break;

                default:
                    // Unknown error field; consume and discard.
                    buf.ReadNullTerminatedString();
                    break;
                }
            }
        }
Beispiel #3
0
 internal NpgsqlError(NpgsqlBuffer buf) : this()
 {
     while (true)
     {
         var code = (ErrorFieldTypeCode)buf.ReadByte();
         switch (code)
         {
             case ErrorFieldTypeCode.Done:
                 // Null terminator; error message fully consumed.
                 return;
             case ErrorFieldTypeCode.Severity:
                 Severity = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.Code:
                 Code = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.Message:
                 Message = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.Detail:
                 Detail = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.Hint:
                 Hint = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.Position:
                 Position = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.InternalPosition:
                 InternalPosition = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.InternalQuery:
                 InternalQuery = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.Where:
                 Where = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.File:
                 File = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.Line:
                 Line = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.Routine:
                 Routine = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.SchemaName:
                 SchemaName = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.TableName:
                 TableName = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.ColumnName:
                 ColumnName = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.DataTypeName:
                 DataTypeName = buf.ReadNullTerminatedString();
                 break;
             case ErrorFieldTypeCode.ConstraintName:
                 ConstraintName = buf.ReadNullTerminatedString();
                 break;
             default:
                 // Unknown error field; consume and discard.
                 buf.ReadNullTerminatedString();
                 break;
         }
     }
 }