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

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

The newest version!
/*
 * 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.CopyOut;

import org.checkerframework.checker.nullness.qual.Nullable;

import java.sql.SQLException;

/**
 * 

Anticipated flow of a COPY TO STDOUT operation:

* *

CopyManager.copyOut() ->QueryExecutor.startCopy() - sends given query to server * ->processCopyResults(): - receives CopyOutResponse from Server - creates new CopyOutImpl * ->initCopy(): - receives copy metadata from server ->CopyOutImpl.init() ->lock() * connection for this operation - if query fails an exception is thrown - if query returns wrong * CopyOperation, copyOut() cancels it before throwing exception <-returned: new CopyOutImpl * holding lock on connection repeat CopyOut.readFromCopy() until null * ->CopyOutImpl.readFromCopy() ->QueryExecutorImpl.readFromCopy() ->processCopyResults() - * on copydata row from server ->CopyOutImpl.handleCopydata() stores reference to byte array - on * CopyDone, CommandComplete, ReadyForQuery ->unlock() connection for use by other operations * <-returned: byte array of data received from server or null at end.

*/ public class CopyOutImpl extends CopyOperationImpl implements CopyOut { private byte @Nullable [] currentDataRow; public byte @Nullable [] readFromCopy() throws SQLException { return readFromCopy(true); } @Override public byte @Nullable [] readFromCopy(boolean block) throws SQLException { currentDataRow = null; getQueryExecutor().readFromCopy(this, block); return currentDataRow; } protected void handleCopydata(byte[] data) { currentDataRow = data; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy