All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.postgresql.core.v3.CopyInImpl Maven / Gradle / Ivy

/*
 * Copyright (c) 2009, PostgreSQL Global Development Group
 * See the LICENSE file in the project root for more information.
 */

package org.postgresql.core.v3;

import org.postgresql.copy.CopyIn;
import org.postgresql.util.ByteStreamWriter;
import org.postgresql.util.GT;
import org.postgresql.util.PSQLException;
import org.postgresql.util.PSQLState;

import java.sql.SQLException;

/**
 * 

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()

*/ public class CopyInImpl extends CopyOperationImpl implements CopyIn { public void writeToCopy(byte[] data, int off, int siz) throws SQLException { getQueryExecutor().writeToCopy(this, data, off, siz); } public void writeToCopy(ByteStreamWriter from) throws SQLException { getQueryExecutor().writeToCopy(this, from); } public void flushCopy() throws SQLException { getQueryExecutor().flushCopy(this); } public long endCopy() throws SQLException { return getQueryExecutor().endCopy(this); } protected void handleCopydata(byte[] data) throws PSQLException { throw new PSQLException(GT.tr("CopyIn copy direction can't receive data"), PSQLState.PROTOCOL_VIOLATION); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy