mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
Fix compile errors, added output format test
This commit is contained in:
parent
bcac2722d1
commit
c8cff57a62
@ -8,8 +8,8 @@
|
||||
namespace DB
|
||||
{
|
||||
|
||||
BinaryRowInputStream::BinaryRowInputStream(ReadBuffer & istr_, const Block & header_)
|
||||
: istr(istr_), header(header_)
|
||||
BinaryRowInputStream::BinaryRowInputStream(ReadBuffer & istr_, const Block & header_, bool with_names_, bool with_types_)
|
||||
: istr(istr_), header(header_), with_names(with_names_), with_types(with_types_)
|
||||
{
|
||||
}
|
||||
|
||||
@ -27,6 +27,34 @@ bool BinaryRowInputStream::read(MutableColumns & columns, RowReadExtension &)
|
||||
}
|
||||
|
||||
|
||||
void BinaryRowInputStream::readPrefix()
|
||||
{
|
||||
UInt64 columns;
|
||||
String tmp;
|
||||
|
||||
if (with_names || with_types)
|
||||
{
|
||||
readVarUInt(columns, istr)
|
||||
}
|
||||
|
||||
if (with_names)
|
||||
{
|
||||
for (size_t i = 0; i < columns; ++i)
|
||||
{
|
||||
readStringBinary(tmp, istr);
|
||||
}
|
||||
}
|
||||
|
||||
if (with_types)
|
||||
{
|
||||
for (size_t i = 0; i < columns; ++i)
|
||||
{
|
||||
readStringBinary(tmp, istr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void registerInputFormatRowBinary(FormatFactory & factory)
|
||||
{
|
||||
factory.registerInputFormat("RowBinary", [](
|
||||
@ -37,7 +65,18 @@ void registerInputFormatRowBinary(FormatFactory & factory)
|
||||
const FormatSettings & settings)
|
||||
{
|
||||
return std::make_shared<BlockInputStreamFromRowInputStream>(
|
||||
std::make_shared<BinaryRowInputStream>(buf, sample),
|
||||
std::make_shared<BinaryRowInputStream>(buf, sample, false, false),
|
||||
sample, max_block_size, settings);
|
||||
});
|
||||
|
||||
factory.registerInputFormat("RowBinaryWithNamesAndTypes", [](
|
||||
WriteBuffer & buf,
|
||||
const Block & sample,
|
||||
const Context &,
|
||||
const FormatSettings &)
|
||||
{
|
||||
return std::make_shared<BlockInputStreamFromRowInputStream>(
|
||||
std::make_shared<BinaryRowInputStream>(buf, sample, true, true),
|
||||
sample, max_block_size, settings);
|
||||
});
|
||||
}
|
||||
|
@ -15,13 +15,16 @@ class ReadBuffer;
|
||||
class BinaryRowInputStream : public IRowInputStream
|
||||
{
|
||||
public:
|
||||
BinaryRowInputStream(ReadBuffer & istr_, const Block & header_);
|
||||
BinaryRowInputStream(ReadBuffer & istr_, const Block & sample_, bool with_names_, bool with_types_);
|
||||
|
||||
bool read(MutableColumns & columns, RowReadExtension &) override;
|
||||
void readPrefix() override;
|
||||
|
||||
private:
|
||||
ReadBuffer & istr;
|
||||
Block header;
|
||||
bool with_names;
|
||||
bool with_types;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -20,14 +20,14 @@ void BinaryRowOutputStream::writePrefix()
|
||||
|
||||
if (with_names || with_types)
|
||||
{
|
||||
writeVarUInt(columns)
|
||||
writeVarUInt(columns, ostr)
|
||||
}
|
||||
|
||||
if (with_names)
|
||||
{
|
||||
for (size_t i = 0; i < columns; ++i)
|
||||
{
|
||||
writeBinary(sample.safeGetByPosition(i).name, ostr);
|
||||
writeStringBinary(sample.safeGetByPosition(i).name, ostr);
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ void BinaryRowOutputStream::writePrefix()
|
||||
{
|
||||
for (size_t i = 0; i < columns; ++i)
|
||||
{
|
||||
writeBinary(sample.safeGetByPosition(i).type->getName(), ostr);
|
||||
writeStringBinary(sample.safeGetByPosition(i).type->getName(), ostr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <Formats/IRowOutputStream.h>
|
||||
#include <Core/Block.h>
|
||||
|
||||
|
||||
namespace DB
|
||||
@ -16,7 +17,7 @@ class WriteBuffer;
|
||||
class BinaryRowOutputStream : public IRowOutputStream
|
||||
{
|
||||
public:
|
||||
BinaryRowOutputStream(WriteBuffer & ostr_);
|
||||
BinaryRowOutputStream(WriteBuffer & ostr_, const Block & sample_, bool with_names_, bool with_types_);
|
||||
|
||||
void writeField(const IColumn & column, const IDataType & type, size_t row_num) override;
|
||||
void writePrefix() override;
|
||||
|
@ -1,5 +1,6 @@
|
||||
SET output_format_write_statistics = 0;
|
||||
SELECT number * 246 + 10 AS n, toDate('2000-01-01') + n AS d, range(n) AS arr, arrayStringConcat(arrayMap(x -> reinterpretAsString(x), arr)) AS s, (n, d) AS tuple FROM system.numbers LIMIT 2 FORMAT RowBinary;
|
||||
SELECT number * 246 + 10 AS n, toDate('2000-01-01') + n AS d, range(n) AS arr, arrayStringConcat(arrayMap(x -> reinterpretAsString(x), arr)) AS s, (n, d) AS tuple FROM system.numbers LIMIT 2 FORMAT RowBinaryWithNamesAndTypes;
|
||||
SELECT number * 246 + 10 AS n, toDate('2000-01-01') + n AS d, range(n) AS arr, arrayStringConcat(arrayMap(x -> reinterpretAsString(x), arr)) AS s, (n, d) AS tuple FROM system.numbers LIMIT 2 FORMAT TabSeparatedWithNamesAndTypes;
|
||||
SELECT number * 246 + 10 AS n, toDate('2000-01-01') + n AS d, range(n) AS arr, arrayStringConcat(arrayMap(x -> reinterpretAsString(x), arr)) AS s, (n, d) AS tuple FROM system.numbers LIMIT 2 FORMAT TabSeparatedRaw;
|
||||
SELECT number * 246 + 10 AS n, toDate('2000-01-01') + n AS d, range(n) AS arr, arrayStringConcat(arrayMap(x -> reinterpretAsString(x), arr)) AS s, (n, d) AS tuple FROM system.numbers LIMIT 2 FORMAT CSV;
|
||||
|
Loading…
Reference in New Issue
Block a user