!6226 修正gsql执行copy with header时,导致gsql解析sql字符串时,没有处理空指针

Merge pull request !6226 from 许树堃/xsk-copy-gsql
This commit is contained in:
opengauss_bot
2024-09-09 03:06:08 +00:00
committed by Gitee
3 changed files with 24 additions and 5 deletions

View File

@ -226,12 +226,12 @@ static bool ParseParallelOption(struct copy_options* result, char** errToken)
xstrcat(&result->after_tofrom, token);
token = strtokx(nullptr, whitespace, ",()", NULL, 0, false, false, pset.encoding);
if (pg_strcasecmp(token, "true") == 0 || pg_strcasecmp(token, "on") == 0) {
result->hasHeader = true;
xstrcat(&result->after_tofrom, " false");
} else {
if (token != nullptr) {
bool res = (pg_strcasecmp(token, "true") == 0 || pg_strcasecmp(token, "on") == 0);
result->hasHeader = (result->hasHeader || res);
const char *resToken = res ? "false" : token;
xstrcat(&result->after_tofrom, " ");
xstrcat(&result->after_tofrom, token);
xstrcat(&result->after_tofrom, resToken);
}
} else {
xstrcat(&result->after_tofrom, " ");

View File

@ -363,3 +363,13 @@ drop trigger insert_measurement_trigger on measurement;
drop function measurement_insert_trigger;
drop table measurement;
drop table measurement_movement;
create table copy_header_src (c1 int);
create table copy_header_dest (c1 int);
insert into copy_header_src select generate_series(1,10);
\copy copy_header_src to '~/copy_header_src.csv' with csv header;
\copy copy_header_dest from '~/copy_header_src.csv' with csv header'on';
ERROR: syntax error at or near "'on'"
LINE 1: COPY copy_header_dest FROM STDIN csv header'on';
^
drop table copy_header_src;
drop table copy_header_dest;

View File

@ -271,3 +271,12 @@ drop trigger insert_measurement_trigger on measurement;
drop function measurement_insert_trigger;
drop table measurement;
drop table measurement_movement;
create table copy_header_src (c1 int);
create table copy_header_dest (c1 int);
insert into copy_header_src select generate_series(1,10);
\copy copy_header_src to '~/copy_header_src.csv' with csv header;
\copy copy_header_dest from '~/copy_header_src.csv' with csv header'on';
drop table copy_header_src;
drop table copy_header_dest;