org.postgresql.core.v3
Class CopyInImpl
java.lang.Object
org.postgresql.core.v3.CopyOperationImpl
org.postgresql.core.v3.CopyInImpl
- All Implemented Interfaces:
- CopyIn, CopyOperation
public class CopyInImpl
- extends CopyOperationImpl
- implements CopyIn
Anticipated flow of a COPY FROM STDIN operation:
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()
|
Method Summary |
long |
endCopy()
Finishes copy operation succesfully. |
void |
flushCopy()
Force any buffered output to be sent over the network to the
backend. |
void |
writeToCopy(byte[] data,
int off,
int siz)
Writes specified part of given byte array to an open and writable copy operation. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CopyInImpl
public CopyInImpl()
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 writeoff - offset of first byte to write (normally zero)siz - number of bytes to write (normally buf.length)
- 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
endCopy
public long endCopy()
throws SQLException
- Description copied from interface:
CopyIn
- Finishes copy operation succesfully.
- 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.
Copyright © 2013. All Rights Reserved.