Package org.postgresql.copy

# Class PGCopyInputStream

java.lang.Object
java.io.InputStream
org.postgresql.copy.PGCopyInputStream

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `CopyOperation`, `CopyOut`

public class PGCopyInputStream extends InputStream implements CopyOut
InputStream for reading from a PostgreSQL COPY TO STDOUT operation.

## Constructor Summary

Constructors
Constructor
Description
`PGCopyInputStream(CopyOut op)`
Use given CopyOut operation for reading.
`PGCopyInputStream(PGConnection connection, String sql)`
Uses given connection for specified COPY TO STDOUT operation.

## Method Summary

Modifier and Type
Method
Description
`int`
`available()`
`void`
`cancelCopy()`
Cancels this copy operation, discarding any exchanged data.
`void`
`close()`
`int`
`getFieldCount()`
`int`
`getFieldFormat(int field)`
`int`
`getFormat()`
`long`
`getHandledRowCount()`
After successful end of copy, returns the number of database records handled in that operation.
`boolean`
`isActive()`
`int`
`read()`
`int`
`read(byte[] buf)`
`int`
`read(byte[] buf, int off, int siz)`
`byte @Nullable []`
`readFromCopy()`
Blocks wait for a row of data to be received from server on an active copy operation.
`byte @Nullable []`
`readFromCopy(boolean block)`
Wait for a row of data to be received from server on an active copy operation.

### Methods inherited from class java.io.InputStream

`mark, markSupported, nullInputStream, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo`

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

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

## Constructor Details

### PGCopyInputStream

public PGCopyInputStream(PGConnection connection, String sql) throws SQLException
Uses given connection for specified COPY TO STDOUT operation.

Parameters:
  `connection` - database connection to use for copying (protocol version 3 required)
  `sql` - COPY TO STDOUT statement
Throws:
  `SQLException` - if initializing the operation fails

### PGCopyInputStream

public PGCopyInputStream(CopyOut op)
Use given CopyOut operation for reading.

Parameters:
  `op` - COPY TO STDOUT operation

## Method Details

### available

public int available() throws IOException

Overrides:
  `available` in class `InputStream`
Throws:
  `IOException`

### read

public int read() throws IOException

Specified by:
  `read` in class `InputStream`
Throws:
  `IOException`

### read

public int read(byte[] buf) throws IOException

Overrides:
  `read` in class `InputStream`
Throws:
  `IOException`

### read

public int read(byte[] buf, int off, int siz) throws IOException

Overrides:
  `read` in class `InputStream`
Throws:
  `IOException`

### 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

### close

public void close() throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `InputStream`
Throws:
  `IOException`

### cancelCopy

public void cancelCopy() throws SQLException
Description copied from interface: `CopyOperation`
Cancels this copy operation, discarding any exchanged data.

Specified by:
  `cancelCopy` in interface `CopyOperation`
Throws:
  `SQLException` - if cancelling fails

### getFormat

public int getFormat()

Specified by:
  `getFormat` in interface `CopyOperation`
Returns:
  overall format of each row: 0 = textual, 1 = binary

### getFieldFormat

public int getFieldFormat(int field)

Specified by:
  `getFieldFormat` in interface `CopyOperation`
Parameters:
  `field` - number of field (0..fieldCount()-1)
Returns:
  format of requested field: 0 = textual, 1 = binary

### getFieldCount

public int getFieldCount()

Specified by:
  `getFieldCount` in interface `CopyOperation`
Returns:
  number of fields in each row for this operation

### isActive

public boolean isActive()

Specified by:
  `isActive` in interface `CopyOperation`
Returns:
  is connection reserved for this Copy operation?

### getHandledRowCount

public long getHandledRowCount()
Description copied from interface: `CopyOperation`
After successful end of copy, returns the number of database records handled in that operation. Only implemented in PostgreSQL server version 8.2 and up. Otherwise, returns -1.

Specified by:
  `getHandledRowCount` in interface `CopyOperation`
Returns:
  number of handled rows or -1