com.amazon.redshift.core.v3

## Class CopyInImpl

- java.lang.Object
- - com.amazon.redshift.core.v3.CopyOperationImpl
  - - com.amazon.redshift.core.v3.CopyInImpl

All Implemented Interfaces:
  CopyIn, CopyOperation

    public class CopyInImpl
    extends CopyOperationImpl
    implements CopyIn

COPY FROM STDIN operation.

Anticipated flow: CopyManager.copyIn() ->QueryExecutor.startCopy() - sends given query to server ->processCopyResults(): - receives CopyInResponse from Server - creates new CopyInImpl ->initCopy(): - receives copy metadata from server ->CopyInImpl.init() ->lock() connection for this operation - if query fails an exception is thrown - if query returns wrong CopyOperation, copyIn() cancels it before throwing exception <-return: new CopyInImpl holding lock on connection repeat CopyIn.writeToCopy() for all data ->CopyInImpl.writeToCopy() ->QueryExecutorImpl.writeToCopy() - sends given data ->processCopyResults() - parameterized not to block, just peek for new messages from server - on ErrorResponse, waits until protocol is restored and unlocks connection CopyIn.endCopy() ->CopyInImpl.endCopy() ->QueryExecutorImpl.endCopy() - sends CopyDone - processCopyResults() - on CommandComplete ->CopyOperationImpl.handleCommandComplete() - sets updatedRowCount when applicable - on ReadyForQuery unlock() connection for use by other operations <-return: CopyInImpl.getUpdatedRowCount()

### Constructor Summary

Constructors
Constructor and Description
`CopyInImpl()`

### Method Summary

Methods
`long` `endCopy()` Finishes copy operation successfully.
`void` `flushCopy()` Force any buffered output to be sent over the network to the backend.
`protected void` `handleCopydata(byte[] data)` Consume received copy data.
`void` `writeToCopy(byte[] data, int off, int siz)` Writes specified part of given byte array to an open and writable copy operation.
`void` `writeToCopy(ByteStreamWriter from)` Writes a ByteStreamWriter to an open and writable copy operation.

### Methods inherited from class com.amazon.redshift.core.v3.CopyOperationImpl

`cancelCopy, getFieldCount, getFieldFormat, getFormat, getHandledRowCount, handleCommandStatus, isActive`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface com.amazon.redshift.copy.CopyOperation

`cancelCopy, getFieldCount, getFieldFormat, getFormat, getHandledRowCount, isActive`

### Constructor Detail

#### CopyInImpl

    public CopyInImpl()

### Method Detail

#### writeToCopy

    public void writeToCopy(byte[] data,
                   int off,
                   int siz)
                     throws SQLException

Description copied from interface: `CopyIn`
Writes specified part of given byte array to an open and writable copy operation.

Specified by:
  `writeToCopy` in interface `CopyIn`
Parameters:
  `data` - array of bytes to write
  `off` - offset of first byte to write (normally zero)
  `siz` - number of bytes to write (normally buf.length)
Throws:
  `SQLException` - if the operation fails

#### writeToCopy

    public void writeToCopy(ByteStreamWriter from)
                     throws SQLException

Description copied from interface: `CopyIn`
Writes a ByteStreamWriter to an open and writable copy operation.

Specified by:
  `writeToCopy` in interface `CopyIn`
Parameters:
  `from` - the source of bytes, e.g. a ByteBufferByteStreamWriter
Throws:
  `SQLException` - if the operation fails

#### flushCopy

    public void flushCopy()
                   throws SQLException

Description copied from interface: `CopyIn`
Force any buffered output to be sent over the network to the backend. In general this is a useless operation as it will get pushed over in due time or when endCopy is called. Some specific modified server versions (Truviso) want this data sooner. If you are unsure if you need to use this method, don't.

Specified by:
  `flushCopy` in interface `CopyIn`
Throws:
  `SQLException` - if the operation fails.

#### endCopy

    public long endCopy()
                 throws SQLException

Description copied from interface: `CopyIn`
Finishes copy operation successfully.

Specified by:
  `endCopy` in interface `CopyIn`
Returns:
  number of updated rows for server 8.2 or newer (see getHandledRowCount())
Throws:
  `SQLException` - if the operation fails.

#### handleCopydata

    protected void handleCopydata(byte[] data)
                           throws RedshiftException

Description copied from class: `CopyOperationImpl`
Consume received copy data.

Specified by:
  `handleCopydata` in class `CopyOperationImpl`
Parameters:
  `data` - data that was receive by copy protocol
Throws:
  `RedshiftException` - if some internal problem occurs