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 Detail

      • CopyOutImpl

        public CopyOutImpl()
    • Method Detail

      • readFromCopy

        public byte[] readFromCopy()
                            throws java.sql.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:
        java.sql.SQLException - if something goes wrong for example socket timeout
      • readFromCopy

        public byte[] readFromCopy​(boolean block)
                            throws java.sql.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:
        java.sql.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