{"kind": "protocol", "major": "18", "item": {"slug": "commandcomplete-b", "name": "CommandComplete", "name_zh": "", "category": "Backend messages", "summary": "CommandComplete is a backend protocol message. Identifies the message as a command-completed response.", "aliases": ["CommandComplete", "Byte1('C')"], "content_hash": "3754bc3fef940174be52fa331e6b3412a8012cbb8fb893871bb875d84aade97c", "versions": {"10": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid is the object ID of the inserted row if rows is 1 and the target table has OIDs; otherwise oid is 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid is the object ID of the inserted row if rows is 1 and the target table has OIDs; otherwise oid is 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/10/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/10/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/10/protocol-flow.html#id-1.10.5.7.4", "label": "Simple Query"}, {"url": "/docs/10/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/10/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "stable", "revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "sources": [{"url": "/docs/10/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS", "path": "protocol-message-formats.html", "label": "PostgreSQL 10 English manual", "sha256": "b730a205dfc348a67edbc1e9687f2c2df69005fe30c062ef76e37b474538e4f8"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> is the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> is 1 and the target table has OIDs; otherwise <em class=\"replaceable\"><code>oid</code></em> is 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/10/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid is the object ID of the inserted row if rows is 1 and the target table has OIDs; otherwise oid is 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "e97fa10b35f77a6bf140a4c5f646c82a37c1875a4f13240b8fdac298a5532989"}, "11": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid is the object ID of the inserted row if rows is 1 and the target table has OIDs; otherwise oid is 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid is the object ID of the inserted row if rows is 1 and the target table has OIDs; otherwise oid is 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/11/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/11/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/11/protocol-flow.html#id-1.10.5.7.4", "label": "Simple Query"}, {"url": "/docs/11/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/11/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "stable", "revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "sources": [{"url": "/docs/11/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS", "path": "protocol-message-formats.html", "label": "PostgreSQL 11 English manual", "sha256": "a6087693de687f5a6582bfa6529356ecb8a089e2d56694482352a55eb6ccfdf1"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> is the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> is 1 and the target table has OIDs; otherwise <em class=\"replaceable\"><code>oid</code></em> is 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/11/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid is the object ID of the inserted row if rows is 1 and the target table has OIDs; otherwise oid is 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "e97fa10b35f77a6bf140a4c5f646c82a37c1875a4f13240b8fdac298a5532989"}, "12": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/12/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/12/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/12/protocol-flow.html#id-1.10.5.7.4", "label": "Simple Query"}, {"url": "/docs/12/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/12/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "stable", "revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "sources": [{"url": "/docs/12/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS", "path": "protocol-message-formats.html", "label": "PostgreSQL 12 English manual", "sha256": "00f6cafbcaad89c7e7982faed10a2896b7188de151ac9137633021207f7c2b70"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/12/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "a3693453a3063fd1f19c04f2ed87343c75d38c2e0a808251446a01918f8ea71d"}, "13": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/13/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/13/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/13/protocol-flow.html#id-1.10.5.7.4", "label": "Simple Query"}, {"url": "/docs/13/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/13/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "stable", "revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "sources": [{"url": "/docs/13/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS", "path": "protocol-message-formats.html", "label": "PostgreSQL 13 English manual", "sha256": "86bc62b343a9bd881a6832cced7d81285a9924985ea598ee2b207bbb4ba9666e"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/13/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "a3693453a3063fd1f19c04f2ed87343c75d38c2e0a808251446a01918f8ea71d"}, "14": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/14/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/14/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/14/protocol-flow.html#id-1.10.5.7.4", "label": "Simple Query"}, {"url": "/docs/14/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/14/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "sources": [{"url": "/docs/14/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS", "path": "protocol-message-formats.html", "label": "PostgreSQL 14 English manual", "sha256": "250fd6a2529964948260a546f72931e259885bb222b62c3bdbf5ab402b72987b"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/14/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "a3693453a3063fd1f19c04f2ed87343c75d38c2e0a808251446a01918f8ea71d"}, "15": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/15/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/15/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/15/protocol-flow.html#id-1.10.6.7.4", "label": "Simple Query"}, {"url": "/docs/15/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/15/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "sources": [{"url": "/docs/15/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-COMMANDCOMPLETE", "path": "protocol-message-formats.html", "label": "PostgreSQL 15 English manual", "sha256": "8c5c191eef74cd3249dabab5d6714b0f516b88c4658da4d6cce6c003bc45d919"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">MERGE</code> command, the tag is <code class=\"literal\">MERGE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted, updated, or deleted.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/15/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "019b4a212cb1c5ea4fd6978a8a4e5292dd1fa76fe5434ed7f0bd4f0e354af19f"}, "16": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/16/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/16/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/16/protocol-flow.html#PROTOCOL-FLOW-SIMPLE-QUERY", "label": "Simple Query"}, {"url": "/docs/16/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/16/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "sources": [{"url": "/docs/16/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-COMMANDCOMPLETE", "path": "protocol-message-formats.html", "label": "PostgreSQL 16 English manual", "sha256": "c15646b30727f469cdac3bd411e50dc9b14ee85982a9c9c8a2b3e16449b39a46"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">MERGE</code> command, the tag is <code class=\"literal\">MERGE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted, updated, or deleted.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/16/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "019b4a212cb1c5ea4fd6978a8a4e5292dd1fa76fe5434ed7f0bd4f0e354af19f"}, "17": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/17/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/17/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/17/protocol-flow.html#PROTOCOL-FLOW-SIMPLE-QUERY", "label": "Simple Query"}, {"url": "/docs/17/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/17/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "sources": [{"url": "/docs/17/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-COMMANDCOMPLETE", "path": "protocol-message-formats.html", "label": "PostgreSQL 17 English manual", "sha256": "3c0e7b8a1a8f7ec5026226eab83d6704b7c5199ec9ba1aaaf91ea517609eed4e"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">MERGE</code> command, the tag is <code class=\"literal\">MERGE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted, updated, or deleted.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/17/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "019b4a212cb1c5ea4fd6978a8a4e5292dd1fa76fe5434ed7f0bd4f0e354af19f"}, "18": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/18/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/18/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/18/protocol-flow.html#PROTOCOL-FLOW-SIMPLE-QUERY", "label": "Simple Query"}, {"url": "/docs/18/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/18/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "/docs/18/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-COMMANDCOMPLETE", "path": "protocol-message-formats.html", "label": "PostgreSQL 18 English manual", "sha256": "53f37652ac2c089e30ada87d8aee7bdd0f26695b03f275302e526a807d2a1f23"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">MERGE</code> command, the tag is <code class=\"literal\">MERGE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted, updated, or deleted.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/18/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "019b4a212cb1c5ea4fd6978a8a4e5292dd1fa76fe5434ed7f0bd4f0e354af19f"}, "19": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/19/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/19/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/19/protocol-flow.html#PROTOCOL-FLOW-SIMPLE-QUERY", "label": "Simple Query"}, {"url": "/docs/19/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/19/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "revision": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "sources": [{"url": "/docs/19/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-COMMANDCOMPLETE", "path": "protocol-message-formats.html", "label": "PostgreSQL 19 English manual", "sha256": "90ffd4417d4975d088424b23a513f1d79ac914225ad7e239a12f44d0dd2248e4"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">MERGE</code> command, the tag is <code class=\"literal\">MERGE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted, updated, or deleted.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/19/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "019b4a212cb1c5ea4fd6978a8a4e5292dd1fa76fe5434ed7f0bd4f0e354af19f"}, "20": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/devel/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/devel/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/devel/protocol-flow.html#PROTOCOL-FLOW-SIMPLE-QUERY", "label": "Simple Query"}, {"url": "/docs/devel/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/devel/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "revision": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, "sources": [{"url": "/docs/devel/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-COMMANDCOMPLETE", "path": "protocol-message-formats.html", "label": "PostgreSQL 20 English manual", "sha256": "4e786b7a3a7f6dbe6547ece35c3281e7f1a33816b0613d2cdc3beec827362d4e"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">MERGE</code> command, the tag is <code class=\"literal\">MERGE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted, updated, or deleted.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/devel/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "019b4a212cb1c5ea4fd6978a8a4e5292dd1fa76fe5434ed7f0bd4f0e354af19f"}}}, "snapshot": {"facts": [{"label": "Direction", "value": "Backend \u2192 frontend"}, {"label": "First wire field", "value": "Byte1('C')"}, {"label": "Field entries", "value": "3"}, {"label": "Documented flow contexts", "value": "Simple Query; Extended Query; COPY Operations"}], "fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "tables": [{"key": "fields", "rows": [{"c0": "1", "c1": "Byte1('C')", "c2": "Identifies the message as a command-completed response."}, {"c0": "2", "c1": "Int32", "c2": "Length of message contents in bytes, including self."}, {"c0": "3", "c1": "String", "c2": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "title": "Wire fields in documented order", "columns": [{"key": "c0", "label": "Position"}, {"key": "c1", "label": "Format"}, {"key": "c2", "label": "Meaning"}]}], "related": [{"url": "/docs/18/protocol-flow.html", "label": "Protocol flow and exchange examples"}, {"url": "/docs/18/protocol-overview.html", "label": "Protocol overview"}, {"url": "/docs/18/protocol-flow.html#PROTOCOL-FLOW-SIMPLE-QUERY", "label": "Simple Query"}, {"url": "/docs/18/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY", "label": "Extended Query"}, {"url": "/docs/18/protocol-flow.html#PROTOCOL-COPY", "label": "COPY Operations"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "/docs/18/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-COMMANDCOMPLETE", "path": "protocol-message-formats.html", "label": "PostgreSQL 18 English manual", "sha256": "53f37652ac2c089e30ada87d8aee7bdd0f26695b03f275302e526a807d2a1f23"}], "sections": [{"title": "Framing and repetition", "paragraphs": ["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."]}], "direction": "B", "signature": "CommandComplete (B)", "description": ["CommandComplete is a backend protocol message. Identifies the message as a command-completed response."], "manual_html": "<dl><dd>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\">Byte1('C')</span></dt>\n<dd>\n<p>Identifies the message as a command-completed response.</p>\n</dd>\n<dt><span class=\"term\">Int32</span></dt>\n<dd>\n<p>Length of message contents in bytes, including self.</p>\n</dd>\n<dt><span class=\"term\">String</span></dt>\n<dd>\n<p>The command tag. This is usually a single word that identifies which SQL command was completed.</p>\n<p>For an <code class=\"command\">INSERT</code> command, the tag is <code class=\"literal\">INSERT <em class=\"replaceable\"><code>oid</code></em> <em class=\"replaceable\"><code>rows</code></em></code>, where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted. <em class=\"replaceable\"><code>oid</code></em> used to be the object ID of the inserted row if <em class=\"replaceable\"><code>rows</code></em> was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore <em class=\"replaceable\"><code>oid</code></em> is always 0.</p>\n<p>For a <code class=\"command\">DELETE</code> command, the tag is <code class=\"literal\">DELETE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows deleted.</p>\n<p>For an <code class=\"command\">UPDATE</code> command, the tag is <code class=\"literal\">UPDATE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows updated.</p>\n<p>For a <code class=\"command\">MERGE</code> command, the tag is <code class=\"literal\">MERGE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows inserted, updated, or deleted.</p>\n<p>For a <code class=\"command\">SELECT</code> or <code class=\"command\">CREATE TABLE AS</code> command, the tag is <code class=\"literal\">SELECT <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows retrieved.</p>\n<p>For a <code class=\"command\">MOVE</code> command, the tag is <code class=\"literal\">MOVE <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows the cursor's position has been changed by.</p>\n<p>For a <code class=\"command\">FETCH</code> command, the tag is <code class=\"literal\">FETCH <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows that have been retrieved from the cursor.</p>\n<p>For a <code class=\"command\">COPY</code> command, the tag is <code class=\"literal\">COPY <em class=\"replaceable\"><code>rows</code></em></code> where <em class=\"replaceable\"><code>rows</code></em> is the number of rows copied. (Note: the row count appears only in <span class=\"productname\">PostgreSQL</span> 8.2 and later.)</p>\n</dd>\n</dl>\n</div>\n</dd></dl>", "manual_path": "/docs/18/protocol-message-formats.html", "comparison_data": {"fields": [{"format": "Byte1('C')", "description": "Identifies the message as a command-completed response."}, {"format": "Int32", "description": "Length of message contents in bytes, including self."}, {"format": "String", "description": "The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a MERGE command, the tag is MERGE rows where rows is the number of rows inserted, updated, or deleted. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)"}], "direction": "B"}, "comparison_hash": "019b4a212cb1c5ea4fd6978a8a4e5292dd1fa76fe5434ed7f0bd4f0e354af19f"}, "comparison": {"left": "11", "right": "12", "status": "changed", "diff": "--- PostgreSQL 11\n+++ PostgreSQL 12\n@@ -10,7 +10,7 @@\n       \"format\": \"Int32\"\n     },\n     {\n-      \"description\": \"The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid is the object ID of the inserted row if rows is 1 and the target table has OIDs; otherwise oid is 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)\",\n+      \"description\": \"The command tag. This is usually a single word that identifies which SQL command was completed. For an INSERT command, the tag is INSERT oid rows , where rows is the number of rows inserted. oid used to be the object ID of the inserted row if rows was 1 and the target table had OIDs, but OIDs system columns are not supported anymore; therefore oid is always 0. For a DELETE command, the tag is DELETE rows where rows is the number of rows deleted. For an UPDATE command, the tag is UPDATE rows where rows is the number of rows updated. For a SELECT or CREATE TABLE AS command, the tag is SELECT rows where rows is the number of rows retrieved. For a MOVE command, the tag is MOVE rows where rows is the number of rows the cursor's position has been changed by. For a FETCH command, the tag is FETCH rows where rows is the number of rows that have been retrieved from the cursor. For a COPY command, the tag is COPY rows where rows is the number of rows copied. (Note: the row count appears only in PostgreSQL 8.2 and later.)\",\n       \"format\": \"String\"\n     }\n   ]"}}