fix logical error

This commit is contained in:
Alexander Tokmakov 2021-02-01 15:40:57 +03:00
parent 048938effe
commit accf4d262e
3 changed files with 49 additions and 0 deletions

View File

@ -24,6 +24,7 @@ namespace ErrorCodes
extern const int TYPE_MISMATCH;
extern const int SUPPORT_IS_DISABLED;
extern const int ARGUMENT_OUT_OF_BOUND;
extern const int CANNOT_READ_ALL_DATA;
}
@ -412,6 +413,15 @@ void ValuesBlockInputFormat::readPrefix()
void ValuesBlockInputFormat::readSuffix()
{
if (!buf.eof() && *buf.position() == ';')
{
++buf.position();
skipWhitespaceIfAny(buf);
if (buf.hasUnreadData())
throw Exception("Cannot read data after semicolon", ErrorCodes::CANNOT_READ_ALL_DATA);
return;
}
if (buf.hasUnreadData())
throw Exception("Unread data in PeekableReadBuffer will be lost. Most likely it's a bug.", ErrorCodes::LOGICAL_ERROR);
}

View File

@ -0,0 +1,39 @@
#!/usr/bin/expect -f
log_user 0
set timeout 5
match_max 100000
# A default timeout action is to do nothing, change it to fail
expect_after {
timeout {
exit 1
}
}
set basedir [file dirname $argv0]
spawn bash -c "source $basedir/../shell_config.sh ; \$CLICKHOUSE_CLIENT_BINARY \$CLICKHOUSE_CLIENT_OPT"
expect ":) "
send -- "DROP TABLE IF EXISTS test_01179\r"
expect "Ok."
send -- "CREATE TABLE test_01179 (date DateTime) ENGINE=Memory()\r"
expect "Ok."
send -- "INSERT INTO test_01179 values ('2020-01-01')\r"
expect "Ok."
send -- "INSERT INTO test_01179 values ('2020-01-01'); \r"
expect "Ok."
send -- "INSERT INTO test_01179 values ('2020-01-01'); (1) \r"
expect "Cannot read data after semicolon"
send -- "SELECT date, count() FROM test_01179 GROUP BY date FORMAT TSV\r"
expect "2020-01-01 00:00:00\t3"
send -- "DROP TABLE test_01179\r"
expect "Ok."
send -- "\4"
expect eof