예제 #1
0
 /// <summary>
 /// Skips the current column without interpreting its value.
 /// </summary>
 public void Skip()
 {
     ReadColumnLenIfNeeded();
     if (_columnLen != -1)
     {
         _buf.Skip(_columnLen);
     }
     _columnLen = int.MinValue;
     _column++;
 }
        protected override void Dispose(bool disposing)
        {
            if (_isDisposed || !disposing)
            {
                return;
            }

            try
            {
                if (CanWrite)
                {
                    Flush();
                    _writeBuf.EndCopyMode();
                    _connector.SendMessage(CopyDoneMessage.Instance);
                    _connector.ReadExpecting <CommandCompleteMessage>();
                    _connector.ReadExpecting <ReadyForQueryMessage>();
                }
                else
                {
                    if (!_isConsumed)
                    {
                        if (_leftToReadInDataMsg > 0)
                        {
                            _readBuf.Skip(_leftToReadInDataMsg);
                        }
                        _connector.SkipUntil(BackendMessageCode.ReadyForQuery);
                    }
                }
            }
            finally
            {
                var connector = _connector;
                Cleanup();
                connector.EndUserAction();
            }
        }