From db642e5cdb4c770401849d77ee3ae46dc73ff892 Mon Sep 17 00:00:00 2001
From: Jesse Wang <jesse@wang.nz>
Date: Tue, 18 Jul 2023 23:01:30 +0000
Subject: [PATCH] fix(postgres): fix buffer management in PgCopyIn.read_from

---
 sqlx-core/src/net/socket/buffered.rs | 2 +-
 sqlx-postgres/src/copy.rs            | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/sqlx-core/src/net/socket/buffered.rs b/sqlx-core/src/net/socket/buffered.rs
index 3dd5f64146..7a314d29b7 100644
--- a/sqlx-core/src/net/socket/buffered.rs
+++ b/sqlx-core/src/net/socket/buffered.rs
@@ -151,7 +151,7 @@ impl WriteBuffer {
             self.buf.truncate(self.bytes_written);
             self.buf.extend_from_slice(slice);
         }
-
+        self.advance(slice.len());
         self.sanity_check();
     }
 
diff --git a/sqlx-postgres/src/copy.rs b/sqlx-postgres/src/copy.rs
index 620784308a..f5a6ea8573 100644
--- a/sqlx-postgres/src/copy.rs
+++ b/sqlx-postgres/src/copy.rs
@@ -229,7 +229,7 @@ impl<C: DerefMut<Target = PgConnection>> PgCopyIn<C> {
             let buf = conn.stream.write_buffer_mut();
 
             // CopyData format code and reserved space for length
-            buf.put_slice(b"d\0\0\0\0");
+            buf.put_slice(b"d\0\0\0\x04");
 
             let read = match () {
                 // Tokio lets us read into the buffer without zeroing first