Class CopyOutImpl

All Implemented Interfaces:
CopyOperation, CopyOut

public class CopyOutImpl extends CopyOperationImpl implements CopyOut

Anticipated flow of a COPY TO STDOUT operation:

CopyManager.copyOut() ->QueryExecutor.startCopy() - sends given query to server ->processCopyResults(): - receives CopyOutResponse from Server - creates new CopyOutImpl ->initCopy(): - receives copy metadata from server ->CopyOutImpl.init() ->lock() connection for this operation - if query fails an exception is thrown - if query returns wrong CopyOperation, copyOut() cancels it before throwing exception <-returned: new CopyOutImpl holding lock on connection repeat CopyOut.readFromCopy() until null ->CopyOutImpl.readFromCopy() ->QueryExecutorImpl.readFromCopy() ->processCopyResults() - on copydata row from server ->CopyOutImpl.handleCopydata() stores reference to byte array - on CopyDone, CommandComplete, ReadyForQuery ->unlock() connection for use by other operations <-returned: byte array of data received from server or null at end.

  • Constructor Details

    • CopyOutImpl

      public CopyOutImpl()
  • Method Details

    • readFromCopy

      public byte @Nullable [] readFromCopy() throws SQLException
      Description copied from interface: CopyOut
      Blocks wait for a row of data to be received from server on an active copy operation.
      Specified by:
      readFromCopy in interface CopyOut
      Returns:
      byte array received from server, null if server complete copy operation
      Throws:
      SQLException - if something goes wrong for example socket timeout
    • readFromCopy

      public byte @Nullable [] readFromCopy(boolean block) throws SQLException
      Description copied from interface: CopyOut
      Wait for a row of data to be received from server on an active copy operation.
      Specified by:
      readFromCopy in interface CopyOut
      Parameters:
      block - true if need wait data from server otherwise false and will read pending message from server
      Returns:
      byte array received from server, if pending message from server absent and use no blocking mode return null
      Throws:
      SQLException - if something goes wrong for example socket timeout
    • handleCopydata

      protected void handleCopydata(byte[] data)
      Description copied from class: CopyOperationImpl
      Consume received copy data.
      Specified by:
      handleCopydata in class CopyOperationImpl
      Parameters:
      data - data that was receive by copy protocol