Package org.postgresql.copy
Class PGCopyInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.postgresql.copy.PGCopyInputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,CopyOperation,CopyOut
public class PGCopyInputStream extends java.io.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, java.lang.String sql)Uses given connection for specified COPY TO STDOUT operation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intavailable()voidcancelCopy()Cancels this copy operation, discarding any exchanged data.private voidcheckClosed()voidclose()private byte[]fillBuffer()intgetFieldCount()intgetFieldFormat(int field)intgetFormat()longgetHandledRowCount()After successful end of copy, returns the number of database records handled in that operation.private CopyOutgetOp()booleanisActive()intread()intread(byte[] buf)intread(byte[] buf, int off, int siz)byte[]readFromCopy()Blocks wait for a row of data to be received from server on an active copy operation.byte[]readFromCopy(boolean block)Wait for a row of data to be received from server on an active copy operation.
-
-
-
Field Detail
-
op
private CopyOut op
-
buf
private byte[] buf
-
at
private int at
-
len
private int len
-
-
Constructor Detail
-
PGCopyInputStream
public PGCopyInputStream(PGConnection connection, java.lang.String sql) throws java.sql.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:
java.sql.SQLException- if initializing the operation fails
-
PGCopyInputStream
public PGCopyInputStream(CopyOut op)
Use given CopyOut operation for reading.- Parameters:
op- COPY TO STDOUT operation
-
-
Method Detail
-
getOp
private CopyOut getOp()
-
fillBuffer
private byte[] fillBuffer() throws java.io.IOException- Throws:
java.io.IOException
-
checkClosed
private void checkClosed() throws java.io.IOException- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException- Overrides:
availablein classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read() throws java.io.IOException- Specified by:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] buf) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] buf, int off, int siz) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
readFromCopy
public byte[] readFromCopy() throws java.sql.SQLExceptionDescription copied from interface:CopyOutBlocks wait for a row of data to be received from server on an active copy operation.- Specified by:
readFromCopyin interfaceCopyOut- 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.SQLExceptionDescription copied from interface:CopyOutWait for a row of data to be received from server on an active copy operation.- Specified by:
readFromCopyin interfaceCopyOut- Parameters:
block-trueif need wait data from server otherwisefalseand 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
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.InputStream- Throws:
java.io.IOException
-
cancelCopy
public void cancelCopy() throws java.sql.SQLExceptionDescription copied from interface:CopyOperationCancels this copy operation, discarding any exchanged data.- Specified by:
cancelCopyin interfaceCopyOperation- Throws:
java.sql.SQLException- if cancelling fails
-
getFormat
public int getFormat()
- Specified by:
getFormatin interfaceCopyOperation- Returns:
- overall format of each row: 0 = textual, 1 = binary
-
getFieldFormat
public int getFieldFormat(int field)
- Specified by:
getFieldFormatin interfaceCopyOperation- Parameters:
field- number of field (0..fieldCount()-1)- Returns:
- format of requested field: 0 = textual, 1 = binary
-
getFieldCount
public int getFieldCount()
- Specified by:
getFieldCountin interfaceCopyOperation- Returns:
- number of fields in each row for this operation
-
isActive
public boolean isActive()
- Specified by:
isActivein interfaceCopyOperation- Returns:
- is connection reserved for this Copy operation?
-
getHandledRowCount
public long getHandledRowCount()
Description copied from interface:CopyOperationAfter 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:
getHandledRowCountin interfaceCopyOperation- Returns:
- number of handled rows or -1
-
-