1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-12-18 13:54:11 +03:00

Fixed read/write/append responses.

This commit is contained in:
Patrick LeBlanc
2019-01-30 13:27:19 -06:00
parent ffbce0ecda
commit 33edeaf4b0
3 changed files with 36 additions and 13 deletions

View File

@@ -62,11 +62,22 @@ void AppendTask::run()
if (readCount != writeCount)
break;
}
uint32_t *buf32 = (uint32_t *) cmdbuf;
buf32[0] = SM_MSG_START;
buf32[1] = 4;
buf32[2] = writeCount;
write(cmdbuf, 12);
uint32_t response[4];
response[0] = SM_MSG_START;
if (cmd->count != 0 && writeCount == 0)
{
response[1] = 8;
response[2] = -1;
response[3] = errno;
write((uint8_t *) response, 16);
}
else
{
response[1] = 4;
response[2] = writeCount;
write((uint8_t *) response, 12);
}
}
}

View File

@@ -58,10 +58,11 @@ void ReadTask::run()
if (count > 0)
outbuf32[1] = count;
else {
int l_errno = errno;
outbuf.resize(16);
outbuf32[1] = 8;
outbuf32[2] = err;
outbuf32[3] = errno;
outbuf32[3] = l_errno;
}
break;
}

View File

@@ -39,12 +39,12 @@ void WriteTask::run()
success = read(&cmdbuf[sizeof(*cmd)], min(cmd->filename_len, 1024 - sizeof(*cmd) - 1));
check_error("WriteTask read");
size_t readCount = 0, writeCount = 0;
vector<uint8_t> databuf;
uint bufsize = 1 << 20; // 1 MB
databuf.resize(bufsize); // 1 MB
while (readCount < cmd->count)
{
uint toRead = min(cmd->count - readCount, bufsize); // 1 MB
@@ -61,11 +61,22 @@ void WriteTask::run()
if (writeCount != readCount)
break;
}
uint32_t *buf32 = (uint32_t *) cmdbuf;
buf32[0] = SM_MSG_START;
buf32[1] = 4;
buf32[2] = writeCount;
write(cmdbuf, 12);
uint32_t response[4];
response[0] = SM_MSG_START;
if (cmd->count != 0 && writeCount == 0)
{
response[1] = 8;
response[2] = -1;
response[3] = errno;
write((uint8_t *) response, 16);
}
else
{
response[1] = 4;
response[2] = writeCount;
write((uint8_t *) response, 12);
}
}
}