diff --git a/dbms/src/DataStreams/tests/block_row_transforms.cpp b/dbms/src/DataStreams/tests/block_row_transforms.cpp index ad3d4606a048165b7fed614cbb7d20a8679ed22b..9f1ba226227a1865fd68124f0b0bb80c23544441 100644 --- a/dbms/src/DataStreams/tests/block_row_transforms.cpp +++ b/dbms/src/DataStreams/tests/block_row_transforms.cpp @@ -6,8 +6,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -38,11 +38,8 @@ try col2.column = col2.type->createColumn(); sample.insert(col2); - std::ifstream istr("test_in"); - std::ofstream ostr("test_out"); - - ReadBufferFromIStream in_buf(istr); - WriteBufferFromOStream out_buf(ostr); + ReadBufferFromFile in_buf("test_in"); + WriteBufferFromFile out_buf("test_out"); RowInputStreamPtr row_input = std::make_shared(in_buf, sample); BlockInputStreamFromRowInputStream block_input(row_input, sample, DEFAULT_INSERT_BLOCK_SIZE, 0, 0); diff --git a/dbms/src/DataStreams/tests/block_tab_separated_streams.cpp b/dbms/src/DataStreams/tests/block_tab_separated_streams.cpp index b7be184df47383f81026029393dfda08f22bf46d..d4c3bcde704e421db4acbd9db3f28e9f8861c340 100644 --- a/dbms/src/DataStreams/tests/block_tab_separated_streams.cpp +++ b/dbms/src/DataStreams/tests/block_tab_separated_streams.cpp @@ -2,8 +2,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -26,62 +26,62 @@ try { NamesAndTypesList names_and_types_list { - {"WatchID", std::make_shared()}, - {"JavaEnable", std::make_shared()}, - {"Title", std::make_shared()}, - {"EventTime", std::make_shared()}, - {"CounterID", std::make_shared()}, - {"ClientIP", std::make_shared()}, - {"RegionID", std::make_shared()}, - {"UniqID", std::make_shared()}, - {"CounterClass", std::make_shared()}, - {"OS", std::make_shared()}, - {"UserAgent", std::make_shared()}, - {"URL", std::make_shared()}, - {"Referer", std::make_shared()}, - {"ResolutionWidth", std::make_shared()}, - {"ResolutionHeight", std::make_shared()}, - {"ResolutionDepth", std::make_shared()}, - {"FlashMajor", std::make_shared()}, - {"FlashMinor", std::make_shared()}, - {"FlashMinor2", std::make_shared()}, - {"NetMajor", std::make_shared()}, - {"NetMinor", std::make_shared()}, - {"UserAgentMajor", std::make_shared()}, - {"UserAgentMinor", std::make_shared(2)}, - {"CookieEnable", std::make_shared()}, - {"JavascriptEnable", std::make_shared()}, - {"IsMobile", std::make_shared()}, - {"MobilePhone", std::make_shared()}, - {"MobilePhoneModel", std::make_shared()}, - {"Params", std::make_shared()}, - {"IPNetworkID", std::make_shared()}, - {"TraficSourceID", std::make_shared()}, - {"SearchEngineID", std::make_shared()}, - {"SearchPhrase", std::make_shared()}, - {"AdvEngineID", std::make_shared()}, - {"IsArtifical", std::make_shared()}, - {"WindowClientWidth", std::make_shared()}, - {"WindowClientHeight", std::make_shared()}, - {"ClientTimeZone", std::make_shared()}, - {"ClientEventTime", std::make_shared()}, - {"SilverlightVersion1", std::make_shared()}, - {"SilverlightVersion2", std::make_shared()}, - {"SilverlightVersion3", std::make_shared()}, - {"SilverlightVersion4", std::make_shared()}, - {"PageCharset", std::make_shared()}, - {"CodeVersion", std::make_shared()}, - {"IsLink", std::make_shared()}, - {"IsDownload", std::make_shared()}, - {"IsNotBounce", std::make_shared()}, - {"FUniqID", std::make_shared()}, - {"OriginalURL", std::make_shared()}, - {"HID", std::make_shared()}, - {"IsOldCounter", std::make_shared()}, - {"IsEvent", std::make_shared()}, - {"IsParameter", std::make_shared()}, - {"DontCountHits", std::make_shared()}, - {"WithHash", std::make_shared()}, + {"WatchID", std::make_shared()}, + {"JavaEnable", std::make_shared()}, + {"Title", std::make_shared()}, + {"EventTime", std::make_shared()}, + {"CounterID", std::make_shared()}, + {"ClientIP", std::make_shared()}, + {"RegionID", std::make_shared()}, + {"UniqID", std::make_shared()}, + {"CounterClass", std::make_shared()}, + {"OS", std::make_shared()}, + {"UserAgent", std::make_shared()}, + {"URL", std::make_shared()}, + {"Referer", std::make_shared()}, + {"ResolutionWidth", std::make_shared()}, + {"ResolutionHeight", std::make_shared()}, + {"ResolutionDepth", std::make_shared()}, + {"FlashMajor", std::make_shared()}, + {"FlashMinor", std::make_shared()}, + {"FlashMinor2", std::make_shared()}, + {"NetMajor", std::make_shared()}, + {"NetMinor", std::make_shared()}, + {"UserAgentMajor", std::make_shared()}, + {"UserAgentMinor", std::make_shared(2)}, + {"CookieEnable", std::make_shared()}, + {"JavascriptEnable", std::make_shared()}, + {"IsMobile", std::make_shared()}, + {"MobilePhone", std::make_shared()}, + {"MobilePhoneModel", std::make_shared()}, + {"Params", std::make_shared()}, + {"IPNetworkID", std::make_shared()}, + {"TraficSourceID", std::make_shared()}, + {"SearchEngineID", std::make_shared()}, + {"SearchPhrase", std::make_shared()}, + {"AdvEngineID", std::make_shared()}, + {"IsArtifical", std::make_shared()}, + {"WindowClientWidth", std::make_shared()}, + {"WindowClientHeight", std::make_shared()}, + {"ClientTimeZone", std::make_shared()}, + {"ClientEventTime", std::make_shared()}, + {"SilverlightVersion1", std::make_shared()}, + {"SilverlightVersion2", std::make_shared()}, + {"SilverlightVersion3", std::make_shared()}, + {"SilverlightVersion4", std::make_shared()}, + {"PageCharset", std::make_shared()}, + {"CodeVersion", std::make_shared()}, + {"IsLink", std::make_shared()}, + {"IsDownload", std::make_shared()}, + {"IsNotBounce", std::make_shared()}, + {"FUniqID", std::make_shared()}, + {"OriginalURL", std::make_shared()}, + {"HID", std::make_shared()}, + {"IsOldCounter", std::make_shared()}, + {"IsEvent", std::make_shared()}, + {"IsParameter", std::make_shared()}, + {"DontCountHits", std::make_shared()}, + {"WithHash", std::make_shared()}, }; /// we create a description of how to read data from the tab separated dump @@ -98,8 +98,8 @@ try /// read the data from row tsv file and simultaneously write to the block tsv file { - ReadBufferFromIStream in_buf(std::cin); - WriteBufferFromOStream out_buf(std::cout); + ReadBufferFromFileDescriptor in_buf(STDIN_FILENO); + WriteBufferFromFileDescriptor out_buf(STDOUT_FILENO); RowInputStreamPtr row_in = std::make_shared(in_buf, sample); BlockInputStreamFromRowInputStream in(row_in, sample, DEFAULT_INSERT_BLOCK_SIZE, 0, 0); diff --git a/dbms/src/DataTypes/tests/data_type_string.cpp b/dbms/src/DataTypes/tests/data_type_string.cpp index 8f137414e146167c41d1f34ed0696dc89ee90ca8..9da44127e3c110c121cbdaba3ef6288c3c579f4f 100644 --- a/dbms/src/DataTypes/tests/data_type_string.cpp +++ b/dbms/src/DataTypes/tests/data_type_string.cpp @@ -5,8 +5,8 @@ #include -#include -#include +#include +#include #include #include @@ -36,7 +36,7 @@ try } std::ofstream ostr("test"); - WriteBufferFromOStream out_buf(ostr); + WriteBufferFromFileDescriptor out_buf(STDOUT_FILENO); stopwatch.restart(); data_type.serializeBinaryBulk(*column, out_buf, 0, 0); @@ -49,7 +49,7 @@ try std::shared_ptr column = std::make_shared(); std::ifstream istr("test"); - ReadBufferFromIStream in_buf(istr); + ReadBufferFromFileDescriptor in_buf(STDIN_FILENO); stopwatch.restart(); data_type.deserializeBinaryBulk(*column, in_buf, n, 0); diff --git a/dbms/src/IO/tests/hashing_read_buffer.cpp b/dbms/src/IO/tests/hashing_read_buffer.cpp index 973127d456b54dab37fafeb1245b7c10765a0155..3ba3ac74e5e8e9ef2204926c163211aa08c5534c 100644 --- a/dbms/src/IO/tests/hashing_read_buffer.cpp +++ b/dbms/src/IO/tests/hashing_read_buffer.cpp @@ -24,10 +24,6 @@ void test(size_t data_size) out.write(data, data_size); out.next(); - //std::cout.write(data, data_size); - //std::cout << std::endl; - //std::cout << io.str() << std::endl; - DB::ReadBufferFromIStream source(io, read_buffer_block_size); DB::HashingReadBuffer buf(source); diff --git a/dbms/src/IO/tests/read_buffer.cpp b/dbms/src/IO/tests/read_buffer.cpp index cc778b5321dc89acac55c1dea0643fe6fea48ada..3fac59979d04739fd53b7f2eaf77ef604dcd09c2 100644 --- a/dbms/src/IO/tests/read_buffer.cpp +++ b/dbms/src/IO/tests/read_buffer.cpp @@ -5,16 +5,15 @@ #include #include -#include +#include int main(int argc, char ** argv) { try { - std::stringstream s; - s << "-123456 123.456 вася пе\\tтя\t'\\'xyz\\\\'"; - DB::ReadBufferFromIStream in(s); + std::string s = "-123456 123.456 вася пе\\tтя\t'\\'xyz\\\\'"; + DB::ReadBufferFromString in(s); DB::Int64 a; DB::Float64 b; diff --git a/dbms/src/IO/tests/read_buffer_perf.cpp b/dbms/src/IO/tests/read_buffer_perf.cpp index 2c10dd3cf0c7faff422b5d8ce645480794cc1331..42217fee586bd9f556b9a68846a513cf47ccc430 100644 --- a/dbms/src/IO/tests/read_buffer_perf.cpp +++ b/dbms/src/IO/tests/read_buffer_perf.cpp @@ -5,15 +5,14 @@ #include #include -#include +#include int main(int argc, char ** argv) { try { - std::ifstream istr("test"); - DB::ReadBufferFromIStream in(istr); + DB::ReadBufferFromFile in("test"); DB::Int64 a = 0; DB::Float64 b = 0; diff --git a/dbms/src/IO/tests/read_float_perf.cpp b/dbms/src/IO/tests/read_float_perf.cpp index 249abf22f3ee3e7df4bb21540c9b5e1413fe9b5a..c050135d39dda1aa328807d51ce79e9504c16d6c 100644 --- a/dbms/src/IO/tests/read_float_perf.cpp +++ b/dbms/src/IO/tests/read_float_perf.cpp @@ -5,7 +5,7 @@ #include #include -#include +#include #include @@ -13,8 +13,7 @@ int main(int argc, char ** argv) { try { - std::ifstream istr("DevicePixelRatio"); - DB::ReadBufferFromIStream in(istr); + DB::ReadBufferFromFile in("DevicePixelRatio"); DB::Float32 b = 0; diff --git a/dbms/src/Interpreters/tests/CMakeLists.txt b/dbms/src/Interpreters/tests/CMakeLists.txt index 72198dce374b832d3b562329c3c7e1f255197fe4..fd9d7afe0f1c0741db2ba4d4a40268f28c3d0d3d 100644 --- a/dbms/src/Interpreters/tests/CMakeLists.txt +++ b/dbms/src/Interpreters/tests/CMakeLists.txt @@ -1,9 +1,6 @@ add_executable (expression expression.cpp) target_link_libraries (expression dbms) -add_executable (expression_analyzer expression_analyzer.cpp) -target_link_libraries (expression_analyzer dbms) - add_executable (create_query create_query.cpp) target_link_libraries (create_query dbms) diff --git a/dbms/src/Interpreters/tests/expression_analyzer.cpp b/dbms/src/Interpreters/tests/expression_analyzer.cpp deleted file mode 100644 index 4084c947702d80f2f2156d73d3c253a719c11e18..0000000000000000000000000000000000000000 --- a/dbms/src/Interpreters/tests/expression_analyzer.cpp +++ /dev/null @@ -1,158 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -int main(int argc, char ** argv) -{ - using namespace DB; - - try - { - - if (argc < 2) - { - std::cerr << "at least 1 argument expected" << std::endl; - return 1; - } - - Context context = Context::createGlobal(); - - NamesAndTypesList columns; - for (int i = 2; i + 1 < argc; i += 2) - { - NameAndTypePair col; - col.name = argv[i]; - col.type = DataTypeFactory::instance().get(argv[i + 1]); - columns.push_back(col); - } - - ASTPtr root; - ParserPtr parsers[] = {std::make_unique(), std::make_unique(false)}; - for (size_t i = 0; i < sizeof(parsers)/sizeof(parsers[0]); ++i) - { - IParser & parser = *parsers[i]; - const char * pos = argv[1]; - const char * end = argv[1] + strlen(argv[1]); - const char * max_parsed_pos = pos; - Expected expected = ""; - if (parser.parse(pos, end, root, max_parsed_pos, expected)) - break; - else - root = nullptr; - } - if (!root) - { - std::cerr << "invalid expression (should be select query or expression list)" << std::endl; - return 2; - } - - formatAST(*root, std::cout); - std::cout << std::endl; - - ExpressionAnalyzer analyzer(root, context, {}, columns); - - Names required = analyzer.getRequiredColumns(); - std::cout << "required columns:\n"; - for (size_t i = 0; i < required.size(); ++i) - { - std::cout << required[i] << "\n"; - } - std::cout << "\n"; - - std::cout << "only consts:\n\n" << analyzer.getConstActions()->dumpActions() << "\n"; - - if (analyzer.hasAggregation()) - { - Names key_names; - AggregateDescriptions aggregates; - analyzer.getAggregateInfo(key_names, aggregates); - - std::cout << "keys:\n"; - for (size_t i = 0; i < key_names.size(); ++i) - std::cout << key_names[i] << "\n"; - std::cout << "\n"; - - std::cout << "aggregates:\n"; - for (size_t i = 0; i < aggregates.size(); ++i) - { - AggregateDescription desc = aggregates[i]; - - std::cout << desc.column_name << " = " << desc.function->getName() << " ( "; - for (size_t j = 0; j < desc.argument_names.size(); ++j) - std::cout << desc.argument_names[j] << " "; - std::cout << ")\n"; - } - std::cout << "\n"; - - ExpressionActionsChain before; - if (analyzer.appendWhere(before, false)) - before.addStep(); - analyzer.appendAggregateFunctionsArguments(before, false); - analyzer.appendGroupBy(before, false); - before.finalize(); - - ExpressionActionsChain after; - if (analyzer.appendHaving(after, false)) - after.addStep(); - analyzer.appendSelect(after, false); - analyzer.appendOrderBy(after, false); - after.addStep(); - analyzer.appendProjectResult(after, false); - after.finalize(); - - std::cout << "before aggregation:\n\n"; - for (size_t i = 0; i < before.steps.size(); ++i) - { - std::cout << before.steps[i].actions->dumpActions(); - std::cout << std::endl; - } - - std::cout << "\nafter aggregation:\n\n"; - for (size_t i = 0; i < after.steps.size(); ++i) - { - std::cout << after.steps[i].actions->dumpActions(); - std::cout << std::endl; - } - } - else - { - if (typeid_cast(&*root)) - { - ExpressionActionsChain chain; - if (analyzer.appendWhere(chain, false)) - chain.addStep(); - analyzer.appendSelect(chain, false); - analyzer.appendOrderBy(chain, false); - chain.addStep(); - analyzer.appendProjectResult(chain, false); - chain.finalize(); - - for (size_t i = 0; i < chain.steps.size(); ++i) - { - std::cout << chain.steps[i].actions->dumpActions(); - std::cout << std::endl; - } - } - else - { - std::cout << "unprojected actions:\n\n" << analyzer.getActions(false)->dumpActions() << "\n"; - std::cout << "projected actions:\n\n" << analyzer.getActions(true)->dumpActions() << "\n"; - } - } - - } - catch (Exception & e) - { - std::cerr << "Exception " << e.what() << ": " << e.displayText() << "\n" << e.getStackTrace().toString(); - return 3; - } - - return 0; -} diff --git a/dbms/src/Interpreters/tests/select_query.cpp b/dbms/src/Interpreters/tests/select_query.cpp index 799e9b4060c7cb37c98f433b6664a342671bbe30..29478e088ef4ea58997401867f8a2875d1da1604 100644 --- a/dbms/src/Interpreters/tests/select_query.cpp +++ b/dbms/src/Interpreters/tests/select_query.cpp @@ -5,8 +5,8 @@ #include -#include -#include +#include +#include #include #include @@ -42,8 +42,8 @@ try attachSystemTablesLocal(*context.getDatabase("system")); context.setCurrentDatabase("default"); - ReadBufferFromIStream in(std::cin); - WriteBufferFromOStream out(std::cout); + ReadBufferFromFileDescriptor in(STDIN_FILENO); + WriteBufferFromFileDescriptor out(STDOUT_FILENO); executeQuery(in, out, /* allow_into_outfile = */ false, context, {}); diff --git a/dbms/src/Parsers/tests/lexer.cpp b/dbms/src/Parsers/tests/lexer.cpp index 374db0707dbafb095955dbc6d5d8bec1679e690e..f5fe14afb76a88a7baba7a6827099081e9b1718b 100644 --- a/dbms/src/Parsers/tests/lexer.cpp +++ b/dbms/src/Parsers/tests/lexer.cpp @@ -7,9 +7,9 @@ #include -/** How to test: - * for i in ~/work/ClickHouse/dbms/tests/queries/0_stateless/*.sql; do echo $i; grep -q 'FORMAT' $i || ./lexer < $i || break; done - */ +/// How to test: +/// for i in ~/work/ClickHouse/dbms/tests/queries/0_stateless/*.sql; do echo $i; grep -q 'FORMAT' $i || ./lexer < $i || break; done +/// using namespace DB; diff --git a/dbms/src/Server/Client.cpp b/dbms/src/Server/Client.cpp index 415516b04b4ac23156c707ffbefbe4b5da72976d..0e5b3b9af673ead305a2820b33c3d375032bd8ec 100644 --- a/dbms/src/Server/Client.cpp +++ b/dbms/src/Server/Client.cpp @@ -730,9 +730,9 @@ private: } - ASTPtr parseQuery(IParser::Pos & pos, const char * end, bool allow_multi_statements) + ASTPtr parseQuery(const char * & pos, const char * end, bool allow_multi_statements) { - ParserQuery parser; + ParserQuery parser(end); ASTPtr res; if (is_interactive) diff --git a/dbms/src/Storages/tests/CMakeLists.txt b/dbms/src/Storages/tests/CMakeLists.txt index 60ff6d4c5ec487cebb21bdccd378c8d74066bfa2..e0e13f0b1fda374774ed9134d7b8f125ec4402df 100644 --- a/dbms/src/Storages/tests/CMakeLists.txt +++ b/dbms/src/Storages/tests/CMakeLists.txt @@ -9,9 +9,6 @@ target_link_libraries (storage_log dbms) add_executable (hit_log hit_log.cpp) target_link_libraries (hit_log dbms) -add_executable (merge_tree merge_tree.cpp) -target_link_libraries (merge_tree dbms) - add_executable (seek_speed_test seek_speed_test.cpp) target_link_libraries (seek_speed_test dbms) diff --git a/dbms/src/Storages/tests/hit_log.cpp b/dbms/src/Storages/tests/hit_log.cpp index 43cde16ed2fcd1a05c9f92a3dfdb1a986b28544d..47867a312d573c7a6a8bbf470e28f6bc37b263b1 100644 --- a/dbms/src/Storages/tests/hit_log.cpp +++ b/dbms/src/Storages/tests/hit_log.cpp @@ -2,8 +2,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -117,7 +117,7 @@ try /// read the data from tsv file and simultaneously write to table if (argc == 2 && 0 == strcmp(argv[1], "write")) { - ReadBufferFromIStream in_buf(std::cin); + ReadBufferFromFileDescriptor in_buf(STDIN_FILENO); RowInputStreamPtr in_ = std::make_shared(in_buf, sample); BlockInputStreamFromRowInputStream in(in_, sample, DEFAULT_INSERT_BLOCK_SIZE, 0, 0); @@ -128,7 +128,7 @@ try /// read from it if (argc == 2 && 0 == strcmp(argv[1], "read")) { - WriteBufferFromOStream out_buf(std::cout); + WriteBufferFromFileDescriptor out_buf(STDOUT_FILENO); QueryProcessingStage::Enum stage; diff --git a/dbms/src/Storages/tests/merge_tree.cpp b/dbms/src/Storages/tests/merge_tree.cpp deleted file mode 100644 index 455b8554c39293111369ac5f67a9afa1697a20cf..0000000000000000000000000000000000000000 --- a/dbms/src/Storages/tests/merge_tree.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include - -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - - -int main(int argc, char ** argv) -try -{ - using namespace DB; - - const size_t rows = 12345; - - Context context = Context::createGlobal(); - - /// create a table with a pair of columns - - NamesAndTypesListPtr names_and_types = std::make_shared(); - names_and_types->push_back(NameAndTypePair("d", std::make_shared())); - names_and_types->push_back(NameAndTypePair("a", std::make_shared(std::make_shared()))); - - ASTPtr primary_expr; - Expected expected = ""; - String primary_expr_str = "d"; - const char * begin = primary_expr_str.data(); - const char * end = begin + primary_expr_str.size(); - const char * max_parsed_pos = begin; - ParserExpressionList parser(false); - if (!parser.parse(begin, end, primary_expr, max_parsed_pos, expected)) - throw Poco::Exception("Cannot parse " + primary_expr_str); - - MergeTreeData::MergingParams params; - params.mode = MergeTreeData::MergingParams::Ordinary; - - StoragePtr table = StorageMergeTree::create( - "./", "default", "test", - names_and_types, NamesAndTypesList{}, NamesAndTypesList{}, ColumnDefaults{}, false, - context, primary_expr, "d", - ASTPtr{}, 101, params, false, MergeTreeSettings{}); - table->startup(); - - /// write into it - { - Block block; - - ColumnWithTypeAndName column1; - column1.name = "d"; - column1.type = table->getDataTypeByName("d"); - column1.column = column1.type->createColumn(); - ColumnUInt16::Container_t & vec1 = typeid_cast(*column1.column).getData(); - - vec1.resize(rows); - for (size_t i = 0; i < rows; ++i) - vec1[i] = 10000; - - block.insert(column1); - - ColumnWithTypeAndName column2; - column2.name = "a"; - column2.type = table->getDataTypeByName("a"); - column2.column = column2.type->createColumn(); - - for (size_t i = 0; i < rows; ++i) - column2.column->insert(Array((rand() % 10) == 0 ? (rand() % 10) : 0, i)); - - block.insert(column2); - - BlockOutputStreamPtr out = table->write({}, {}); - out->write(block); - } - - /// read from it - { - Names column_names; - column_names.push_back("d"); - column_names.push_back("a"); - - QueryProcessingStage::Enum stage; - - ASTPtr select; - Expected expected = ""; - String select_str = "SELECT * FROM test"; - const char * begin = select_str.data(); - const char * end = begin + select_str.size(); - const char * max_parsed_pos = begin; - ParserSelectQuery parser; - if (!parser.parse(begin, end, select, max_parsed_pos, expected)) - throw Poco::Exception("Cannot parse " + primary_expr_str); - - BlockInputStreamPtr in = table->read(column_names, select, context, stage, 8192, 1)[0]; - - Block sample; - { - ColumnWithTypeAndName col; - col.type = names_and_types->front().type; - sample.insert(std::move(col)); - } - { - ColumnWithTypeAndName col; - col.type = names_and_types->back().type; - sample.insert(std::move(col)); - } - - WriteBufferFromFileDescriptor out_buf(STDOUT_FILENO); - - RowOutputStreamPtr output_ = std::make_shared(out_buf, sample); - BlockOutputStreamFromRowOutputStream output(output_); - - copyData(*in, output); - } - - return 0; -} -catch (const DB::Exception & e) -{ - std::cerr << e.displayText() << ", stack trace: \n\n" << e.getStackTrace().toString() << std::endl; - throw; -}