From cee74b1867721f4860b85bcf692b6149afaa1203 Mon Sep 17 00:00:00 2001 From: yanghao Date: Wed, 27 Sep 2023 20:26:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcopy=E5=9C=A8=E8=A1=8C?= =?UTF-8?q?=E6=9C=AB=E5=AD=98=E5=9C=A8=E8=BD=AC=E4=B9=89=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E7=9A=84=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/optimizer/commands/copy.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/gausskernel/optimizer/commands/copy.cpp b/src/gausskernel/optimizer/commands/copy.cpp index 4a6cf6a5b1..ff62e40fc6 100644 --- a/src/gausskernel/optimizer/commands/copy.cpp +++ b/src/gausskernel/optimizer/commands/copy.cpp @@ -6984,6 +6984,24 @@ static bool CopyReadLineTextTemplate(CopyState cstate) if (raw_buf_ptr < copy_buf_len) { sec = copy_raw_buf[raw_buf_ptr]; } + if (IS_TEXT(cstate) && (cstate->copy_dest == COPY_NEW_FE) && !cstate->is_load_copy) { + if (c == '\\') { + char c2; + IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); + + /* get next character */ + c2 = copy_raw_buf[raw_buf_ptr]; + + /* + * If the following character is a newline or CRLF, + * skip the '\\'. + */ + if (c2 == '\n' || c2 == '\r' || + (c2 == '\r' && (raw_buf_ptr + 1) < copy_buf_len && copy_raw_buf[raw_buf_ptr + 1] == '\n')) { + continue; + } + } + } if (csv_mode) { /* -- Gitee