This commit is contained in:
slbaiyi
2022-11-28 11:54:17 +08:00
parent 28c2f32ef5
commit ef0ee211bb
4 changed files with 32 additions and 1 deletions

View File

@ -174,6 +174,8 @@ static char* get_correct_str(char*str, const char *delimiter_name, bool is_new_l
bool is_delimiter = false;
char *token = strstr(str_temp, "delimiter");
errno_t rc = 0;
char* end_str = NULL;
if(token != NULL) {
is_delimiter = true;
char* pos = str_temp;
@ -187,12 +189,13 @@ static char* get_correct_str(char*str, const char *delimiter_name, bool is_new_l
}
if(is_delimiter) {
char* end = pos + strlen("delimiter");
end_str = str + (end - str_temp);
if(*end != ' ' && *end != '\0') {
is_delimiter = false;
}
}
}
if (is_new_lines && is_delimiter && strstr(str, delimiter_name) == NULL) {
if (is_new_lines && is_delimiter && strstr(end_str, delimiter_name) == NULL) {
Size slen1 = strlen(str) + strlen(delimiter_name) + DELIMITER_LENGTH;
char* result1 = (char *) pg_malloc(slen1);
rc = sprintf_s(result1, slen1, "%s %s", str, delimiter_name);
@ -215,6 +218,14 @@ static char* get_correct_str(char*str, const char *delimiter_name, bool is_new_l
char special_str = 0;
char in;
for (pos = str; pos < end_of_str; pos++) {
if (is_delimiter) {
int delimiter_length = strlen("delimiter");
while (delimiter_length > 0 && *pos != '\0') {
*temp++ = *pos++;
delimiter_length--;
}
is_delimiter = false;
}
in = *pos;
if (!special_str && is_match_delimiter_name(pos , delimiter_name)) {
*temp++ =' ';

View File

@ -1138,6 +1138,7 @@ other .
yyextra->is_hint_str = true;
}
set_is_delimiter_name(yytext,yyscanner);
return keyword->value;
}

View File

@ -94,6 +94,19 @@ select 1aa
1
(1 row)
delimiter ;
delimiter de
delimiter abcde
select 1abc
?column?
----------
1
(1 row)
delimiter
ERROR: syntax error at or near "abc"
LINE 1: delimiter abc
^
delimiter ;
\c regression
drop database my_test;

View File

@ -47,5 +47,11 @@ delimiter aa
select 1aa
delimiter ;
delimiter de
delimiter abcde
select 1abc
delimiter
delimiter ;
\c regression
drop database my_test;