Normally used to signal a copy command is done. Spanner does not currently support copies, so
send will throw a descriptive error to be sent to the user. Note that we do parse this in order
for this to be future proof, and to ensure the input stream is flushed of the command (in order
to continue receiving properly)
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Class CopyDoneMessage (0.27.1)\n\nVersion latestkeyboard_arrow_down\n\n- [0.27.1 (latest)](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.27.0](/java/docs/reference/pgadapter/0.27.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.26.0](/java/docs/reference/pgadapter/0.26.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.25.0](/java/docs/reference/pgadapter/0.25.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.24.0](/java/docs/reference/pgadapter/0.24.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.23.1](/java/docs/reference/pgadapter/0.23.1/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.22.1](/java/docs/reference/pgadapter/0.22.1/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.21.0](/java/docs/reference/pgadapter/0.21.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.20.0](/java/docs/reference/pgadapter/0.20.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.19.1](/java/docs/reference/pgadapter/0.19.1/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.18.4](/java/docs/reference/pgadapter/0.18.4/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.17.0](/java/docs/reference/pgadapter/0.17.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.16.0](/java/docs/reference/pgadapter/0.16.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.15.0](/java/docs/reference/pgadapter/0.15.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.14.1](/java/docs/reference/pgadapter/0.14.1/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.9.0](/java/docs/reference/pgadapter/0.9.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.8.0](/java/docs/reference/pgadapter/0.8.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.7.0](/java/docs/reference/pgadapter/0.7.0/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.6.1](/java/docs/reference/pgadapter/0.6.1/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage)\n- [0.5.1](/java/docs/reference/pgadapter/0.5.1/com.google.cloud.spanner.pgadapter.wireprotocol.CopyDoneMessage) \n\n public class CopyDoneMessage extends ControlMessage\n\nNormally used to signal a copy command is done. Spanner does not currently support copies, so\nsend will throw a descriptive error to be sent to the user. Note that we do parse this in order\nfor this to be future proof, and to ensure the input stream is flushed of the command (in order\nto continue receiving properly) \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e [WireMessage](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage) \\\u003e [ControlMessage](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.ControlMessage) \\\u003e CopyDoneMessage \n\nInherited Members\n-----------------\n\n[ControlMessage.create(ConnectionHandler)](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.ControlMessage#com_google_cloud_spanner_pgadapter_wireprotocol_ControlMessage_create_com_google_cloud_spanner_pgadapter_ConnectionHandler_) \n[ControlMessage.getFormatCodes(DataInputStream)](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.ControlMessage#com_google_cloud_spanner_pgadapter_wireprotocol_ControlMessage_getFormatCodes_java_io_DataInputStream_) \n[ControlMessage.handleError(Exception)](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.ControlMessage#com_google_cloud_spanner_pgadapter_wireprotocol_ControlMessage_handleError_java_lang_Exception_) \n[ControlMessage.isExtendedProtocol()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.ControlMessage#com_google_cloud_spanner_pgadapter_wireprotocol_ControlMessage_isExtendedProtocol__) \n[WireMessage.getHeaderLength()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_getHeaderLength__) \n[WireMessage.getIdentifier()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_getIdentifier__) \n[WireMessage.getMessageName()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_getMessageName__) \n[WireMessage.getParameters(DataInputStream)](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_getParameters_java_io_DataInputStream_) \n[WireMessage.getPayloadString()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_getPayloadString__) \n[WireMessage.nextHandler()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_nextHandler__) \n[WireMessage.read(int)](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_read_int_) \n[WireMessage.readAll()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_readAll__) \n[WireMessage.readString()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_readString__) \n[WireMessage.send()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_send__) \n[WireMessage.sendPayload()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_sendPayload__) \n[WireMessage.toString()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_toString__) \n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nStatic Fields\n-------------\n\n### IDENTIFIER\n\n protected static final char IDENTIFIER\n\nConstructors\n------------\n\n### CopyDoneMessage(ConnectionHandler connection)\n\n public CopyDoneMessage(ConnectionHandler connection)\n\nMethods\n-------\n\n### getIdentifier()\n\n public String getIdentifier()\n\nUsed for logging.\n\n**Overrides** \n[WireMessage.getIdentifier()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_getIdentifier__)\n\n### getMessageName()\n\n protected String getMessageName()\n\nUsed for logging.\n\n**Overrides** \n[WireMessage.getMessageName()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_getMessageName__)\n\n### getPayloadString()\n\n protected String getPayloadString()\n\nUsed for logging.\n\n**Overrides** \n[WireMessage.getPayloadString()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_getPayloadString__)\n\n### sendPayload()\n\n protected void sendPayload()\n\nOverride this method to include post-processing and metadata in the sending process. Template\nmethod for send.\n**Overrides** \n[WireMessage.sendPayload()](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.wireprotocol.WireMessage#com_google_cloud_spanner_pgadapter_wireprotocol_WireMessage_sendPayload__)"]]