ClickHouse/dbms/src/DataStreams/copyData.cpp

64 lines
1.1 KiB
C++
Raw Normal View History

2010-03-04 19:20:28 +00:00
#include <DB/DataStreams/RowInputStreamFromBlockInputStream.h>
2010-05-24 17:55:57 +00:00
#include <DB/DataStreams/BlockInputStreamFromRowInputStream.h>
2010-03-04 19:20:28 +00:00
#include <DB/DataStreams/copyData.h>
namespace DB
{
void copyData(IBlockInputStream & from, IBlockOutputStream & to)
{
2011-10-31 06:37:12 +00:00
from.readPrefix();
to.writePrefix();
2010-03-04 19:20:28 +00:00
while (Block block = from.read())
to.write(block);
2011-10-31 06:37:12 +00:00
from.readSuffix();
to.writeSuffix();
2010-03-04 19:20:28 +00:00
}
void copyData(IRowInputStream & from, IRowOutputStream & to)
{
2011-10-31 06:37:12 +00:00
from.readPrefix();
to.writePrefix();
bool first = true;
2010-03-04 19:20:28 +00:00
while (1)
{
2011-10-31 06:37:12 +00:00
if (first)
first = false;
else
{
from.readRowBetweenDelimiter();
to.writeRowBetweenDelimiter();
}
2010-03-04 19:20:28 +00:00
Row row = from.read();
if (row.empty())
break;
to.write(row);
}
2011-10-31 06:37:12 +00:00
from.readSuffix();
to.writeSuffix();
2010-03-04 19:20:28 +00:00
}
void copyData(IBlockInputStream & from, IRowOutputStream & to)
{
2011-10-24 12:10:59 +00:00
RowInputStreamFromBlockInputStream row_input(from.clone());
2010-03-04 19:20:28 +00:00
copyData(row_input, to);
}
2010-05-24 17:55:57 +00:00
void copyData(IRowInputStream & from, IBlockOutputStream & to, const Block & sample)
{
2011-10-24 12:10:59 +00:00
BlockInputStreamFromRowInputStream block_input(from.clone(), sample);
2010-05-24 17:55:57 +00:00
copyData(block_input, to);
}
2010-03-04 19:20:28 +00:00
}