diff options
author | Bulat Gayazov <brgayazov@yandex-team.ru> | 2023-08-16 23:34:38 +0300 |
---|---|---|
committer | brgayazov <bulat@ydb.tech> | 2023-08-17 00:13:26 +0300 |
commit | 979c077893fc74f97bb08744e449987949aa9b4c (patch) | |
tree | 7c16b219d9a26b6937a4832409388cf6d97787fa | |
parent | 32404be331a9de127c532ee5c436306cea8492f9 (diff) | |
download | ydb-979c077893fc74f97bb08744e449987949aa9b4c.tar.gz |
Added csv and tsv formats to yql command params
Added csv and tsv formats to yql command params
Pull Request resolved: #327
171 files changed, 2786 insertions, 464 deletions
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.cpp index 1e0d35ef28..fc8bd00ff4 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.cpp +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.cpp @@ -49,6 +49,8 @@ void TCommandExecuteYqlScript::Config(TConfig& config) { EOutputFormat::JsonUnicode, EOutputFormat::JsonBase64, EOutputFormat::Raw, + EOutputFormat::Csv, + EOutputFormat::Tsv }, { EOutputFormat::NoFraming, EOutputFormat::NewlineDelimited @@ -110,7 +112,7 @@ int TCommandExecuteYqlScript::Run(TConfig& config) { ValidateResult = MakeHolder<NScripting::TExplainYqlResult>( ExplainQuery(config, Script, NScripting::ExplainYqlRequestMode::Validate)); THolder<TParamsBuilder> paramBuilder; - while (GetNextParams(ValidateResult->GetParameterTypes(), InputFormat, StdinFormat, FramingFormat, paramBuilder)) { + while (GetNextParams(paramBuilder)) { auto asyncResult = client.ExecuteYqlScript( Script, paramBuilder->Build(), diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.h b/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.h index 9911c6a744..b0a80c986b 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.h +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.h @@ -15,7 +15,7 @@ public: TCommandScripting(); }; -class TCommandExecuteYqlScript : public TYdbOperationCommand, public TCommandWithFormat, +class TCommandExecuteYqlScript : public TYdbOperationCommand, public TCommandWithResponseHeaders, TCommandWithParameters { public: diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_table.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_table.cpp index 159324d8d4..e4dd1472d9 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_table.cpp +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_table.cpp @@ -378,6 +378,8 @@ void TCommandExecuteQuery::Config(TConfig& config) { EOutputFormat::JsonUnicode, EOutputFormat::JsonBase64, EOutputFormat::Raw, + EOutputFormat::Csv, + EOutputFormat::Tsv, }, { EOutputFormat::NoFraming, EOutputFormat::NewlineDelimited @@ -449,7 +451,7 @@ int TCommandExecuteQuery::ExecuteDataQuery(TConfig& config) { ValidateResult = MakeHolder<NScripting::TExplainYqlResult>( ExplainQuery(config, Query, NScripting::ExplainYqlRequestMode::Validate)); THolder<TParamsBuilder> paramBuilder; - while (GetNextParams(ValidateResult->GetParameterTypes(), InputFormat, StdinFormat, FramingFormat, paramBuilder)) { + while (GetNextParams(paramBuilder)) { TParams params = paramBuilder->Build(); auto operation = [this, &txSettings, ¶ms, &settings, &asyncResult](NTable::TSession session) { auto promise = NThreading::NewPromise<NTable::TDataQueryResult>(); @@ -533,7 +535,7 @@ int TCommandExecuteQuery::ExecuteScanQuery(TConfig& config) { ValidateResult = MakeHolder<NScripting::TExplainYqlResult>( ExplainQuery(config, Query, NScripting::ExplainYqlRequestMode::Validate)); THolder<TParamsBuilder> paramBuilder; - while (GetNextParams(ValidateResult->GetParameterTypes(), InputFormat, StdinFormat, FramingFormat, paramBuilder)) { + while (GetNextParams(paramBuilder)) { auto operation = [this, ¶mBuilder, &settings, &asyncResult](NTable::TTableClient client) { auto promise = NThreading::NewPromise<NTable::TScanQueryPartIterator>(); asyncResult = promise.GetFuture(); diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_table.h b/ydb/public/lib/ydb_cli/commands/ydb_service_table.h index e1f4123e24..33b11e74c3 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_table.h +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_table.h @@ -92,7 +92,7 @@ protected: }; class TCommandExecuteQuery : public TTableCommand, TCommandQueryBase, TCommandWithParameters, - public TCommandWithFormat, public TInterruptibleCommand + public TInterruptibleCommand { public: TCommandExecuteQuery(); diff --git a/ydb/public/lib/ydb_cli/commands/ydb_yql.cpp b/ydb/public/lib/ydb_cli/commands/ydb_yql.cpp index 8223548cb2..d390a500ad 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_yql.cpp +++ b/ydb/public/lib/ydb_cli/commands/ydb_yql.cpp @@ -50,6 +50,8 @@ void TCommandYql::Config(TConfig& config) { EOutputFormat::JsonUnicode, EOutputFormat::JsonBase64, EOutputFormat::Raw, + EOutputFormat::Csv, + EOutputFormat::Tsv }, { EOutputFormat::NoFraming, EOutputFormat::NewlineDelimited @@ -92,9 +94,7 @@ int TCommandYql::RunCommand(TConfig& config, const TString &script) { ValidateResult = MakeHolder<NScripting::TExplainYqlResult>( ExplainQuery(config, Script, NScripting::ExplainYqlRequestMode::Validate)); THolder<TParamsBuilder> paramBuilder; - while (!IsInterrupted() && - GetNextParams(ValidateResult->GetParameterTypes(), InputFormat, StdinFormat, FramingFormat, paramBuilder)) { - + while (!IsInterrupted() && GetNextParams(paramBuilder)) { auto asyncResult = client.StreamExecuteYqlScript( script, paramBuilder->Build(), diff --git a/ydb/public/lib/ydb_cli/commands/ydb_yql.h b/ydb/public/lib/ydb_cli/commands/ydb_yql.h index ef0c44bfc7..8ad5581399 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_yql.h +++ b/ydb/public/lib/ydb_cli/commands/ydb_yql.h @@ -12,7 +12,7 @@ namespace NYdb { namespace NConsoleClient { class TCommandYql : public TYdbOperationCommand, public TCommandWithParameters, - public TCommandWithFormat, public TInterruptibleCommand + public TInterruptibleCommand { public: TCommandYql(); diff --git a/ydb/public/lib/ydb_cli/common/CMakeLists.darwin-x86_64.txt b/ydb/public/lib/ydb_cli/common/CMakeLists.darwin-x86_64.txt index 7ca1529d39..1b0f6e051e 100644 --- a/ydb/public/lib/ydb_cli/common/CMakeLists.darwin-x86_64.txt +++ b/ydb/public/lib/ydb_cli/common/CMakeLists.darwin-x86_64.txt @@ -28,6 +28,7 @@ target_link_libraries(common PUBLIC library-cpp-getopt cpp-json-writer cpp-yaml-as + cpp-string_utils-csv public-lib-json_value public-lib-operation_id public-lib-yson_value @@ -44,11 +45,13 @@ target_sources(common PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/aws.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/command.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/common.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/csv_parser.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/examples.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/format.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/interactive.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/interruptible.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/normalize_path.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/parameter_stream.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/parameters.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/pretty_table.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/print_operation.cpp diff --git a/ydb/public/lib/ydb_cli/common/CMakeLists.linux-aarch64.txt b/ydb/public/lib/ydb_cli/common/CMakeLists.linux-aarch64.txt index cdb21eb28b..2c3983d3d1 100644 --- a/ydb/public/lib/ydb_cli/common/CMakeLists.linux-aarch64.txt +++ b/ydb/public/lib/ydb_cli/common/CMakeLists.linux-aarch64.txt @@ -29,6 +29,7 @@ target_link_libraries(common PUBLIC library-cpp-getopt cpp-json-writer cpp-yaml-as + cpp-string_utils-csv public-lib-json_value public-lib-operation_id public-lib-yson_value @@ -45,11 +46,13 @@ target_sources(common PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/aws.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/command.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/common.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/csv_parser.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/examples.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/format.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/interactive.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/interruptible.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/normalize_path.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/parameter_stream.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/parameters.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/pretty_table.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/print_operation.cpp diff --git a/ydb/public/lib/ydb_cli/common/CMakeLists.linux-x86_64.txt b/ydb/public/lib/ydb_cli/common/CMakeLists.linux-x86_64.txt index cdb21eb28b..2c3983d3d1 100644 --- a/ydb/public/lib/ydb_cli/common/CMakeLists.linux-x86_64.txt +++ b/ydb/public/lib/ydb_cli/common/CMakeLists.linux-x86_64.txt @@ -29,6 +29,7 @@ target_link_libraries(common PUBLIC library-cpp-getopt cpp-json-writer cpp-yaml-as + cpp-string_utils-csv public-lib-json_value public-lib-operation_id public-lib-yson_value @@ -45,11 +46,13 @@ target_sources(common PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/aws.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/command.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/common.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/csv_parser.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/examples.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/format.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/interactive.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/interruptible.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/normalize_path.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/parameter_stream.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/parameters.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/pretty_table.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/print_operation.cpp diff --git a/ydb/public/lib/ydb_cli/common/CMakeLists.windows-x86_64.txt b/ydb/public/lib/ydb_cli/common/CMakeLists.windows-x86_64.txt index 7ca1529d39..1b0f6e051e 100644 --- a/ydb/public/lib/ydb_cli/common/CMakeLists.windows-x86_64.txt +++ b/ydb/public/lib/ydb_cli/common/CMakeLists.windows-x86_64.txt @@ -28,6 +28,7 @@ target_link_libraries(common PUBLIC library-cpp-getopt cpp-json-writer cpp-yaml-as + cpp-string_utils-csv public-lib-json_value public-lib-operation_id public-lib-yson_value @@ -44,11 +45,13 @@ target_sources(common PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/aws.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/command.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/common.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/csv_parser.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/examples.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/format.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/interactive.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/interruptible.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/normalize_path.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/parameter_stream.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/parameters.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/pretty_table.cpp ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/print_operation.cpp diff --git a/ydb/public/lib/ydb_cli/common/csv_parser.cpp b/ydb/public/lib/ydb_cli/common/csv_parser.cpp new file mode 100644 index 0000000000..5837bc73bc --- /dev/null +++ b/ydb/public/lib/ydb_cli/common/csv_parser.cpp @@ -0,0 +1,318 @@ +#include "csv_parser.h" + +#include <ydb/public/lib/ydb_cli/common/common.h> + +#include <library/cpp/string_utils/csv/csv.h> + +namespace NYdb { +namespace NConsoleClient { +namespace { + +class TCsvToYdbConverter { +public: + explicit TCsvToYdbConverter(TTypeParser& parser) + : Parser(parser) + { + } + + template <class T, std::enable_if_t<std::is_integral_v<T> && std::is_signed_v<T>, std::nullptr_t> = nullptr> + static i64 StringToArithmetic(const TString& token, size_t& cnt) { + return std::stoll(token, &cnt); + } + + template <class T, std::enable_if_t<std::is_integral_v<T> && std::is_unsigned_v<T>, std::nullptr_t> = nullptr> + static ui64 StringToArithmetic(const TString& token, size_t& cnt) { + return std::stoull(token, &cnt); + } + + template <class T, std::enable_if_t<std::is_same_v<T, float>, std::nullptr_t> = nullptr> + static float StringToArithmetic(const TString& token, size_t& cnt) { + return std::stof(token, &cnt); + } + + template <class T, std::enable_if_t<std::is_same_v<T, double>, std::nullptr_t> = nullptr> + static double StringToArithmetic(const TString& token, size_t& cnt) { + return std::stod(token, &cnt); + } + + template <class T> + T GetArithmetic(const TString& token) const { + size_t cnt; + try { + auto value = StringToArithmetic<T>(token, cnt); + if (cnt != token.Size() || value < std::numeric_limits<T>::min() || value > std::numeric_limits<T>::max()) { + throw yexception(); + } + return static_cast<T>(value); + } catch (std::exception& e) { + throw TMisuseException() << "Expected " << Parser.GetPrimitive() << " value, recieved: \"" << token << "\"."; + } + } + + void BuildPrimitive(const TString& token) { + switch (Parser.GetPrimitive()) { + case EPrimitiveType::Int8: + Builder.Int8(GetArithmetic<i8>(token)); + break; + case EPrimitiveType::Int16: + Builder.Int16(GetArithmetic<i16>(token)); + break; + case EPrimitiveType::Int32: + Builder.Int32(GetArithmetic<i32>(token)); + break; + case EPrimitiveType::Int64: + Builder.Int64(GetArithmetic<i64>(token)); + break; + case EPrimitiveType::Uint8: + Builder.Uint8(GetArithmetic<ui8>(token)); + break; + case EPrimitiveType::Uint16: + Builder.Uint16(GetArithmetic<ui16>(token)); + break; + case EPrimitiveType::Uint32: + Builder.Uint32(GetArithmetic<ui32>(token)); + break; + case EPrimitiveType::Uint64: + Builder.Uint64(GetArithmetic<ui64>(token)); + break; + case EPrimitiveType::Bool: + Builder.Bool(GetBool(token)); + break; + case EPrimitiveType::String: + Builder.String(token); + break; + case EPrimitiveType::Utf8: + Builder.Utf8(token); + break; + case EPrimitiveType::Json: + Builder.Json(token); + break; + case EPrimitiveType::JsonDocument: + Builder.JsonDocument(token); + break; + case EPrimitiveType::Yson: + Builder.Yson(token); + break; + case EPrimitiveType::Uuid: + Builder.Uuid(token); + break; + case EPrimitiveType::Float: + Builder.Float(GetArithmetic<float>(token)); + break; + case EPrimitiveType::Double: + Builder.Double(GetArithmetic<double>(token)); + break; + case EPrimitiveType::DyNumber: + Builder.DyNumber(token); + break; + case EPrimitiveType::Date: + Builder.Date(TInstant::Days(GetArithmetic<ui16>(token))); + break; + case EPrimitiveType::Datetime: + Builder.Datetime(TInstant::Seconds(GetArithmetic<ui32>(token))); + break; + case EPrimitiveType::Timestamp: + Builder.Timestamp(TInstant::MicroSeconds(GetArithmetic<ui64>(token))); + break; + case EPrimitiveType::Interval: + Builder.Interval(GetArithmetic<i64>(token)); + break; + case EPrimitiveType::TzDate: + Builder.TzDate(token); + break; + case EPrimitiveType::TzDatetime: + Builder.TzDatetime(token); + break; + case EPrimitiveType::TzTimestamp: + Builder.TzTimestamp(token); + break; + default: + TMisuseException() << "Unsupported primitive type: " << Parser.GetPrimitive(); + } + } + + void BuildValue(TStringBuf token) { + switch (Parser.GetKind()) { + case TTypeParser::ETypeKind::Primitive: + BuildPrimitive(TString(token)); + break; + + case TTypeParser::ETypeKind::Decimal: + Builder.Decimal(TString(token)); + break; + + case TTypeParser::ETypeKind::Optional: + Parser.OpenOptional(); + if (token == NullValue) { + Builder.EmptyOptional(GetType()); + } else { + Builder.BeginOptional(); + BuildValue(token); + Builder.EndOptional(); + } + Parser.CloseOptional(); + break; + + case TTypeParser::ETypeKind::Null: + EnsureNull(token); + break; + + case TTypeParser::ETypeKind::Void: + EnsureNull(token); + break; + + case TTypeParser::ETypeKind::Tagged: + Parser.OpenTagged(); + Builder.BeginTagged(Parser.GetTag()); + BuildValue(token); + Builder.EndTagged(); + Parser.CloseTagged(); + break; + + default: + throw TMisuseException() << "Unsupported type kind: " << Parser.GetKind(); + } + } + + void BuildType(TTypeBuilder& typeBuilder) { + switch (Parser.GetKind()) { + case TTypeParser::ETypeKind::Primitive: + typeBuilder.Primitive(Parser.GetPrimitive()); + break; + + case TTypeParser::ETypeKind::Decimal: + typeBuilder.Decimal(Parser.GetDecimal()); + break; + + case TTypeParser::ETypeKind::Optional: + Parser.OpenOptional(); + typeBuilder.BeginOptional(); + BuildType(typeBuilder); + typeBuilder.EndOptional(); + Parser.CloseOptional(); + break; + + case TTypeParser::ETypeKind::Tagged: + Parser.OpenTagged(); + typeBuilder.BeginTagged(Parser.GetTag()); + BuildType(typeBuilder); + typeBuilder.EndTagged(); + Parser.CloseTagged(); + break; + + default: + throw TMisuseException() << "Unsupported type kind: " << Parser.GetKind(); + } + } + + TType GetType() { + TTypeBuilder typeBuilder; + BuildType(typeBuilder); + return typeBuilder.Build(); + } + + bool GetBool(const TString& token) const { + if (token == "true") { + return true; + } + if (token == "false") { + return false; + } + throw TMisuseException() << "Expected bool value: \"true\" or \"false\", recieved: \"" << token << "\"."; + } + + void EnsureNull(TStringBuf token) const { + if (token != NullValue) { + throw TMisuseException() << "Expected null value: \"" << NullValue << "\", recieved: \"" << token << "\"."; + } + } + + TValue Convert(TStringBuf token) { + BuildValue(token); + return Builder.Build(); + } + +private: + TTypeParser& Parser; + const TString NullValue = ""; + TValueBuilder Builder; +}; + +} + +TCsvParser::TCsvParser(TString&& headerRow, const char delimeter, const std::map<TString, TType>& paramTypes, const std::map<TString, TString>& paramSources) + : HeaderRow(std::move(headerRow)) + , Delimeter(delimeter) + , ParamTypes(paramTypes) + , ParamSources(paramSources) +{ + NCsvFormat::CsvSplitter splitter(HeaderRow, Delimeter); + Header = static_cast<TVector<TString>>(splitter); +} + +TValue TCsvParser::FieldToValue(TTypeParser& parser, TStringBuf token) { + TCsvToYdbConverter converter(parser); + return converter.Convert(token); +} + +void TCsvParser::GetParams(TString&& data, TParamsBuilder& builder) { + NCsvFormat::CsvSplitter splitter(data, Delimeter); + auto headerIt = Header.begin(); + do { + TStringBuf token = splitter.Consume(); + if (headerIt == Header.end()) { + throw TMisuseException() << "Header contains less fields than data. Header: \"" << HeaderRow << "\", data: \"" << data << "\""; + } + TString fullname = "$" + *headerIt; + auto paramIt = ParamTypes.find(fullname); + if (paramIt == ParamTypes.end()) { + ++headerIt; + continue; + } + auto paramSource = ParamSources.find(fullname); + if (paramSource != ParamSources.end()) { + throw TMisuseException() << "Parameter " << fullname << " value found in more than one source: stdin, " << paramSource->second << "."; + } + TTypeParser parser(paramIt->second); + builder.AddParam(fullname, FieldToValue(parser, token)); + ++headerIt; + } while (splitter.Step()); + + if (headerIt != Header.end()) { + throw TMisuseException() << "Header contains more fields than data. Header: \"" << HeaderRow << "\", data: \"" << data << "\""; + } +} + +void TCsvParser::GetValue(TString&& data, const TType& type, TValueBuilder& builder) { + NCsvFormat::CsvSplitter splitter(data, Delimeter); + auto headerIt = Header.begin(); + std::map<TString, TStringBuf> fields; + do { + TStringBuf token = splitter.Consume(); + if (headerIt == Header.end()) { + throw TMisuseException() << "Header contains less fields than data. Header: \"" << HeaderRow << "\", data: \"" << data << "\""; + } + fields[*headerIt] = token; + ++headerIt; + } while (splitter.Step()); + + if (headerIt != Header.end()) { + throw TMisuseException() << "Header contains more fields than data. Header: \"" << HeaderRow << "\", data: \"" << data << "\""; + } + builder.BeginStruct(); + TTypeParser parser(type); + parser.OpenStruct(); + while (parser.TryNextMember()) { + TString name = parser.GetMemberName(); + auto fieldIt = fields.find(name); + if (fieldIt == fields.end()) { + throw TMisuseException() << "No member \"" << name << "\" in csv string for YDB struct type"; + } + builder.AddMember(name, FieldToValue(parser, fieldIt->second)); + } + parser.CloseStruct(); + builder.EndStruct(); +} + +} +}
\ No newline at end of file diff --git a/ydb/public/lib/ydb_cli/common/csv_parser.h b/ydb/public/lib/ydb_cli/common/csv_parser.h new file mode 100644 index 0000000000..f690d4e484 --- /dev/null +++ b/ydb/public/lib/ydb_cli/common/csv_parser.h @@ -0,0 +1,28 @@ +#pragma once + +#include <ydb/public/sdk/cpp/client/ydb_params/params.h> + +#include <library/cpp/string_utils/csv/csv.h> + +namespace NYdb { +namespace NConsoleClient { + +class TCsvParser { +public: + TCsvParser(TString&& headerRow, const char delimeter, const std::map<TString, TType>& paramTypes, const std::map<TString, TString>& paramSources); + + void GetParams(TString&& data, TParamsBuilder& builder); + void GetValue(TString&& data, const TType& type, TValueBuilder& builder); + +private: + TValue FieldToValue(TTypeParser& parser, TStringBuf token); + + TVector<TString> Header; + TString HeaderRow; + const char Delimeter; + const std::map<TString, TType>& ParamTypes; + const std::map<TString, TString>& ParamSources; +}; + +} +}
\ No newline at end of file diff --git a/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp b/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp new file mode 100644 index 0000000000..ca09248901 --- /dev/null +++ b/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp @@ -0,0 +1,163 @@ +#include "csv_parser.h" + +#include <contrib/libs/protobuf/src/google/protobuf/text_format.h> +#include <library/cpp/testing/unittest/registar.h> +#include <ydb/public/api/protos/ydb_value.pb.h> + +using namespace NYdb; +using namespace NYdb::NConsoleClient; + +Y_UNIT_TEST_SUITE(YdbCliCsvParserTests) { + bool CompareValues(const TValue& lhs, const TValue& rhs) { + lhs.GetProto(); + TString stringFirst, stringSecond; + NProtoBuf::TextFormat::PrintToString(lhs.GetProto(), &stringFirst); + NProtoBuf::TextFormat::PrintToString(rhs.GetProto(), &stringSecond); + return stringFirst == stringSecond; + } + + void CommonTestParams(TString&& header, TString&& data, const std::map<TString, TValue>& result) { + std::map<TString, TType> paramTypes; + for (const auto& [name, value] : result) { + paramTypes.insert({name, value.GetType()}); + } + std::map<TString, TString> paramSources; + TCsvParser parser(std::move(header), ',', paramTypes, paramSources); + TParamsBuilder paramBuilder; + parser.GetParams(std::move(data), paramBuilder); + auto values = paramBuilder.Build().GetValues(); + UNIT_ASSERT_EQUAL(values.size(), result.size()); + for (const auto& [name, value] : result) { + auto it = values.find(name); + UNIT_ASSERT_UNEQUAL(it, values.end()); + UNIT_ASSERT(CompareValues(value, it->second)); + } + } + + void CommonTestValue(TString&& header, TString&& data, const TValue& result) { + std::map<TString, TType> paramTypes; + for (auto member : result.GetType().GetProto().struct_type().members()) { + paramTypes.insert({member.name(), member.type()}); + } + + TCsvParser parser(std::move(header), ',', paramTypes, {}); + TValueBuilder valueBuilder; + parser.GetValue(std::move(data), result.GetType(), valueBuilder); + UNIT_ASSERT(CompareValues(valueBuilder.Build(), result)); + } + + TValue MakeStruct(const TString& name, const TValue& value) { + return TValueBuilder().BeginStruct().AddMember(name, value).EndStruct().Build(); + } + + Y_UNIT_TEST(IntegerTypesTestParams) { + CommonTestParams("name", "-1", {{"$name", TValueBuilder().Int8(-1).Build()}}); + CommonTestParams("name", "-10000", {{"$name", TValueBuilder().Int16(-10000).Build()}}); + CommonTestParams("name", "-1000000", {{"$name", TValueBuilder().Int32(-1000000).Build()}}); + CommonTestParams("name", "-100000000000", {{"$name", TValueBuilder().Int64(-100000000000).Build()}}); + CommonTestParams("name", "1", {{"$name", TValueBuilder().Uint8(1).Build()}}); + CommonTestParams("name", "10000", {{"$name", TValueBuilder().Uint16(10000).Build()}}); + CommonTestParams("name", "1000000", {{"$name", TValueBuilder().Uint32(1000000).Build()}}); + CommonTestParams("name", "100000000000", {{"$name", TValueBuilder().Uint64(100000000000).Build()}}); + } + + Y_UNIT_TEST(IntegerTypesTestValue) { + CommonTestValue("name", "-1", MakeStruct("name", TValueBuilder().Int8(-1).Build())); + CommonTestValue("name", "-10000", MakeStruct("name", TValueBuilder().Int16(-10000).Build())); + CommonTestValue("name", "-1000000", MakeStruct("name", TValueBuilder().Int32(-1000000).Build())); + CommonTestValue("name", "-100000000000", MakeStruct("name", TValueBuilder().Int64(-100000000000).Build())); + CommonTestValue("name", "1", MakeStruct("name", TValueBuilder().Uint8(1).Build())); + CommonTestValue("name", "10000", MakeStruct("name", TValueBuilder().Uint16(10000).Build())); + CommonTestValue("name", "1000000", MakeStruct("name", TValueBuilder().Uint32(1000000).Build())); + CommonTestValue("name", "100000000000", MakeStruct("name", TValueBuilder().Uint64(100000000000).Build())); + } + + Y_UNIT_TEST(DateTypesTestParams) { + CommonTestParams("name", "12000", {{"$name", TValueBuilder().Date(TInstant::Days(12000)).Build()}}); + CommonTestParams("name", "1200000", {{"$name", TValueBuilder().Datetime(TInstant::Seconds(1200000)).Build()}}); + CommonTestParams("name", "120000000", {{"$name", TValueBuilder().Timestamp(TInstant::MicroSeconds(120000000)).Build()}}); + CommonTestParams("name", "-2000", {{"$name", TValueBuilder().Interval(-2000).Build()}}); + CommonTestParams("name", "\"2001-01-01,Europe/Moscow\"", {{"$name", TValueBuilder().TzDate("2001-01-01,Europe/Moscow").Build()}}); + CommonTestParams("name", "\"2001-01-01T12:12:12,Europe/Moscow\"", {{"$name", TValueBuilder().TzDatetime("2001-01-01T12:12:12,Europe/Moscow").Build()}}); + CommonTestParams("name", "\"2001-01-01T12:12:12.111111,Europe/Moscow\"", {{"$name", TValueBuilder().TzTimestamp("2001-01-01T12:12:12.111111,Europe/Moscow").Build()}}); + } + + Y_UNIT_TEST(DateTypesTestValue) { + CommonTestValue("name", "12000", MakeStruct("name", TValueBuilder().Date(TInstant::Days(12000)).Build())); + CommonTestValue("name", "1200000", MakeStruct("name", TValueBuilder().Datetime(TInstant::Seconds(1200000)).Build())); + CommonTestValue("name", "120000000", MakeStruct("name", TValueBuilder().Timestamp(TInstant::MicroSeconds(120000000)).Build())); + CommonTestValue("name", "-2000", MakeStruct("name", TValueBuilder().Interval(-2000).Build())); + CommonTestValue("name", "\"2001-01-01,Europe/Moscow\"", MakeStruct("name", TValueBuilder().TzDate("2001-01-01,Europe/Moscow").Build())); + CommonTestValue("name", "\"2001-01-01T12:12:12,Europe/Moscow\"", MakeStruct("name", TValueBuilder().TzDatetime("2001-01-01T12:12:12,Europe/Moscow").Build())); + CommonTestValue("name", "\"2001-01-01T12:12:12.111111,Europe/Moscow\"", MakeStruct("name", TValueBuilder().TzTimestamp("2001-01-01T12:12:12.111111,Europe/Moscow").Build())); + } + + Y_UNIT_TEST(OtherPrimitiveTypeTestParams) { + CommonTestParams("name", "строка", {{"$name", TValueBuilder().Utf8("строка").Build()}}); + CommonTestParams("name", "строка", {{"$name", TValueBuilder().String("строка").Build()}}); + CommonTestParams("name", "true", {{"$name", TValueBuilder().Bool(true).Build()}}); + CommonTestParams("name", "false", {{"$name", TValueBuilder().Bool(false).Build()}}); + CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Float(1.183).Build()}}); + CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Double(1.183).Build()}}); + CommonTestParams("name", "1.183", {{"$name", TValueBuilder().DyNumber("1.183").Build()}}); + CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Decimal(TString("1.183")).Build()}}); + CommonTestParams("name", "550e8400-e29b-41d4-a716-446655440000", {{"$name", TValueBuilder().Uuid(TUuidValue("550e8400-e29b-41d4-a716-446655440000")).Build()}}); + CommonTestParams("name", "\"{\"\"a\"\":10, \"\"b\"\":\"\"string\"\"}\"", {{"$name", TValueBuilder().Json("{\"a\":10, \"b\":\"string\"}").Build()}}); + CommonTestParams("name", "строка", {{"$name", TValueBuilder().OptionalUtf8("строка").Build()}}); + CommonTestParams("name", "\"\"", {{"$name", TValueBuilder().OptionalUtf8({}).Build()}}); + } + + Y_UNIT_TEST(OtherPrimitiveTypesTestValue) { + CommonTestValue("name", "строка", MakeStruct("name", TValueBuilder().Utf8("строка").Build())); + CommonTestValue("name", "строка", MakeStruct("name", TValueBuilder().String("строка").Build())); + CommonTestValue("name", "true", MakeStruct("name", TValueBuilder().Bool(true).Build())); + CommonTestValue("name", "false", MakeStruct("name", TValueBuilder().Bool(false).Build())); + CommonTestValue("name", "1.183", MakeStruct("name", TValueBuilder().Float(1.183).Build())); + CommonTestValue("name", "1.183", MakeStruct("name", TValueBuilder().Double(1.183).Build())); + CommonTestValue("name", "1.183", MakeStruct("name", TValueBuilder().DyNumber("1.183").Build())); + CommonTestValue("name", "1.183", MakeStruct("name", TValueBuilder().Decimal(TString("1.183")).Build())); + CommonTestValue("name", "550e8400-e29b-41d4-a716-446655440000", MakeStruct("name", TValueBuilder().Uuid(TUuidValue("550e8400-e29b-41d4-a716-446655440000")).Build())); + CommonTestValue("name", "\"{\"\"a\"\":10, \"\"b\"\":\"\"string\"\"}\"", MakeStruct("name", TValueBuilder().Json("{\"a\":10, \"b\":\"string\"}").Build())); + CommonTestValue("name", "строка", MakeStruct("name", TValueBuilder().OptionalUtf8("строка").Build())); + CommonTestValue("name", "\"\"", MakeStruct("name", TValueBuilder().OptionalUtf8({}).Build())); + } + + Y_UNIT_TEST(EdgeValuesTestParams) { + CommonTestParams("name", "255", {{"$name", TValueBuilder().Uint8(255).Build()}}); + CommonTestParams("name", "65535", {{"$name", TValueBuilder().Uint16(65535).Build()}}); + CommonTestParams("name", "4294967295", {{"$name", TValueBuilder().Uint32(4294967295).Build()}}); + CommonTestParams("name", "18446744073709551615", {{"$name", TValueBuilder().Uint64(std::numeric_limits<ui64>::max()).Build()}}); + + CommonTestParams("name", "127", {{"$name", TValueBuilder().Int8(127).Build()}}); + CommonTestParams("name", "32767", {{"$name", TValueBuilder().Int16(32767).Build()}}); + CommonTestParams("name", "2147483647", {{"$name", TValueBuilder().Int32(2147483647).Build()}}); + CommonTestParams("name", "9223372036854775807", {{"$name", TValueBuilder().Int64(std::numeric_limits<i64>::max()).Build()}}); + + CommonTestParams("name", "-128", {{"$name", TValueBuilder().Int8(-128).Build()}}); + CommonTestParams("name", "-32768", {{"$name", TValueBuilder().Int16(-32768).Build()}}); + CommonTestParams("name", "-2147483648", {{"$name", TValueBuilder().Int32(-2147483648).Build()}}); + CommonTestParams("name", "-9223372036854775808", {{"$name", TValueBuilder().Int64(std::numeric_limits<i64>::min()).Build()}}); + } + + Y_UNIT_TEST(MultipleFields) { + CommonTestParams("a,b,c,d", "строка,187.201,false,\"\"", { + {"$a", TValueBuilder().Utf8("строка").Build()}, + {"$b", TValueBuilder().OptionalDouble(187.201).Build()}, + {"$c", TValueBuilder().Bool(false).Build()}, + {"$d", TValueBuilder().OptionalInt64({}).Build()}, + }); + CommonTestValue("a,b,c,d", "строка,187.201,false,\"\"", TValueBuilder() + .BeginStruct() + .AddMember("a") + .Utf8("строка") + .AddMember("b") + .OptionalDouble(187.201) + .AddMember("c") + .Bool(false) + .AddMember("d") + .OptionalInt64({}) + .EndStruct() + .Build() + ); + } +}
\ No newline at end of file diff --git a/ydb/public/lib/ydb_cli/common/format.cpp b/ydb/public/lib/ydb_cli/common/format.cpp index 98c02bf71e..cd6580bde0 100644 --- a/ydb/public/lib/ydb_cli/common/format.cpp +++ b/ydb/public/lib/ydb_cli/common/format.cpp @@ -20,10 +20,12 @@ namespace { THashMap<EOutputFormat, TString> StdinFormatDescriptions = { { EOutputFormat::JsonUnicode, "Parameter names and values in json unicode format" }, { EOutputFormat::JsonBase64, "Parameter names and values in json unicode format, binary string parameter values are base64-encoded" }, + { EOutputFormat::Csv, "Parameter names and values in csv format" }, + { EOutputFormat::Tsv, "Parameter names and values in tsv format" }, { EOutputFormat::NewlineDelimited, "Newline character delimits parameter sets on stdin and triggers " "processing in accordance to \"batch\" option" }, { EOutputFormat::Raw, "Binary value with no transformations or parsing, parameter name is set by an \"stdin-par\" option" }, - { EOutputFormat::NoFraming, "Data from stdin is taken as a single set of parameters" } + { EOutputFormat::NoFraming, "Data from stdin is taken as a single set of parameters" }, }; THashMap<EOutputFormat, TString> FormatDescriptions = { @@ -197,7 +199,7 @@ void TCommandWithFormat::ParseFormats() { IsStdinFormatSet = true; } else if (std::find(AllowedFramingFormats.begin(), AllowedFramingFormats.end(), format) != AllowedFramingFormats.end()) { if (IsFramingFormatSet) { - throw TMisuseException() << "Formats " << StdinFormat << " and " << format + throw TMisuseException() << "Formats " << FramingFormat << " and " << format << " are mutually exclusive, choose only one of them."; } FramingFormat = format; diff --git a/ydb/public/lib/ydb_cli/common/parameter_stream.cpp b/ydb/public/lib/ydb_cli/common/parameter_stream.cpp new file mode 100644 index 0000000000..44bbc2e0b4 --- /dev/null +++ b/ydb/public/lib/ydb_cli/common/parameter_stream.cpp @@ -0,0 +1,41 @@ +#include "parameter_stream.h" + +#include <ydb/public/lib/ydb_cli/common/common.h> + +#include <util/generic/string.h> +#include <util/stream/input.h> + +namespace NYdb { +namespace NConsoleClient { + +size_t TSimpleParamStream::ReadLine(TString& res) { + return Cin.ReadLine(res); +} + +TString TSimpleParamStream::ReadAll() { + return Cin.ReadAll(); +} + +TCsvParamStream::TCsvParamStream() : Input(&Cin), Splitter(Input) { +} + +size_t TCsvParamStream::ReadLine(TString& res) { + res = Splitter.ConsumeLine(); + size_t len = Input.Counter() - CurrentCount; + CurrentCount = Input.Counter(); + return len; +} + +TString TCsvParamStream::ReadAll() { + TString res, temp; + if (!ReadLine(res)) { + return TString(); + } + if (ReadLine(temp)) { + throw TMisuseException() << "Too many rows in data, exactly one CSV/TSV row with values is allowed in \"no-framing\" format."; + } + return res; +} + +} +}
\ No newline at end of file diff --git a/ydb/public/lib/ydb_cli/common/parameter_stream.h b/ydb/public/lib/ydb_cli/common/parameter_stream.h new file mode 100644 index 0000000000..db96788e99 --- /dev/null +++ b/ydb/public/lib/ydb_cli/common/parameter_stream.h @@ -0,0 +1,35 @@ +#pragma once + +#include <library/cpp/string_utils/csv/csv.h> +#include <util/stream/length.h> + +namespace NYdb { +namespace NConsoleClient { + +class IParamStream { +public: + virtual TString ReadAll() = 0; + virtual size_t ReadLine(TString& res) = 0; + virtual ~IParamStream() = default; +}; + +class TSimpleParamStream : public IParamStream { +public: + virtual TString ReadAll() override; + virtual size_t ReadLine(TString& res) override; +}; + +class TCsvParamStream : public IParamStream { +public: + TCsvParamStream(); + virtual TString ReadAll() override; + virtual size_t ReadLine(TString& res) override; + +private: + TCountingInput Input; + NCsvFormat::TLinesSplitter Splitter; + ui64 CurrentCount = 0; +}; + +} +}
\ No newline at end of file diff --git a/ydb/public/lib/ydb_cli/common/parameters.cpp b/ydb/public/lib/ydb_cli/common/parameters.cpp index 6b4c3567cd..c1b89ca971 100644 --- a/ydb/public/lib/ydb_cli/common/parameters.cpp +++ b/ydb/public/lib/ydb_cli/common/parameters.cpp @@ -9,6 +9,34 @@ namespace NYdb { namespace NConsoleClient { void TCommandWithParameters::ParseParameters(TClientCommand::TConfig& config) { + switch (InputFormat) { + case EOutputFormat::Default: + case EOutputFormat::JsonUnicode: + InputEncoding = EBinaryStringEncoding::Unicode; + break; + case EOutputFormat::JsonBase64: + InputEncoding = EBinaryStringEncoding::Base64; + break; + default: + throw TMisuseException() << "Unknown input format: " << InputFormat; + } + + switch (StdinFormat) { + case EOutputFormat::Csv: + case EOutputFormat::Tsv: + case EOutputFormat::Raw: + break; + case EOutputFormat::Default: + case EOutputFormat::JsonUnicode: + StdinEncoding = EBinaryStringEncoding::Unicode; + break; + case EOutputFormat::JsonBase64: + StdinEncoding = EBinaryStringEncoding::Base64; + break; + default: + throw TMisuseException() << "Unknown stdin format: " << StdinFormat; + } + for (const auto& parameterOption : ParameterOptions) { auto equalPos = parameterOption.find("="); if (equalPos == TString::npos) { @@ -34,8 +62,8 @@ void TCommandWithParameters::ParseParameters(TClientCommand::TConfig& config) { for (auto& file : ParameterFiles) { TString data; data = ReadFromFile(file, "param-file"); - TMap<TString, TString> params; - ParseJson(data, params, "param file " + file); + std::map<TString, TString> params; + ParseJson(std::move(data), params); for (const auto& [name, value]: params) { if (Parameters.find(name) != Parameters.end()) { throw TMisuseException() << "Parameter " << name << " value found in more than one source: " @@ -45,10 +73,26 @@ void TCommandWithParameters::ParseParameters(TClientCommand::TConfig& config) { ParameterSources[name] = "param file " + file; } } - + if (StdinFormat != EOutputFormat::Csv && StdinFormat != EOutputFormat::Tsv && (!Columns.Empty() || config.ParseResult->Has("skip-rows"))) { + throw TMisuseException() << "Options \"--columns\" and \"--skip-rows\" requires \"csv\" or \"tsv\" formats"; + } + if (StdinParameters.empty() && StdinFormat == EOutputFormat::Raw) { + throw TMisuseException() << "For \"raw\" format \"--stdin-par\" option should be used."; + } if (!StdinParameters.empty() && IsStdinInteractive()) { throw TMisuseException() << "\"--stdin-par\" option is allowed only with non-interactive stdin."; } + if (BatchMode == EBatchMode::Full || BatchMode == EBatchMode::Adaptive) { + if (StdinParameters.size() > 1) { + throw TMisuseException() << "Only one stdin parameter allowed in \"" + << BatchMode << "\" batch mode."; + } + if (StdinParameters.empty()) { + throw TMisuseException() << "An stdin parameter name must be specified in \"" + << BatchMode << "\" batch mode."; + } + } + for (auto it = StdinParameters.begin(); it != StdinParameters.end(); ++it) { if (std::find(StdinParameters.begin(), it, *it) != it) { throw TMisuseException() << "Parameter $" << *it << " value found in more than one source: \'--stdin-par\' option."; @@ -115,6 +159,11 @@ void TCommandWithParameters::AddParametersStdinOption(TClientCommand::TConfig& c << "\n Executes " << requestString << " with a json list of parameter sets every time when its number reaches batch-limit, " "or the waiting time reaches batch-max-delay." "\nDefault: " << colors.CyanColor() << "\"iterative\"" << colors.OldColor() << "."; + config.Opts->AddLongOption("columns", "String with column names that replaces header. " + "It is assumed that there is no header in the file") + .RequiredArgument("STR").StoreResult(&Columns); + config.Opts->AddLongOption("skip-rows", "Number of header rows to skip (not including the row of column names, if any)") + .RequiredArgument("NUM").StoreResult(&SkipRows).DefaultValue(0); config.Opts->AddLongOption("stdin-par", "Parameter name on stdin, required/applicable when stdin-format implies values only.") .RequiredArgument("STRING").AppendTo(&StdinParameters); config.Opts->AddLongOption("batch", descr.Str()).RequiredArgument("STRING").StoreResult(&BatchMode); @@ -124,102 +173,139 @@ void TCommandWithParameters::AddParametersStdinOption(TClientCommand::TConfig& c .RequiredArgument("VAL").StoreResult(&BatchMaxDelay).DefaultValue(TDuration::Seconds(1)); } -void TCommandWithParameters::AddParams(const std::map<TString, TType>& paramTypes, EOutputFormat inputFormat, TParamsBuilder& paramBuilder) { - EBinaryStringEncoding encoding; - switch (inputFormat) { - case EOutputFormat::Default: - case EOutputFormat::JsonUnicode: - encoding = EBinaryStringEncoding::Unicode; - break; - case EOutputFormat::JsonBase64: - encoding = EBinaryStringEncoding::Base64; - break; - default: - throw TMisuseException() << "Unknown input format: " << inputFormat; - } - - for (const auto&[name, value] : Parameters) { - auto paramIt = paramTypes.find(name); - if (paramIt == paramTypes.end()) { - if (ParameterSources[name] == "\'--param\' option") { - throw TMisuseException() << "Query does not contain parameter \"" << name << "\"."; - } else { - continue; +void TCommandWithParameters::AddParams(TParamsBuilder& paramBuilder) { + switch (InputFormat) { + case EOutputFormat::Default: + case EOutputFormat::JsonUnicode: + case EOutputFormat::JsonBase64: { + for (const auto&[name, value] : Parameters) { + auto paramIt = ParamTypes.find(name); + if (paramIt == ParamTypes.end()) { + if (ParameterSources[name] == "\'--param\' option") { + throw TMisuseException() << "Query does not contain parameter \"" << name << "\"."; + } else { + continue; + } + } + const TType& type = (*paramIt).second; + paramBuilder.AddParam(name, JsonToYdbValue(value, type, InputEncoding)); } + break; } - const TType& type = (*paramIt).second; - paramBuilder.AddParam(name, JsonToYdbValue(value, type, encoding)); + default: + Y_VERIFY(false, "Unexpected input format"); } } -bool TCommandWithParameters::GetNextParams(const std::map<TString, TType>& paramTypes, EOutputFormat inputFormat, EOutputFormat encodingFormat, - EOutputFormat framingFormat, THolder<TParamsBuilder>& paramBuilder) { +bool TCommandWithParameters::GetNextParams(THolder<TParamsBuilder>& paramBuilder) { paramBuilder = MakeHolder<TParamsBuilder>(); - AddParams(paramTypes, inputFormat, *paramBuilder); - if (IsStdinInteractive()) { - static bool firstEncounter = true; - if (!firstEncounter) { - return false; + if (IsFirstEncounter) { + IsFirstEncounter = false; + ParamTypes = ValidateResult->GetParameterTypes(); + if (IsStdinInteractive()) { + AddParams(*paramBuilder); + return true; + } + if (StdinFormat == EOutputFormat::Csv || StdinFormat == EOutputFormat::Tsv) { + Input = MakeHolder<TCsvParamStream>(); + TString headerRow, temp; + if (Columns) { + headerRow = Columns; + } else { + if (!Input->ReadLine(headerRow)) { + return false; + } + } + + while (SkipRows > 0) { + if (!Input->ReadLine(temp)) { + return false; + } + --SkipRows; + } + if (StdinFormat == EOutputFormat::Csv) { + CsvParser = MakeHolder<TCsvParser>(std::move(headerRow), ',', ParamTypes, ParameterSources); + } else { + CsvParser = MakeHolder<TCsvParser>(std::move(headerRow), '\t', ParamTypes, ParameterSources); + } + } else { + Input = MakeHolder<TSimpleParamStream>(); } - firstEncounter = false; - return true; } - EBinaryStringEncoding encoding; - switch (encodingFormat) { - case EOutputFormat::Default: - case EOutputFormat::Raw: - case EOutputFormat::JsonUnicode: - encoding = EBinaryStringEncoding::Unicode; - break; - case EOutputFormat::JsonBase64: - encoding = EBinaryStringEncoding::Base64; - break; - default: - throw TMisuseException() << "Unknown encoding format: " << encodingFormat; + if (IsStdinInteractive()) { + return false; } + + AddParams(*paramBuilder); if (BatchMode == EBatchMode::Iterative) { - TString data; if (StdinParameters.empty()) { - if (encodingFormat == EOutputFormat::Raw) { - throw TMisuseException() << "For Raw format \"--stdin-par\" option should be used."; - } - auto data = ReadData(framingFormat); + auto data = ReadData(); if (!data.Defined()) { return false; } - if (!data->empty()) { - TMap<TString, TString> result; - ParseJson(*data, result, "stdin"); - ApplyParams(result, paramTypes, encoding, *paramBuilder, "stdin"); + if (data->empty()) { + return true; + } + switch (StdinFormat) { + case EOutputFormat::Default: + case EOutputFormat::JsonUnicode: + case EOutputFormat::JsonBase64: { + std::map<TString, TString> result; + ParseJson(std::move(*data), result); + ApplyJsonParams(result, *paramBuilder); + break; + } + case EOutputFormat::Csv: + case EOutputFormat::Tsv: { + CsvParser->GetParams(std::move(*data), *paramBuilder); + break; + } + default: + Y_VERIFY(false, "Unexpected stdin format"); } } else { for (const auto &name: StdinParameters) { - auto data = ReadData(framingFormat); + auto data = ReadData(); if (!data.Defined()) { return false; } TString fullname = "$" + name; - auto paramIt = paramTypes.find(fullname); - if (paramIt == paramTypes.end()) { + auto paramIt = ParamTypes.find(fullname); + if (paramIt == ParamTypes.end()) { throw TMisuseException() << "Query does not contain parameter \"" << fullname << "\"."; } const TType &type = (*paramIt).second; - if (encodingFormat == EOutputFormat::Raw) { - TTypeParser parser(type); - if (parser.GetKind() != TTypeParser::ETypeKind::Primitive) { - throw TMisuseException() << "Wrong type of parameter \"" << fullname << "\"."; + switch (StdinFormat) { + case EOutputFormat::Default: + case EOutputFormat::JsonUnicode: + case EOutputFormat::JsonBase64: { + paramBuilder->AddParam(fullname, JsonToYdbValue(*data, type, StdinEncoding)); + break; } - - if (parser.GetPrimitive() == EPrimitiveType::String) { - paramBuilder->AddParam(fullname, TValueBuilder().String(*data).Build()); - } else if (parser.GetPrimitive() == EPrimitiveType::Utf8) { - paramBuilder->AddParam(fullname, TValueBuilder().Utf8(*data).Build()); - } else { - throw TMisuseException() << "Wrong type of parameter \"" << fullname << "\"."; + case EOutputFormat::Raw: { + TTypeParser parser(type); + if (parser.GetKind() != TTypeParser::ETypeKind::Primitive) { + throw TMisuseException() << "Wrong type of parameter \"" << fullname << "\"."; + } + if (parser.GetPrimitive() == EPrimitiveType::String) { + paramBuilder->AddParam(fullname, TValueBuilder().String(*data).Build()); + } else if (parser.GetPrimitive() == EPrimitiveType::Utf8) { + paramBuilder->AddParam(fullname, TValueBuilder().Utf8(*data).Build()); + } else { + throw TMisuseException() << "Wrong type of parameter \"" << fullname << "\"."; + } + break; } - } else { - paramBuilder->AddParam(fullname, JsonToYdbValue(*data, type, encoding)); + case EOutputFormat::Csv: + case EOutputFormat::Tsv: { + TValueBuilder valueBuilder; + CsvParser->GetValue(std::move(*data), type, valueBuilder); + paramBuilder->AddParam(fullname, valueBuilder.Build()); + break; + } + default: + Y_VERIFY(false, "Unexpected stdin format"); } } } @@ -229,19 +315,11 @@ bool TCommandWithParameters::GetNextParams(const std::map<TString, TType>& param if (isEndReached) { return false; } - - if (StdinParameters.size() > 1) { - throw TMisuseException() << "Only one stdin parameter allowed in \"" - << BatchMode << "\" batch mode."; - } - if (StdinParameters.empty()) { - throw TMisuseException() << "An stdin parameter name must be specified in \"" - << BatchMode << "\" batch mode."; - } + Y_VERIFY(StdinParameters.size() == 1, "Wrong number of stdin parameters"); TString name = StdinParameters.front(); TString fullname = "$" + name; - auto paramIt = paramTypes.find(fullname); - if (paramIt == paramTypes.end()) { + auto paramIt = ParamTypes.find(fullname); + if (paramIt == ParamTypes.end()) { throw TMisuseException() << "Query does not contain parameter \"" << fullname << "\"."; } const TType &type = (*paramIt).second; @@ -254,79 +332,66 @@ bool TCommandWithParameters::GetNextParams(const std::map<TString, TType>& param TMaybe<TString> data; size_t listSize = 0; TInstant endTime; - auto ReadDataLambda = [framingFormat]() { - return ReadData(framingFormat); - }; - if (encodingFormat == EOutputFormat::Raw) { - TValueBuilder valueBuilder; - valueBuilder.BeginList(); - parser.OpenList(); - while (true) { - static NThreading::TFuture<TMaybe<TString>> futureData; - if (!futureData.Initialized() || listSize) { - futureData = NThreading::Async(ReadDataLambda, *pool); - } - if (BatchMode == EBatchMode::Adaptive && listSize && - ((BatchMaxDelay != TDuration::Zero() && !futureData.Wait(endTime)) || listSize == BatchLimit)) { - break; - } - data = futureData.GetValueSync(); - if (!data.Defined()) { - isEndReached = true; - break; - } - if (!listSize) { - endTime = Now() + BatchMaxDelay; - } + auto readData = [this] { + return ReadData(); + }; - if (parser.GetKind() != TTypeParser::ETypeKind::Primitive) { - throw TMisuseException() << "Wrong type of list \"" << fullname << "\" elements."; - } - if (parser.GetPrimitive() == EPrimitiveType::String) { - valueBuilder.AddListItem(TValueBuilder().String(*data).Build()); - } else if (parser.GetPrimitive() == EPrimitiveType::Utf8) { - valueBuilder.AddListItem(TValueBuilder().Utf8(*data).Build()); - } else { - throw TMisuseException() << "Wrong type of list \"" << fullname << "\" elements."; - } - ++listSize; + TValueBuilder valueBuilder; + valueBuilder.BeginList(); + parser.OpenList(); + while (true) { + static NThreading::TFuture<TMaybe<TString>> futureData; + if (!futureData.Initialized() || listSize) { + futureData = NThreading::Async(readData, *pool); + } + if (BatchMode == EBatchMode::Adaptive && listSize && + ((BatchMaxDelay != TDuration::Zero() && !futureData.Wait(endTime)) || listSize == BatchLimit)) { + break; + } + data = futureData.GetValueSync(); + if (!data.Defined()) { + isEndReached = true; + break; } if (!listSize) { - return false; + endTime = Now() + BatchMaxDelay; } - valueBuilder.EndList(); - paramBuilder->AddParam(fullname, valueBuilder.Build()); - } else { - TString array = "["; - while (true) { - static NThreading::TFuture<TMaybe<TString>> futureData; - if (!futureData.Initialized() || listSize) { - futureData = NThreading::Async(ReadDataLambda, *pool); - } - if (BatchMode == EBatchMode::Adaptive && listSize && - ((BatchMaxDelay != TDuration::Zero() && !futureData.Wait(endTime)) || listSize == BatchLimit)) { + switch (StdinFormat) { + case EOutputFormat::Default: + case EOutputFormat::JsonUnicode: + case EOutputFormat::JsonBase64: { + valueBuilder.AddListItem(JsonToYdbValue(*data, type.GetProto().list_type().item(), StdinEncoding)); break; } - data = futureData.GetValueSync(); - if (!data.Defined()) { - isEndReached = true; + case EOutputFormat::Raw: { + if (parser.GetKind() != TTypeParser::ETypeKind::Primitive) { + throw TMisuseException() << "Wrong type of list \"" << fullname << "\" elements."; + } + if (parser.GetPrimitive() == EPrimitiveType::String) { + valueBuilder.AddListItem(TValueBuilder().String(*data).Build()); + } else if (parser.GetPrimitive() == EPrimitiveType::Utf8) { + valueBuilder.AddListItem(TValueBuilder().Utf8(*data).Build()); + } else { + throw TMisuseException() << "Wrong type of list \"" << fullname << "\" elements."; + } break; } - if (!listSize) { - endTime = Now() + BatchMaxDelay; - } else { - array += ","; + case EOutputFormat::Csv: + case EOutputFormat::Tsv: { + valueBuilder.AddListItem(); + CsvParser->GetValue(std::move(*data), type.GetProto().list_type().item(), valueBuilder); + break; } - array += *data; - ++listSize; - } - if (!listSize) { - return false; + default: + Y_VERIFY(false, "Unexpected stdin format"); } - array += "]"; - paramBuilder->AddParam(fullname, JsonToYdbValue(array, type, encoding)); + ++listSize; } - + if (!listSize) { + return false; + } + valueBuilder.EndList(); + paramBuilder->AddParam(fullname, valueBuilder.Build()); } else { throw TMisuseException() << "Unknown batch format."; } @@ -334,7 +399,7 @@ bool TCommandWithParameters::GetNextParams(const std::map<TString, TType>& param return true; } -void TCommandWithParameters::ParseJson(const TString& str, TMap<TString, TString>& result, const TString& source) { +void TCommandWithParameters::ParseJson(TString&& str, std::map<TString, TString>& result) { NJson::TJsonValue jsonValue; if (!NJson::ReadJsonTree(str, &jsonValue)) { throw TMisuseException() << "Can't parse \"" << str << "\" as json."; @@ -344,44 +409,39 @@ void TCommandWithParameters::ParseJson(const TString& str, TMap<TString, TString } for (const auto&[name, value] : jsonValue.GetMap()) { TString fullname = "$" + name; - if (result.find(fullname) != result.end()) { - throw TMisuseException() << "Parameter " << fullname << " value found in more than one source: " << source << "."; - } result[fullname] = ToString(value); } } -void TCommandWithParameters::ApplyParams(const TMap<TString, TString> ¶ms, const std::map<TString, TType>& paramTypes, - EBinaryStringEncoding encoding, TParamsBuilder ¶mBuilder, const TString& source) { +void TCommandWithParameters::ApplyJsonParams(const std::map<TString, TString> ¶ms, TParamsBuilder ¶mBuilder) { for (const auto &[name, value]: params) { - auto paramIt = paramTypes.find(name); - if (paramIt == paramTypes.end()) { + auto paramIt = ParamTypes.find(name); + if (paramIt == ParamTypes.end()) { continue; } - if (Parameters.find(name) != Parameters.end()) { - throw TMisuseException() << "Parameter " << name << " value found in more than one source: " - << source << ", " << ParameterSources[name] << "."; + auto paramSource = ParameterSources.find(name); + if (paramSource != ParameterSources.end()) { + throw TMisuseException() << "Parameter " << name << " value found in more than one source: stdin, " << paramSource->second << "."; } - const TType &type = (*paramIt).second; - paramBuilder.AddParam(name, JsonToYdbValue(value, type, encoding)); + paramBuilder.AddParam(name, JsonToYdbValue(value, paramIt->second, StdinEncoding)); } } -TMaybe<TString> TCommandWithParameters::ReadData(EOutputFormat framingFormat) { +TMaybe<TString> TCommandWithParameters::ReadData() { TString result; - if (framingFormat == EOutputFormat::Default || framingFormat == EOutputFormat::NoFraming) { - static bool isFirstEncounter = true; - if (!isFirstEncounter) { + if (FramingFormat == EOutputFormat::Default || FramingFormat == EOutputFormat::NoFraming) { + static bool isFirstLine = true; + if (!isFirstLine) { return Nothing(); } - result = Cin.ReadAll(); - isFirstEncounter = false; - } else if (framingFormat == EOutputFormat::NewlineDelimited) { - if (!Cin.ReadLine(result)) { + result = Input->ReadAll(); + isFirstLine = false; + } else if (FramingFormat == EOutputFormat::NewlineDelimited) { + if (!Input->ReadLine(result)) { return Nothing(); } } else { - throw TMisuseException() << "Unknown framing format: " << framingFormat; + throw TMisuseException() << "Unknown framing format: " << FramingFormat; } return result; diff --git a/ydb/public/lib/ydb_cli/common/parameters.h b/ydb/public/lib/ydb_cli/common/parameters.h index 7d3da3c356..87f854c86e 100644 --- a/ydb/public/lib/ydb_cli/common/parameters.h +++ b/ydb/public/lib/ydb_cli/common/parameters.h @@ -5,15 +5,12 @@ #include "formats.h" #include <ydb/public/lib/ydb_cli/commands/ydb_command.h> +#include <ydb/public/lib/ydb_cli/common/csv_parser.h> +#include <ydb/public/lib/ydb_cli/common/format.h> +#include <ydb/public/lib/ydb_cli/common/parameter_stream.h> #include <ydb/public/sdk/cpp/client/ydb_params/params.h> #include <ydb/public/lib/json_value/ydb_json_value.h> -#if defined(_win32_) -#include <io.h> -#elif defined(_unix_) -#include <unistd.h> -#endif - namespace NYdb { namespace NConsoleClient { @@ -23,26 +20,33 @@ enum class EBatchMode { Adaptive /* "adaptive" */ }; -class TCommandWithParameters : public TCommandWithExamples { +class TCommandWithParameters : public TCommandWithExamples, public TCommandWithFormat { protected: void ParseParameters(TClientCommand::TConfig& config); void AddParametersOption(TClientCommand::TConfig& config, const TString& clarification = ""); void AddParametersStdinOption(TClientCommand::TConfig& config, const TString& requestString); - bool GetNextParams(const std::map<TString, TType>& paramTypes, EOutputFormat inputFormat, EOutputFormat encodingFormat, - EOutputFormat framingFormat, THolder<TParamsBuilder>& paramBuilder); + bool GetNextParams(THolder<TParamsBuilder>& paramBuilder); private: - void AddParams(const std::map<TString, TType>& paramTypes, EOutputFormat inputFormat, TParamsBuilder& paramBuilder); - static void ParseJson(const TString& str, TMap<TString, TString>& result, const TString& source); - void ApplyParams(const TMap<TString, TString>& params, const std::map<TString, TType>& paramTypes, - EBinaryStringEncoding encoding, TParamsBuilder& paramBuilder, const TString& source); + void AddParams(TParamsBuilder& paramBuilder); + static void ParseJson(TString&& str, std::map<TString, TString>& result); + void ApplyJsonParams(const std::map<TString, TString>& params, TParamsBuilder& paramBuilder); + + TMaybe<TString> ReadData(); - static TMaybe<TString> ReadData(EOutputFormat framingFormat); + EBinaryStringEncoding InputEncoding, StdinEncoding; + std::map<TString, TType> ParamTypes; + TVector<TString> Header; + TString Columns; + THolder<IParamStream> Input; + bool IsFirstEncounter = true; + size_t SkipRows = 0; + THolder<TCsvParser> CsvParser; protected: TVector<TString> ParameterOptions, ParameterFiles, StdinParameters; - TMap<TString, TString> Parameters; - TMap<TString, TString> ParameterSources; + std::map<TString, TString> Parameters; + std::map<TString, TString> ParameterSources; EBatchMode BatchMode = EBatchMode::Iterative; size_t BatchLimit; TDuration BatchMaxDelay; diff --git a/ydb/public/lib/ydb_cli/common/ut/CMakeLists.darwin-x86_64.txt b/ydb/public/lib/ydb_cli/common/ut/CMakeLists.darwin-x86_64.txt index 898138cbe0..4320647bf0 100644 --- a/ydb/public/lib/ydb_cli/common/ut/CMakeLists.darwin-x86_64.txt +++ b/ydb/public/lib/ydb_cli/common/ut/CMakeLists.darwin-x86_64.txt @@ -27,6 +27,7 @@ target_link_options(ydb-public-lib-ydb_cli-common-ut PRIVATE ) target_sources(ydb-public-lib-ydb_cli-common-ut PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/normalize_path_ut.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp ) set_property( TARGET diff --git a/ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-aarch64.txt b/ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-aarch64.txt index 90ee371930..d7fdfb9306 100644 --- a/ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-aarch64.txt +++ b/ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-aarch64.txt @@ -30,6 +30,7 @@ target_link_options(ydb-public-lib-ydb_cli-common-ut PRIVATE ) target_sources(ydb-public-lib-ydb_cli-common-ut PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/normalize_path_ut.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp ) set_property( TARGET diff --git a/ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-x86_64.txt b/ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-x86_64.txt index c5e5b848b4..adb071fe35 100644 --- a/ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-x86_64.txt +++ b/ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-x86_64.txt @@ -31,6 +31,7 @@ target_link_options(ydb-public-lib-ydb_cli-common-ut PRIVATE ) target_sources(ydb-public-lib-ydb_cli-common-ut PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/normalize_path_ut.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp ) set_property( TARGET diff --git a/ydb/public/lib/ydb_cli/common/ut/CMakeLists.windows-x86_64.txt b/ydb/public/lib/ydb_cli/common/ut/CMakeLists.windows-x86_64.txt index 7685e412ff..7c863aa954 100644 --- a/ydb/public/lib/ydb_cli/common/ut/CMakeLists.windows-x86_64.txt +++ b/ydb/public/lib/ydb_cli/common/ut/CMakeLists.windows-x86_64.txt @@ -20,6 +20,7 @@ target_link_libraries(ydb-public-lib-ydb_cli-common-ut PUBLIC ) target_sources(ydb-public-lib-ydb_cli-common-ut PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/normalize_path_ut.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp ) set_property( TARGET diff --git a/ydb/public/lib/ydb_cli/common/ut/ya.make b/ydb/public/lib/ydb_cli/common/ut/ya.make index ac83073275..6b7c00ae1a 100644 --- a/ydb/public/lib/ydb_cli/common/ut/ya.make +++ b/ydb/public/lib/ydb_cli/common/ut/ya.make @@ -2,6 +2,7 @@ UNITTEST_FOR(ydb/public/lib/ydb_cli/common) SRCS( normalize_path_ut.cpp + csv_parser_ut.cpp ) END() diff --git a/ydb/public/lib/ydb_cli/common/ya.make b/ydb/public/lib/ydb_cli/common/ya.make index f2aaee47fd..61b4a05438 100644 --- a/ydb/public/lib/ydb_cli/common/ya.make +++ b/ydb/public/lib/ydb_cli/common/ya.make @@ -4,11 +4,13 @@ SRCS( aws.cpp command.cpp common.cpp + csv_parser.cpp examples.cpp format.cpp interactive.cpp interruptible.cpp normalize_path.cpp + parameter_stream.cpp parameters.cpp pretty_table.cpp print_operation.cpp @@ -32,6 +34,7 @@ PEERDIR( library/cpp/getopt library/cpp/json/writer library/cpp/yaml/as + library/cpp/string_utils/csv ydb/public/lib/json_value ydb/public/lib/operation_id ydb/public/lib/yson_value diff --git a/ydb/tests/functional/ydb_cli/canondata/result.json b/ydb/tests/functional/ydb_cli/canondata/result.json index 18403bee4a..9653de68f8 100644 --- a/ydb/tests/functional/ydb_cli/canondata/result.json +++ b/ydb/tests/functional/ydb_cli/canondata/result.json @@ -11,12 +11,12 @@ "test_ydb_impex.TestImpex.test_big_dataset[csv-additional_args1-row]": { "uri": "file://test_ydb_impex.TestImpex.test_big_dataset_csv-additional_args1-row_/result.output" }, - "test_ydb_impex.TestImpex.test_big_dataset[json-additional_args4-row]": { - "uri": "file://test_ydb_impex.TestImpex.test_big_dataset_json-additional_args4-row_/result.output" - }, "test_ydb_impex.TestImpex.test_big_dataset[json-additional_args4-column]": { "uri": "file://test_ydb_impex.TestImpex.test_big_dataset_json-additional_args4-column_/result.output" }, + "test_ydb_impex.TestImpex.test_big_dataset[json-additional_args4-row]": { + "uri": "file://test_ydb_impex.TestImpex.test_big_dataset_json-additional_args4-row_/result.output" + }, "test_ydb_impex.TestImpex.test_big_dataset[tsv-additional_args2-column]": { "uri": "file://test_ydb_impex.TestImpex.test_big_dataset_tsv-additional_args2-column_/result.output" }, @@ -311,65 +311,197 @@ "test_ydb_scripting.TestExecuteScriptWithParamsFromJson.test_uint64_and_string": { "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromJson.test_uint64_and_string/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_adaptive": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_adaptive/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_full": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_full/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_different_sources": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_different_sources/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_framing_newline_delimited": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_framing_newline_delimited/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_ignore_excess_parameters": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_ignore_excess_parameters/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_mix_json_and_binary": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_mix_json_and_binary/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_simple_json": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_simple_json/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data_framing": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data_framing/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_unnamed_json": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_unnamed_json/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json_scripting_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data_framing": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data_framing/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json_stream_/result.output" }, - "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_unnamed_json": { - "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_unnamed_json/result.output" + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw_stream_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv[scripting]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_scripting_/result.output" + }, + "test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv[stream]": { + "uri": "file://test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_stream_/result.output" }, "test_ydb_scripting.TestScriptingServiceHelp.test_help": { "uri": "file://test_ydb_scripting.TestScriptingServiceHelp.test_help/result.output" @@ -455,106 +587,238 @@ "test_ydb_table.TestExecuteQueryWithParams.test_uint64_and_string": { "uri": "file://test_ydb_table.TestExecuteQueryWithParams.test_uint64_and_string/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_ignore_excess_parameters": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_ignore_excess_parameters/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_data_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_scan_/result.output" + }, + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_list": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_list/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_multiple_files": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_multiple_files/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_script_from_file": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_script_from_file/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_struct": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_struct/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint32": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint32/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint64_and_string": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint64_and_string/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_ignore_excess_parameters": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_ignore_excess_parameters/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_list": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_list/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_multiple_files": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_multiple_files/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_script_from_file": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_script_from_file/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_struct": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_struct/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint32": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint32/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint64_and_string": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint64_and_string/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_ignore_excess_parameters": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_ignore_excess_parameters/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_adaptive": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_adaptive/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_full": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_full/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_different_sources": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_different_sources/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_framing_newline_delimited": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_framing_newline_delimited/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_mix_json_and_binary": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_mix_json_and_binary/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_simple_json": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_simple_json/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data_framing": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data_framing/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_unnamed_json": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_unnamed_json/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_ignore_excess_parameters": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_ignore_excess_parameters/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_adaptive": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_adaptive/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_full": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_full/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_different_sources": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_different_sources/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_framing_newline_delimited": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_framing_newline_delimited/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_mix_json_and_binary": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_mix_json_and_binary/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_simple_json": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_simple_json/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw_scan_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data_framing": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data_framing/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv[data]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_data_/result.output" }, - "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_unnamed_json": { - "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_unnamed_json/result.output" + "test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv[scan]": { + "uri": "file://test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_scan_/result.output" } } diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv_scripting_/result.output index c25ecea164..c25ecea164 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_adaptive/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv_stream_/result.output index c25ecea164..c25ecea164 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_adaptive/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_adaptive/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json_scripting_/result.output index c25ecea164..c25ecea164 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_adaptive/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_adaptive/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json_stream_/result.output index c25ecea164..c25ecea164 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_adaptive/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_scripting_/result.output new file mode 100644 index 0000000000..8a47cb4d6f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_scripting_/result.output @@ -0,0 +1,15 @@ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line1","Line2","Line3"] │ +└───────────────────────────┘ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line4","Line5","Line6"] │ +└───────────────────────────┘ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line7","Line8","Line9"] │ +└───────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_stream_/result.output new file mode 100644 index 0000000000..8a47cb4d6f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_stream_/result.output @@ -0,0 +1,15 @@ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line1","Line2","Line3"] │ +└───────────────────────────┘ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line4","Line5","Line6"] │ +└───────────────────────────┘ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line7","Line8","Line9"] │ +└───────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_scripting_/result.output new file mode 100644 index 0000000000..c25ecea164 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_scripting_/result.output @@ -0,0 +1,15 @@ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└──────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_stream_/result.output new file mode 100644 index 0000000000..c25ecea164 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_stream_/result.output @@ -0,0 +1,15 @@ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└──────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_scripting_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_scripting_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_stream_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_stream_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_scripting_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_scripting_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_stream_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_stream_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw_scripting_/result.output index 288994848a..288994848a 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_full/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw_stream_/result.output index 288994848a..288994848a 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_full/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_scripting_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_scripting_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_stream_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_stream_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_scripting_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_scripting_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_stream_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_stream_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_scripting_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_scripting_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_stream_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_stream_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_scripting_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_scripting_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_stream_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_stream_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_scripting_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_scripting_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_stream_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_stream_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_scripting_/result.output new file mode 100644 index 0000000000..ccf5285487 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_scripting_/result.output @@ -0,0 +1,5 @@ +┌────────────────┬──────────────┬─────┐ +│ s │ date │ val │ +├────────────────┼──────────────┼─────┤ +│ "Some_s,tring" │ "2000-09-01" │ 100 │ +└────────────────┴──────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_stream_/result.output new file mode 100644 index 0000000000..ccf5285487 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_stream_/result.output @@ -0,0 +1,5 @@ +┌────────────────┬──────────────┬─────┐ +│ s │ date │ val │ +├────────────────┼──────────────┼─────┤ +│ "Some_s,tring" │ "2000-09-01" │ 100 │ +└────────────────┴──────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json_scripting_/result.output index 1f80932ec1..1f80932ec1 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_different_sources/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json_stream_/result.output index 1f80932ec1..1f80932ec1 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_different_sources/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_scripting_/result.output new file mode 100644 index 0000000000..c7dc74d043 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_scripting_/result.output @@ -0,0 +1,5 @@ +┌─────────────────┬──────────────┬─────┐ +│ s │ date │ val │ +├─────────────────┼──────────────┼─────┤ +│ "Some_s\ttring" │ "2000-09-01" │ 100 │ +└─────────────────┴──────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_stream_/result.output new file mode 100644 index 0000000000..c7dc74d043 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_stream_/result.output @@ -0,0 +1,5 @@ +┌─────────────────┬──────────────┬─────┐ +│ s │ date │ val │ +├─────────────────┼──────────────┼─────┤ +│ "Some_s\ttring" │ "2000-09-01" │ 100 │ +└─────────────────┴──────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv_scripting_/result.output index 973d1533bc..973d1533bc 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_framing_newline_delimited/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv_stream_/result.output index 973d1533bc..973d1533bc 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_framing_newline_delimited/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_framing_newline_delimited/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json_scripting_/result.output index 973d1533bc..973d1533bc 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_framing_newline_delimited/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_framing_newline_delimited/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json_stream_/result.output index 973d1533bc..973d1533bc 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_framing_newline_delimited/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data_framing/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw_scripting_/result.output index 8200beba35..8200beba35 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data_framing/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data_framing/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw_stream_/result.output index 8200beba35..8200beba35 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data_framing/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_scripting_/result.output new file mode 100644 index 0000000000..973d1533bc --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_scripting_/result.output @@ -0,0 +1,15 @@ +┌─────────────┬─────┐ +│ s │ num │ +├─────────────┼─────┤ +│ "Some text" │ 1 │ +└─────────────┴─────┘ +┌─────────────────────────────────┬─────┐ +│ s │ num │ +├─────────────────────────────────┼─────┤ +│ "Строка 1\nСтрока2" │ 2 │ +└─────────────────────────────────┴─────┘ +┌───────────┬─────┐ +│ s │ num │ +├───────────┼─────┤ +│ "Abacaba" │ 3 │ +└───────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_stream_/result.output new file mode 100644 index 0000000000..973d1533bc --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_stream_/result.output @@ -0,0 +1,15 @@ +┌─────────────┬─────┐ +│ s │ num │ +├─────────────┼─────┤ +│ "Some text" │ 1 │ +└─────────────┴─────┘ +┌─────────────────────────────────┬─────┐ +│ s │ num │ +├─────────────────────────────────┼─────┤ +│ "Строка 1\nСтрока2" │ 2 │ +└─────────────────────────────────┴─────┘ +┌───────────┬─────┐ +│ s │ num │ +├───────────┼─────┤ +│ "Abacaba" │ 3 │ +└───────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv_scripting_/result.output index d53efa435f..d53efa435f 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_ignore_excess_parameters/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv_stream_/result.output index d53efa435f..d53efa435f 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_ignore_excess_parameters/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_ignore_excess_parameters/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json_scripting_/result.output index d53efa435f..d53efa435f 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_ignore_excess_parameters/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_ignore_excess_parameters/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json_stream_/result.output index d53efa435f..d53efa435f 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_ignore_excess_parameters/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_ignore_excess_parameters/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv_scripting_/result.output index d53efa435f..d53efa435f 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_ignore_excess_parameters/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_ignore_excess_parameters/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv_stream_/result.output index d53efa435f..d53efa435f 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_ignore_excess_parameters/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary_scripting_/result.output index 5b4b5b9fda..5b4b5b9fda 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_mix_json_and_binary/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary_stream_/result.output index 5b4b5b9fda..5b4b5b9fda 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_mix_json_and_binary/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_scripting_/result.output new file mode 100644 index 0000000000..66645b3ade --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_scripting_/result.output @@ -0,0 +1,5 @@ +┌────────────────┬─────┐ +│ s │ val │ +├────────────────┼─────┤ +│ "Some_s,tring" │ 32 │ +└────────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_stream_/result.output new file mode 100644 index 0000000000..66645b3ade --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_stream_/result.output @@ -0,0 +1,5 @@ +┌────────────────┬─────┐ +│ s │ val │ +├────────────────┼─────┤ +│ "Some_s,tring" │ 32 │ +└────────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json_scripting_/result.output index 030b389b08..030b389b08 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_simple_json/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json_stream_/result.output index 030b389b08..030b389b08 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_simple_json/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_scripting_/result.output new file mode 100644 index 0000000000..703d6430f7 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_scripting_/result.output @@ -0,0 +1,5 @@ +┌─────────────────┬─────┐ +│ s │ val │ +├─────────────────┼─────┤ +│ "Some_s\ttring" │ 32 │ +└─────────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_stream_/result.output new file mode 100644 index 0000000000..703d6430f7 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_stream_/result.output @@ -0,0 +1,5 @@ +┌─────────────────┬─────┐ +│ s │ val │ +├─────────────────┼─────┤ +│ "Some_s\ttring" │ 32 │ +└─────────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_scripting_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_scripting_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_stream_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_stream_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_scripting_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_scripting_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_stream_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_stream_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_scripting_/result.output new file mode 100644 index 0000000000..126ddd550f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_scripting_/result.output @@ -0,0 +1,5 @@ +┌─────────────────────────┐ +│ s │ +├─────────────────────────┤ +│ {"id":1,"value":"ab,a"} │ +└─────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_stream_/result.output new file mode 100644 index 0000000000..126ddd550f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_stream_/result.output @@ -0,0 +1,5 @@ +┌─────────────────────────┐ +│ s │ +├─────────────────────────┤ +│ {"id":1,"value":"ab,a"} │ +└─────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_unnamed_json/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json_scripting_/result.output index f544f87204..f544f87204 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_unnamed_json/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_unnamed_json/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json_stream_/result.output index f544f87204..f544f87204 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_unnamed_json/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw_scripting_/result.output index 8ec00b9d1a..8ec00b9d1a 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw_scripting_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw_stream_/result.output index 8ec00b9d1a..8ec00b9d1a 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw_stream_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_scripting_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_scripting_/result.output new file mode 100644 index 0000000000..d808b68ece --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_scripting_/result.output @@ -0,0 +1,5 @@ +┌──────────────────────────┐ +│ s │ +├──────────────────────────┤ +│ {"id":1,"value":"ab\ta"} │ +└──────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_stream_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_stream_/result.output new file mode 100644 index 0000000000..d808b68ece --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_stream_/result.output @@ -0,0 +1,5 @@ +┌──────────────────────────┐ +│ s │ +├──────────────────────────┤ +│ {"id":1,"value":"ab\ta"} │ +└──────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help/result.output index 759b18df2b..b559a1bf9d 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help/result.output @@ -46,6 +46,10 @@ Options: Parameter names and values in json unicode format, binary string parameter values are base64-encoded raw Binary value with no transformations or parsing, parameter name is set by an "stdin-par" option + csv + Parameter names and values in csv format + tsv + Parameter names and values in tsv format Default: "json-unicode". 2. Framing: defines how parameter sets are delimited on the stdin. Available options: no-framing @@ -53,6 +57,8 @@ Options: newline-delimited Newline character delimits parameter sets on stdin and triggers processing in accordance to "batch" option Default: "no-framing". + --columns STR String with column names that replaces header. It is assumed that there is no header in the file + --skip-rows NUM Number of header rows to skip (not including the row of column names, if any) (default: 0) --stdin-par STRING Parameter name on stdin, required/applicable when stdin-format implies values only. --batch STRING Batching mode for stdin parameters processing. Available options: iterative diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help_ex/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help_ex/result.output index 65c5b43def..8d4afbc1f4 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help_ex/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help_ex/result.output @@ -58,6 +58,10 @@ Options: Parameter names and values in json unicode format, binary string parameter values are base64-encoded raw Binary value with no transformations or parsing, parameter name is set by an "stdin-par" option + csv + Parameter names and values in csv format + tsv + Parameter names and values in tsv format Default: "json-unicode". 2. Framing: defines how parameter sets are delimited on the stdin. Available options: no-framing @@ -65,6 +69,8 @@ Options: newline-delimited Newline character delimits parameter sets on stdin and triggers processing in accordance to "batch" option Default: "no-framing". + --columns STR String with column names that replaces header. It is assumed that there is no header in the file + --skip-rows NUM Number of header rows to skip (not including the row of column names, if any) (default: 0) --stdin-par STRING Parameter name on stdin, required/applicable when stdin-format implies values only. --batch STRING Batching mode for stdin parameters processing. Available options: iterative diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_data_/result.output new file mode 100644 index 0000000000..d53efa435f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_data_/result.output @@ -0,0 +1,5 @@ +┌────┐ +│ a │ +├────┤ +│ 12 │ +└────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_scan_/result.output new file mode 100644 index 0000000000..d53efa435f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_scan_/result.output @@ -0,0 +1,5 @@ +┌────┐ +│ a │ +├────┤ +│ 12 │ +└────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_list/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list_data_/result.output index 97875fb396..97875fb396 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_list/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_list/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list_scan_/result.output index 97875fb396..97875fb396 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_list/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_multiple_files/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files_data_/result.output index 352b3e5c6c..352b3e5c6c 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_multiple_files/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_multiple_files/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files_scan_/result.output index 352b3e5c6c..352b3e5c6c 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_multiple_files/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_script_from_file/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file_data_/result.output index def6611f58..def6611f58 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_script_from_file/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_script_from_file/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file_scan_/result.output index def6611f58..def6611f58 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_script_from_file/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_struct/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct_data_/result.output index 0ed57334ae..0ed57334ae 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_struct/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_struct/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct_scan_/result.output index 0ed57334ae..0ed57334ae 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_struct/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint32/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32_data_/result.output index 6c13a7ac45..6c13a7ac45 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint32/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint32/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32_scan_/result.output index 6c13a7ac45..6c13a7ac45 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint32/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint64_and_string/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string_data_/result.output index b1f9f97865..b1f9f97865 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint64_and_string/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint64_and_string/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string_scan_/result.output index b1f9f97865..b1f9f97865 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint64_and_string/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_data_/result.output new file mode 100644 index 0000000000..c25ecea164 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_data_/result.output @@ -0,0 +1,15 @@ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└──────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_scan_/result.output new file mode 100644 index 0000000000..c25ecea164 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_scan_/result.output @@ -0,0 +1,15 @@ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└──────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_data_/result.output new file mode 100644 index 0000000000..c25ecea164 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_data_/result.output @@ -0,0 +1,15 @@ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└──────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_scan_/result.output new file mode 100644 index 0000000000..c25ecea164 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_scan_/result.output @@ -0,0 +1,15 @@ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└──────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_data_/result.output new file mode 100644 index 0000000000..8a47cb4d6f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_data_/result.output @@ -0,0 +1,15 @@ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line1","Line2","Line3"] │ +└───────────────────────────┘ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line4","Line5","Line6"] │ +└───────────────────────────┘ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line7","Line8","Line9"] │ +└───────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_scan_/result.output new file mode 100644 index 0000000000..8a47cb4d6f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_scan_/result.output @@ -0,0 +1,15 @@ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line1","Line2","Line3"] │ +└───────────────────────────┘ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line4","Line5","Line6"] │ +└───────────────────────────┘ +┌───────────────────────────┐ +│ s │ +├───────────────────────────┤ +│ ["Line7","Line8","Line9"] │ +└───────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_data_/result.output new file mode 100644 index 0000000000..c25ecea164 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_data_/result.output @@ -0,0 +1,15 @@ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└──────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_scan_/result.output new file mode 100644 index 0000000000..c25ecea164 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_scan_/result.output @@ -0,0 +1,15 @@ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"}] │ +└──────────────────────────────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────────────────┐ +│ arr │ +├──────────────────────────────────────────────────────────────────┤ +│ [{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└──────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_data_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_data_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_scan_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_scan_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_data_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_data_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_scan_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_scan_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_full/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw_data_/result.output index 288994848a..288994848a 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_full/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_full/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw_scan_/result.output index 288994848a..288994848a 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_full/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_data_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_data_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_scan_/result.output new file mode 100644 index 0000000000..5681171a94 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_scan_/result.output @@ -0,0 +1,5 @@ +┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ arr │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ [{"id":1,"s":"Line1"},{"id":2,"s":"Line2"},{"id":3,"s":"Line3"},{"id":4,"s":"Line4"},{"id":5,"s":"Line5"},{"id":6,"s":"Line6"},{"id":7,"s":"Line7"},{"id":8,"s":"Line8"},{"id":9,"s":"Line9"}] │ +└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_data_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_data_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_scan_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_scan_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_data_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_data_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_scan_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_scan_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_data_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_data_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_scan_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_scan_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_data_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_data_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_scan_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_scan_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_data_/result.output new file mode 100644 index 0000000000..ccf5285487 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_data_/result.output @@ -0,0 +1,5 @@ +┌────────────────┬──────────────┬─────┐ +│ s │ date │ val │ +├────────────────┼──────────────┼─────┤ +│ "Some_s,tring" │ "2000-09-01" │ 100 │ +└────────────────┴──────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_scan_/result.output new file mode 100644 index 0000000000..ccf5285487 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_scan_/result.output @@ -0,0 +1,5 @@ +┌────────────────┬──────────────┬─────┐ +│ s │ date │ val │ +├────────────────┼──────────────┼─────┤ +│ "Some_s,tring" │ "2000-09-01" │ 100 │ +└────────────────┴──────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_different_sources/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json_data_/result.output index 1f80932ec1..1f80932ec1 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_different_sources/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_different_sources/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json_scan_/result.output index 1f80932ec1..1f80932ec1 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_different_sources/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_data_/result.output new file mode 100644 index 0000000000..c7dc74d043 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_data_/result.output @@ -0,0 +1,5 @@ +┌─────────────────┬──────────────┬─────┐ +│ s │ date │ val │ +├─────────────────┼──────────────┼─────┤ +│ "Some_s\ttring" │ "2000-09-01" │ 100 │ +└─────────────────┴──────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_scan_/result.output new file mode 100644 index 0000000000..c7dc74d043 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_scan_/result.output @@ -0,0 +1,5 @@ +┌─────────────────┬──────────────┬─────┐ +│ s │ date │ val │ +├─────────────────┼──────────────┼─────┤ +│ "Some_s\ttring" │ "2000-09-01" │ 100 │ +└─────────────────┴──────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_data_/result.output new file mode 100644 index 0000000000..973d1533bc --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_data_/result.output @@ -0,0 +1,15 @@ +┌─────────────┬─────┐ +│ s │ num │ +├─────────────┼─────┤ +│ "Some text" │ 1 │ +└─────────────┴─────┘ +┌─────────────────────────────────┬─────┐ +│ s │ num │ +├─────────────────────────────────┼─────┤ +│ "Строка 1\nСтрока2" │ 2 │ +└─────────────────────────────────┴─────┘ +┌───────────┬─────┐ +│ s │ num │ +├───────────┼─────┤ +│ "Abacaba" │ 3 │ +└───────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_scan_/result.output new file mode 100644 index 0000000000..973d1533bc --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_scan_/result.output @@ -0,0 +1,15 @@ +┌─────────────┬─────┐ +│ s │ num │ +├─────────────┼─────┤ +│ "Some text" │ 1 │ +└─────────────┴─────┘ +┌─────────────────────────────────┬─────┐ +│ s │ num │ +├─────────────────────────────────┼─────┤ +│ "Строка 1\nСтрока2" │ 2 │ +└─────────────────────────────────┴─────┘ +┌───────────┬─────┐ +│ s │ num │ +├───────────┼─────┤ +│ "Abacaba" │ 3 │ +└───────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_data_/result.output new file mode 100644 index 0000000000..973d1533bc --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_data_/result.output @@ -0,0 +1,15 @@ +┌─────────────┬─────┐ +│ s │ num │ +├─────────────┼─────┤ +│ "Some text" │ 1 │ +└─────────────┴─────┘ +┌─────────────────────────────────┬─────┐ +│ s │ num │ +├─────────────────────────────────┼─────┤ +│ "Строка 1\nСтрока2" │ 2 │ +└─────────────────────────────────┴─────┘ +┌───────────┬─────┐ +│ s │ num │ +├───────────┼─────┤ +│ "Abacaba" │ 3 │ +└───────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_scan_/result.output new file mode 100644 index 0000000000..973d1533bc --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_scan_/result.output @@ -0,0 +1,15 @@ +┌─────────────┬─────┐ +│ s │ num │ +├─────────────┼─────┤ +│ "Some text" │ 1 │ +└─────────────┴─────┘ +┌─────────────────────────────────┬─────┐ +│ s │ num │ +├─────────────────────────────────┼─────┤ +│ "Строка 1\nСтрока2" │ 2 │ +└─────────────────────────────────┴─────┘ +┌───────────┬─────┐ +│ s │ num │ +├───────────┼─────┤ +│ "Abacaba" │ 3 │ +└───────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data_framing/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw_data_/result.output index 8200beba35..8200beba35 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data_framing/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data_framing/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw_scan_/result.output index 8200beba35..8200beba35 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data_framing/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_data_/result.output new file mode 100644 index 0000000000..973d1533bc --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_data_/result.output @@ -0,0 +1,15 @@ +┌─────────────┬─────┐ +│ s │ num │ +├─────────────┼─────┤ +│ "Some text" │ 1 │ +└─────────────┴─────┘ +┌─────────────────────────────────┬─────┐ +│ s │ num │ +├─────────────────────────────────┼─────┤ +│ "Строка 1\nСтрока2" │ 2 │ +└─────────────────────────────────┴─────┘ +┌───────────┬─────┐ +│ s │ num │ +├───────────┼─────┤ +│ "Abacaba" │ 3 │ +└───────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_scan_/result.output new file mode 100644 index 0000000000..973d1533bc --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_scan_/result.output @@ -0,0 +1,15 @@ +┌─────────────┬─────┐ +│ s │ num │ +├─────────────┼─────┤ +│ "Some text" │ 1 │ +└─────────────┴─────┘ +┌─────────────────────────────────┬─────┐ +│ s │ num │ +├─────────────────────────────────┼─────┤ +│ "Строка 1\nСтрока2" │ 2 │ +└─────────────────────────────────┴─────┘ +┌───────────┬─────┐ +│ s │ num │ +├───────────┼─────┤ +│ "Abacaba" │ 3 │ +└───────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_data_/result.output new file mode 100644 index 0000000000..d53efa435f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_data_/result.output @@ -0,0 +1,5 @@ +┌────┐ +│ a │ +├────┤ +│ 12 │ +└────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_scan_/result.output new file mode 100644 index 0000000000..d53efa435f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_scan_/result.output @@ -0,0 +1,5 @@ +┌────┐ +│ a │ +├────┤ +│ 12 │ +└────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_data_/result.output new file mode 100644 index 0000000000..d53efa435f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_data_/result.output @@ -0,0 +1,5 @@ +┌────┐ +│ a │ +├────┤ +│ 12 │ +└────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_scan_/result.output new file mode 100644 index 0000000000..d53efa435f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_scan_/result.output @@ -0,0 +1,5 @@ +┌────┐ +│ a │ +├────┤ +│ 12 │ +└────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_data_/result.output new file mode 100644 index 0000000000..d53efa435f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_data_/result.output @@ -0,0 +1,5 @@ +┌────┐ +│ a │ +├────┤ +│ 12 │ +└────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_scan_/result.output new file mode 100644 index 0000000000..d53efa435f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_scan_/result.output @@ -0,0 +1,5 @@ +┌────┐ +│ a │ +├────┤ +│ 12 │ +└────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_mix_json_and_binary/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary_data_/result.output index 5b4b5b9fda..5b4b5b9fda 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_mix_json_and_binary/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_mix_json_and_binary/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary_scan_/result.output index 5b4b5b9fda..5b4b5b9fda 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_mix_json_and_binary/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_data_/result.output new file mode 100644 index 0000000000..66645b3ade --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_data_/result.output @@ -0,0 +1,5 @@ +┌────────────────┬─────┐ +│ s │ val │ +├────────────────┼─────┤ +│ "Some_s,tring" │ 32 │ +└────────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_scan_/result.output new file mode 100644 index 0000000000..66645b3ade --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_scan_/result.output @@ -0,0 +1,5 @@ +┌────────────────┬─────┐ +│ s │ val │ +├────────────────┼─────┤ +│ "Some_s,tring" │ 32 │ +└────────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_simple_json/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json_data_/result.output index 030b389b08..030b389b08 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_simple_json/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_simple_json/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json_scan_/result.output index 030b389b08..030b389b08 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_simple_json/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_data_/result.output new file mode 100644 index 0000000000..703d6430f7 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_data_/result.output @@ -0,0 +1,5 @@ +┌─────────────────┬─────┐ +│ s │ val │ +├─────────────────┼─────┤ +│ "Some_s\ttring" │ 32 │ +└─────────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_scan_/result.output new file mode 100644 index 0000000000..703d6430f7 --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_scan_/result.output @@ -0,0 +1,5 @@ +┌─────────────────┬─────┐ +│ s │ val │ +├─────────────────┼─────┤ +│ "Some_s\ttring" │ 32 │ +└─────────────────┴─────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_data_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_data_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_scan_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_scan_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_data_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_data_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_scan_/result.output new file mode 100644 index 0000000000..a069d456de --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_scan_/result.output @@ -0,0 +1,15 @@ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 1 │ 1 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 2 │ 2 │ +└───┴───┘ +┌───┬───┐ +│ a │ b │ +├───┼───┤ +│ 3 │ 3 │ +└───┴───┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_data_/result.output new file mode 100644 index 0000000000..126ddd550f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_data_/result.output @@ -0,0 +1,5 @@ +┌─────────────────────────┐ +│ s │ +├─────────────────────────┤ +│ {"id":1,"value":"ab,a"} │ +└─────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_scan_/result.output new file mode 100644 index 0000000000..126ddd550f --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_scan_/result.output @@ -0,0 +1,5 @@ +┌─────────────────────────┐ +│ s │ +├─────────────────────────┤ +│ {"id":1,"value":"ab,a"} │ +└─────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_unnamed_json/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json_data_/result.output index f544f87204..f544f87204 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_unnamed_json/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_unnamed_json/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json_scan_/result.output index f544f87204..f544f87204 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_unnamed_json/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw_data_/result.output index 8ec00b9d1a..8ec00b9d1a 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw_data_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw_scan_/result.output index 8ec00b9d1a..8ec00b9d1a 100644 --- a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data/result.output +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw_scan_/result.output diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_data_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_data_/result.output new file mode 100644 index 0000000000..d808b68ece --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_data_/result.output @@ -0,0 +1,5 @@ +┌──────────────────────────┐ +│ s │ +├──────────────────────────┤ +│ {"id":1,"value":"ab\ta"} │ +└──────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_scan_/result.output b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_scan_/result.output new file mode 100644 index 0000000000..d808b68ece --- /dev/null +++ b/ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_scan_/result.output @@ -0,0 +1,5 @@ +┌──────────────────────────┐ +│ s │ +├──────────────────────────┤ +│ {"id":1,"value":"ab\ta"} │ +└──────────────────────────┘ diff --git a/ydb/tests/functional/ydb_cli/test_ydb_scripting.py b/ydb/tests/functional/ydb_cli/test_ydb_scripting.py index da54fe4a7b..60984a439a 100644 --- a/ydb/tests/functional/ydb_cli/test_ydb_scripting.py +++ b/ydb/tests/functional/ydb_cli/test_ydb_scripting.py @@ -7,6 +7,7 @@ from ydb.tests.oss.ydb_sdk_import import ydb import os import logging +import pytest logger = logging.getLogger(__name__) @@ -354,6 +355,7 @@ class TestExecuteScriptWithParamsFromJson(BaseTestScriptingServiceWithDatabase): return self.script_from_file(["yql"]) +@pytest.mark.parametrize("command", ["scripting", "stream"]) class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase): @classmethod def setup_class(cls): @@ -368,6 +370,22 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) with open(filename, "w") as file: file.write(data) + @staticmethod + def get_delim(format): + if format == "csv": + return "," + elif format == "tsv": + return "\t" + raise RuntimeError("Unknown format: {}".format(format)) + + @staticmethod + def get_command(name): + if name == "scripting": + return ["scripting", "yql"] + elif name == "stream": + return ["yql"] + raise RuntimeError("Unknown command name: {}".format(name)) + @classmethod def get_stdin(cls): cls.stdin = open("stdin.txt", "r") @@ -382,37 +400,54 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) ' "s": "Some_string",\n' \ ' "val": 32\n' \ '}' - script = "DECLARE $s AS Utf8; "\ - "DECLARE $val AS Uint64; "\ + script = "DECLARE $s AS Utf8; " \ + "DECLARE $val AS Uint64; " \ "SELECT $s AS s, $val AS val; " self.write_data(param_data) output = self.execute_ydb_cli_command_with_db(command + ["-s", script], self.get_stdin()) self.close_stdin() return self.canonical_result(output) - def text_data(self, command): + def simple_csv_tsv(self, command, format): + param_data = 's{0}val\n' \ + '\"Some_s{0}tring\"{0}32' + param_data = param_data.format(self.get_delim(format)) + script = "DECLARE $s AS Utf8; " \ + "DECLARE $val AS Uint64; " \ + "SELECT $s AS s, $val AS val; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-format", format], self.get_stdin()) + self.close_stdin() + return self.canonical_result(output) + + def stdin_par_raw(self, command): param_data = 'Line1\n' \ 'Line2\n' \ 'Line3\n' script = "DECLARE $s AS Utf8; " \ "SELECT $s AS s; " self.write_data(param_data) - output = self.execute_ydb_cli_command_with_db( - command + ["-s", script, "--stdin-format", "raw", "--stdin-par", "s"], - self.get_stdin() - ) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-format", "raw", "--stdin-par", "s"], self.get_stdin()) self.close_stdin() return self.canonical_result(output) - def unnamed_json(self, command): + def stdin_par_json(self, command): param_data = "[1, 2, 3, 4]" - script = "DECLARE $arr AS List<Uint64>; "\ + script = "DECLARE $arr AS List<Uint64>; " \ "SELECT $arr AS arr; " self.write_data(param_data) - output = self.execute_ydb_cli_command_with_db( - command + ["-s", script, "--stdin-par", "arr"], - self.get_stdin() - ) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-par", "arr"], self.get_stdin()) + self.close_stdin() + return self.canonical_result(output) + + def stdin_par_csv_tsv(self, command, format): + param_data = 'id{0}value\n' \ + '1{0}"ab{0}a"' + param_data = param_data.format(self.get_delim(format)) + script = "DECLARE $s AS Struct<id:UInt64,value:Utf8>; " \ + "SELECT $s AS s; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-format", format, "--stdin-par", "s"], self.get_stdin()) self.close_stdin() return self.canonical_result(output) @@ -430,14 +465,12 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) "SELECT $s AS s, $date AS date, $val AS val; " self.write_data(param_data1) self.write_data(param_data2, "params.json") - output = self.execute_ydb_cli_command_with_db( - command + ["-s", script, "--stdin-par", "s", "--stdin-format", "raw", "--param-file", "params.json"], - self.get_stdin() - ) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-par", "s", "--stdin-format", "raw", "--param-file", "params.json"], + self.get_stdin()) self.close_stdin() return self.canonical_result(output) - def different_sources(self, command): + def different_sources_json(self, command): param_data1 = '{\n' \ ' "s": "Строка utf-8"\n' \ '}' @@ -450,14 +483,29 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) "SELECT $s AS s, $date AS date, $val AS val; " self.write_data(param_data1) self.write_data(param_data2, "params.json") - output = self.execute_ydb_cli_command_with_db( - command + ["-s", script, "--param-file", "params.json", "--param", "$val=100"], - self.get_stdin() - ) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--param-file", "params.json", "--param", "$val=100"], self.get_stdin()) self.close_stdin() return self.canonical_result(output) - def framing_newline_delimited(self, command): + def different_sources_csv_tsv(self, command, format): + param_data1 = 's\n' \ + '\"Some_s{0}tring\"' + param_data1 = param_data1.format(self.get_delim(format)) + param_data2 = '{\n' \ + ' "date": "2000-09-01"\n' \ + '}' + script = "DECLARE $s AS Utf8; " \ + "DECLARE $date AS Date; " \ + "DECLARE $val AS Uint64; " \ + "SELECT $s AS s, $date AS date, $val AS val; " + self.write_data(param_data1) + self.write_data(param_data2, "params.json") + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-format", format, "--param-file", "params.json", "--param", "$val=100"], + self.get_stdin()) + self.close_stdin() + return self.canonical_result(output) + + def framing_newline_delimited_json(self, command): param_data = '{"s": "Some text", "num": 1}\n' \ '{"s": "Строка 1\\nСтрока2", "num": 2}\n' \ '{"s": "Abacaba", "num": 3}\n' @@ -465,14 +513,26 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) "DECLARE $num AS Uint64; " \ "SELECT $s AS s, $num AS num; " self.write_data(param_data) - output = self.execute_ydb_cli_command_with_db( - command + ["-s", script, "--stdin-format", "newline-delimited"], - self.get_stdin() - ) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-format", "newline-delimited"], self.get_stdin()) + self.close_stdin() + return self.canonical_result(output) + + def framing_newline_delimited_csv_tsv(self, command, format): + param_data = 's{0}num\n' \ + 'Some text{0}1\n' \ + '"Строка 1\nСтрока2"{0}2\n' \ + 'Abacaba{0}3\n' + param_data = param_data.format(self.get_delim(format)) + script = "DECLARE $s AS Utf8; " \ + "DECLARE $num AS Uint64; " \ + "SELECT $s AS s, $num AS num; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-format", format, "--stdin-format", "newline-delimited"], + self.get_stdin()) self.close_stdin() return self.canonical_result(output) - def text_data_framing(self, command): + def framing_newline_delimited_raw(self, command): param_data = 'Line1\n' \ 'Line2\n' \ 'Line3\n' @@ -486,7 +546,7 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) self.close_stdin() return self.canonical_result(output) - def batching_full(self, command): + def batching_full_raw(self, command): param_data = 'Line1\n' \ 'Line2\n' \ 'Line3\n' @@ -494,14 +554,13 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) "SELECT $s AS s; " self.write_data(param_data) output = self.execute_ydb_cli_command_with_db( - command + ["-s", script, "--stdin-format", "raw", "--stdin-par", "s", - "--stdin-format", "newline-delimited", "--batch", "full"], + command + ["-s", script, "--stdin-format", "raw", "--stdin-par", "s", "--stdin-format", "newline-delimited", "--batch", "full"], self.get_stdin() ) self.close_stdin() return self.canonical_result(output) - def batching_adaptive(self, command): + def batching_full_json(self, command): param_data = '{"s": "Line1", "id": 1}\n' \ '{"s": "Line2", "id": 2}\n' \ '{"s": "Line3", "id": 3}\n' \ @@ -511,8 +570,70 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) '{"s": "Line7", "id": 7}\n' \ '{"s": "Line8", "id": 8}\n' \ '{"s": "Line9", "id": 9}\n' - script = "DECLARE $arr AS List<Struct<s:Utf8, id:Uint64>>; " \ - "SELECT $arr AS arr; " + script = "DECLARE $arr as List<Struct<s:Utf8, id:Uint64>>; " \ + "SELECT $arr as arr; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db( + command + ["-s", script, "--stdin-par", "arr", "--stdin-format", "newline-delimited", "--batch", "full"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def batching_full_csv_tsv(self, command, format): + param_data = 's{0}id\n' \ + 'Line1{0}1\n' \ + 'Line2{0}2\n' \ + 'Line3{0}3\n' \ + 'Line4{0}4\n' \ + 'Line5{0}5\n' \ + 'Line6{0}6\n' \ + 'Line7{0}7\n' \ + 'Line8{0}8\n' \ + 'Line9{0}9' + param_data = param_data.format(self.get_delim(format)) + script = "DECLARE $arr as List<Struct<s:Utf8, id:Uint64>>; " \ + "SELECT $arr as arr; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db( + command + ["-s", script, "--stdin-format", format, "--stdin-par", "arr", "--stdin-format", "newline-delimited", "--batch", "full"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def batching_adaptive_raw(self, command): + param_data = 'Line1\n' \ + 'Line2\n' \ + 'Line3\n' \ + 'Line4\n' \ + 'Line5\n' \ + 'Line6\n' \ + 'Line7\n' \ + 'Line8\n' \ + 'Line9\n' + script = "DECLARE $s AS List<Utf8>; " \ + "SELECT $s AS s; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db( + command + ["-s", script, "--stdin-format", "raw", "--stdin-par", "s", "--stdin-format", "newline-delimited", "--batch", "adaptive", "--batch-max-delay", "0", "--batch-limit", "3"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def batching_adaptive_json(self, command): + param_data = '{"s": "Line1", "id": 1}\n' \ + '{"s": "Line2", "id": 2}\n' \ + '{"s": "Line3", "id": 3}\n' \ + '{"s": "Line4", "id": 4}\n' \ + '{"s": "Line5", "id": 5}\n' \ + '{"s": "Line6", "id": 6}\n' \ + '{"s": "Line7", "id": 7}\n' \ + '{"s": "Line8", "id": 8}\n' \ + '{"s": "Line9", "id": 9}\n' + script = "DECLARE $arr as List<Struct<s:Utf8, id:Uint64>>; " \ + "SELECT $arr as arr; " self.write_data(param_data) output = self.execute_ydb_cli_command_with_db( command + ["-s", script, "--stdin-par", "arr", "--stdin-format", "newline-delimited", @@ -522,7 +643,30 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) self.close_stdin() return self.canonical_result(output) - def ignore_excess_parameters(self, command): + def batching_adaptive_csv_tsv(self, command, format): + param_data = 's{0}id\n' \ + 'Line1{0}1\n' \ + 'Line2{0}2\n' \ + 'Line3{0}3\n' \ + 'Line4{0}4\n' \ + 'Line5{0}5\n' \ + 'Line6{0}6\n' \ + 'Line7{0}7\n' \ + 'Line8{0}8\n' \ + 'Line9{0}9' + param_data = param_data.format(self.get_delim(format)) + script = "DECLARE $arr as List<Struct<s:Utf8, id:Uint64>>; " \ + "SELECT $arr as arr; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db( + command + ["-s", script, "--stdin-format", format, "--stdin-par", "arr", "--stdin-format", "newline-delimited", + "--batch", "adaptive", "--batch-max-delay", "0", "--batch-limit", "3"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def ignore_excess_parameters_json(self, command): param_data = '{\n' \ ' "a": 12,\n' \ ' "b": 34' \ @@ -530,69 +674,168 @@ class TestExecuteScriptWithParamsFromStdin(BaseTestScriptingServiceWithDatabase) script = "DECLARE $a AS Uint64; " \ "SELECT $a AS a; " self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script], self.get_stdin()) + self.close_stdin() + return self.canonical_result(output) + + def ignore_excess_parameters_csv_tsv(self, command, format): + param_data = 'a{0}b\n' \ + '12{0}34\n' + param_data = param_data.format(self.get_delim(format)) + print(param_data) + script = "DECLARE $a AS Uint64; " \ + "SELECT $a AS a; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db(command + ["-s", script, "--stdin-format", format], self.get_stdin()) + self.close_stdin() + return self.canonical_result(output) + + def columns_bad_header(self, command, format): + param_data = 'x{0}y\n' \ + '1{0}1\n' \ + '2{0}2\n' \ + '3{0}3\n' + param_data = param_data.format(self.get_delim(format)) + script = "DECLARE $a AS Uint64; " \ + "DECLARE $b AS Uint64; " \ + "SELECT $a AS a, $b AS b; " + self.write_data(param_data) output = self.execute_ydb_cli_command_with_db( - command + ["-s", script], + command + ["-s", script, "--stdin-format", format, "--stdin-format", "newline-delimited", + "--columns", "a{0}b".format(self.get_delim(format)), "--skip-rows", "1"], self.get_stdin() ) self.close_stdin() return self.canonical_result(output) - def test_simple_json(self): - return self.simple_json(["scripting", "yql"]) + def columns_no_header(self, command, format): + param_data = '1{0}1\n' \ + '2{0}2\n' \ + '3{0}3\n' + param_data = param_data.format(self.get_delim(format)) + script = "DECLARE $a AS Uint64; " \ + "DECLARE $b AS Uint64; " \ + "SELECT $a AS a, $b AS b; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db( + command + ["-s", script, "--stdin-format", format, "--stdin-format", "newline-delimited", + "--columns", "a{0}b".format(self.get_delim(format))], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) - def test_text_data(self): - return self.text_data(["scripting", "yql"]) + def skip_rows(self, command, format): + param_data = 'a{0}b\n' \ + 'x{0}x\n' \ + 'x{0}x\n' \ + 'x{0}x\n' \ + '1{0}1\n' \ + '2{0}2\n' \ + '3{0}3\n' + param_data = param_data.format(self.get_delim(format)) + script = "DECLARE $a AS Uint64; " \ + "DECLARE $b AS Uint64; " \ + "SELECT $a AS a, $b AS b; " + self.write_data(param_data) + output = self.execute_ydb_cli_command_with_db( + command + ["-s", script, "--stdin-format", format, "--stdin-format", "newline-delimited", "--skip-rows", "3"], self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) - def test_unnamed_json(self): - return self.unnamed_json(["scripting", "yql"]) + def test_simple_json(self, command): + return self.simple_json(self.get_command(command)) - def test_mix_json_and_binary(self): - return self.mix_json_and_binary(["scripting", "yql"]) + def test_simple_csv(self, command): + return self.simple_csv_tsv(self.get_command(command), "csv") - def test_different_sources(self): - return self.different_sources(["scripting", "yql"]) + def test_simple_tsv(self, command): + return self.simple_csv_tsv(self.get_command(command), "tsv") - def test_framing_newline_delimited(self): - return self.framing_newline_delimited(["scripting", "yql"]) + def test_stdin_par_raw(self, command): + return self.stdin_par_raw(self.get_command(command)) - def test_text_data_framing(self): - return self.text_data_framing(["scripting", "yql"]) + def test_stdin_par_json(self, command): + return self.stdin_par_json(self.get_command(command)) - def test_batching_full(self): - return self.batching_full(["scripting", "yql"]) + def test_stdin_par_csv(self, command): + return self.stdin_par_csv_tsv(self.get_command(command), "csv") - def test_batching_adaptive(self): - return self.batching_adaptive(["scripting", "yql"]) + def test_stdin_par_tsv(self, command): + return self.stdin_par_csv_tsv(self.get_command(command), "tsv") - def test_ignore_excess_parameters(self): - return self.ignore_excess_parameters(["scripting", "yql"]) + def test_mix_json_and_binary(self, command): + return self.mix_json_and_binary(self.get_command(command)) - def test_stream_simple_json(self): - return self.simple_json(["yql"]) + def test_different_sources_json(self, command): + return self.different_sources_json(self.get_command(command)) - def test_stream_text_data(self): - return self.text_data(["yql"]) + def test_different_sources_csv(self, command): + return self.different_sources_csv_tsv(self.get_command(command), "csv") - def test_stream_unnamed_json(self): - return self.unnamed_json(["yql"]) + def test_different_sources_tsv(self, command): + return self.different_sources_csv_tsv(self.get_command(command), "tsv") - def test_stream_mix_json_and_binary(self): - return self.mix_json_and_binary(["yql"]) + def test_framing_newline_delimited_json(self, command): + return self.framing_newline_delimited_json(self.get_command(command)) - def test_stream_different_sources(self): - return self.different_sources(["yql"]) + def test_framing_newline_delimited_csv(self, command): + return self.framing_newline_delimited_csv_tsv(self.get_command(command), "csv") - def test_stream_framing_newline_delimited(self): - return self.framing_newline_delimited(["yql"]) + def test_framing_newline_delimited_tsv(self, command): + return self.framing_newline_delimited_csv_tsv(self.get_command(command), "tsv") - def test_stream_text_data_framing(self): - return self.text_data_framing(["yql"]) + def test_framing_newline_delimited_raw(self, command): + return self.framing_newline_delimited_raw(self.get_command(command)) - def test_stream_batching_full(self): - return self.batching_full(["yql"]) + def test_batching_full_raw(self, command): + return self.batching_full_raw(self.get_command(command)) - def test_stream_batching_adaptive(self): - return self.batching_adaptive(["yql"]) + def test_batching_full_json(self, command): + return self.batching_full_json(self.get_command(command)) - def test_stream_ignore_excess_parameters(self): - return self.ignore_excess_parameters(["yql"]) + def test_batching_full_csv(self, command): + return self.batching_full_csv_tsv(self.get_command(command), "csv") + + def test_batching_full_tsv(self, command): + return self.batching_full_csv_tsv(self.get_command(command), "tsv") + + def test_batching_adaptive_raw(self, command): + return self.batching_adaptive_raw(self.get_command(command)) + + def test_batching_adaptive_json(self, command): + return self.batching_adaptive_json(self.get_command(command)) + + def test_batching_adaptive_csv(self, command): + return self.batching_adaptive_csv_tsv(self.get_command(command), "csv") + + def test_batching_adaptive_tsv(self, command): + return self.batching_adaptive_csv_tsv(self.get_command(command), "tsv") + + def test_ignore_excess_parameters_json(self, command): + return self.ignore_excess_parameters_json(self.get_command(command)) + + def test_ignore_excess_parameters_csv(self, command): + return self.ignore_excess_parameters_csv_tsv(self.get_command(command), "csv") + + def test_ignore_excess_parameters_tsv(self, command): + return self.ignore_excess_parameters_csv_tsv(self.get_command(command), "tsv") + + def test_columns_bad_header_csv(self, command): + return self.columns_bad_header(self.get_command(command), "csv") + + def test_columns_bad_header_tsv(self, command): + return self.columns_bad_header(self.get_command(command), "tsv") + + def test_columns_no_header_csv(self, command): + return self.columns_no_header(self.get_command(command), "csv") + + def test_columns_no_header_tsv(self, command): + return self.columns_no_header(self.get_command(command), "tsv") + + def test_skip_rows_csv(self, command): + return self.skip_rows(self.get_command(command), "csv") + + def test_skip_rows_tsv(self, command): + return self.skip_rows(self.get_command(command), "tsv") diff --git a/ydb/tests/functional/ydb_cli/test_ydb_table.py b/ydb/tests/functional/ydb_cli/test_ydb_table.py index d9fdd89192..442b12ff08 100644 --- a/ydb/tests/functional/ydb_cli/test_ydb_table.py +++ b/ydb/tests/functional/ydb_cli/test_ydb_table.py @@ -7,6 +7,7 @@ from ydb.tests.oss.ydb_sdk_import import ydb import os import logging +import pytest logger = logging.getLogger(__name__) @@ -232,6 +233,7 @@ class TestExecuteQueryWithFormats(BaseTestTableService): return self.execute_read_table('tsv') +@pytest.mark.parametrize("query_type", ["data", "scan"]) class TestExecuteQueryWithParamsFromJson(BaseTestTableService): @classmethod def setup_class(cls): @@ -351,49 +353,29 @@ class TestExecuteQueryWithParamsFromJson(BaseTestTableService): ) return self.canonical_result(output) - def test_data_query_uint32(self): - return self.uint32("data") + def test_uint32(self, query_type): + return self.uint32(query_type) - def test_data_query_uint64_and_string(self): - return self.uint64_and_string("data") + def test_uint64_and_string(self, query_type): + return self.uint64_and_string(query_type) - def test_data_query_list(self): - return self.list("data") + def test_list(self, query_type): + return self.list(query_type) - def test_data_query_struct(self): - return self.struct("data") + def test_struct(self, query_type): + return self.struct(query_type) - def test_data_query_multiple_files(self): - return self.multiple_files("data") + def test_multiple_files(self, query_type): + return self.multiple_files(query_type) - def test_data_ignore_excess_parameters(self): - return self.ignore_excess_parameters("data") + def test_ignore_excess_parameters(self, query_type): + return self.ignore_excess_parameters(query_type) - def test_data_query_script_from_file(self): - return self.script_from_file("data") - - def test_scan_query_uint32(self): - return self.uint32("scan") - - def test_scan_query_uint64_and_string(self): - return self.uint64_and_string("scan") - - def test_scan_query_list(self): - return self.list("scan") - - def test_scan_query_struct(self): - return self.struct("scan") - - def test_scan_query_multiple_files(self): - return self.multiple_files("scan") - - def test_scan_ignore_excess_parameters(self): - return self.ignore_excess_parameters("scan") - - def test_scan_query_script_from_file(self): - return self.script_from_file("scan") + def test_script_from_file(self, query_type): + return self.script_from_file(query_type) +@pytest.mark.parametrize("query_type", ["data", "scan"]) class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): @classmethod def setup_class(cls): @@ -408,6 +390,14 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): with open(filename, "w") as file: file.write(data) + @staticmethod + def get_delim(format): + if format == "csv": + return "," + elif format == "tsv": + return "\t" + raise RuntimeError("Unknown format: {}".format(format)) + @classmethod def get_stdin(cls): cls.stdin = open("stdin.txt", "r") @@ -430,7 +420,20 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def text_data(self, query_type): + def simple_csv_tsv(self, query_type, format): + param_data = 's{0}val\n' \ + '\"Some_s{0}tring\"{0}32' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $s AS Utf8; "\ + "DECLARE $val AS Uint64; "\ + "SELECT $s AS s, $val AS val; " + self.write_data(param_data) + output = self.execute_ydb_cli_command(["table", "query", "execute", "-t", query_type, + "-q", query, "--stdin-format", format], self.get_stdin()) + self.close_stdin() + return self.canonical_result(output) + + def stdin_par_raw(self, query_type): param_data = 'Line1\n' \ 'Line2\n' \ 'Line3\n' @@ -444,7 +447,7 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def unnamed_json(self, query_type): + def stdin_par_json(self, query_type): param_data = "[1, 2, 3, 4]" query = "DECLARE $arr AS List<Uint64>; "\ "SELECT $arr AS arr; " @@ -456,6 +459,20 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) + def stdin_par_csv_tsv(self, query_type, format): + param_data = 'id{0}value\n' \ + '1{0}"ab{0}a"' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $s AS Struct<id:UInt64,value:Utf8>; " \ + "SELECT $s AS s; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format, "--stdin-par", "s"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + def mix_json_and_binary(self, query_type): param_data1 = 'Строка номер 1\n' \ 'String number 2\n' \ @@ -478,7 +495,7 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def different_sources(self, query_type): + def different_sources_json(self, query_type): param_data1 = '{\n' \ ' "s": "Строка utf-8"\n' \ '}' @@ -498,7 +515,27 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def framing_newline_delimited(self, query_type): + def different_sources_csv_tsv(self, query_type, format): + param_data1 = 's\n' \ + '\"Some_s{0}tring\"' + param_data1 = param_data1.format(self.get_delim(format)) + param_data2 = '{\n' \ + ' "date": "2000-09-01"\n' \ + '}' + query = "DECLARE $s AS Utf8; " \ + "DECLARE $date AS Date; " \ + "DECLARE $val AS Uint64; " \ + "SELECT $s AS s, $date AS date, $val AS val; " + self.write_data(param_data1) + self.write_data(param_data2, "params.json") + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format, "--param-file", "params.json", "--param", "$val=100"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def framing_newline_delimited_json(self, query_type): param_data = '{"s": "Some text", "num": 1}\n' \ '{"s": "Строка 1\\nСтрока2", "num": 2}\n' \ '{"s": "Abacaba", "num": 3}\n' @@ -513,7 +550,24 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def text_data_framing(self, query_type): + def framing_newline_delimited_csv_tsv(self, query_type, format): + param_data = 's{0}num\n' \ + 'Some text{0}1\n' \ + '"Строка 1\nСтрока2"{0}2\n' \ + 'Abacaba{0}3\n' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $s AS Utf8; " \ + "DECLARE $num AS Uint64; " \ + "SELECT $s AS s, $num AS num; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format, "--stdin-format", "newline-delimited"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def framing_newline_delimited_raw(self, query_type): param_data = 'Line1\n' \ 'Line2\n' \ 'Line3\n' @@ -528,7 +582,7 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def batching_full(self, query_type): + def batching_full_raw(self, query_type): param_data = 'Line1\n' \ 'Line2\n' \ 'Line3\n' @@ -543,7 +597,72 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def batching_adaptive(self, query_type): + def batching_full_json(self, query_type): + param_data = '{"s": "Line1", "id": 1}\n' \ + '{"s": "Line2", "id": 2}\n' \ + '{"s": "Line3", "id": 3}\n' \ + '{"s": "Line4", "id": 4}\n' \ + '{"s": "Line5", "id": 5}\n' \ + '{"s": "Line6", "id": 6}\n' \ + '{"s": "Line7", "id": 7}\n' \ + '{"s": "Line8", "id": 8}\n' \ + '{"s": "Line9", "id": 9}\n' + query = "DECLARE $arr as List<Struct<s:Utf8, id:Uint64>>; " \ + "SELECT $arr as arr; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-par", "arr", + "--stdin-format", "newline-delimited", "--batch", "full"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def batching_full_csv_tsv(self, query_type, format): + param_data = 's{0}id\n' \ + 'Line1{0}1\n' \ + 'Line2{0}2\n' \ + 'Line3{0}3\n' \ + 'Line4{0}4\n' \ + 'Line5{0}5\n' \ + 'Line6{0}6\n' \ + 'Line7{0}7\n' \ + 'Line8{0}8\n' \ + 'Line9{0}9' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $arr as List<Struct<s:Utf8, id:Uint64>>; " \ + "SELECT $arr as arr; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format, "--stdin-par", "arr", + "--stdin-format", "newline-delimited", "--batch", "full"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def batching_adaptive_raw(self, query_type): + param_data = 'Line1\n' \ + 'Line2\n' \ + 'Line3\n' \ + 'Line4\n' \ + 'Line5\n' \ + 'Line6\n' \ + 'Line7\n' \ + 'Line8\n' \ + 'Line9\n' + query = "DECLARE $s AS List<Utf8>; " \ + "SELECT $s AS s; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", "raw", "--stdin-par", "s", + "--stdin-format", "newline-delimited", "--batch", "adaptive", "--batch-max-delay", "0", "--batch-limit", "3"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def batching_adaptive_json(self, query_type): param_data = '{"s": "Line1", "id": 1}\n' \ '{"s": "Line2", "id": 2}\n' \ '{"s": "Line3", "id": 3}\n' \ @@ -564,7 +683,30 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def ignore_excess_parameters(self, query_type): + def batching_adaptive_csv_tsv(self, query_type, format): + param_data = 's{0}id\n' \ + 'Line1{0}1\n' \ + 'Line2{0}2\n' \ + 'Line3{0}3\n' \ + 'Line4{0}4\n' \ + 'Line5{0}5\n' \ + 'Line6{0}6\n' \ + 'Line7{0}7\n' \ + 'Line8{0}8\n' \ + 'Line9{0}9' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $arr as List<Struct<s:Utf8, id:Uint64>>; " \ + "SELECT $arr as arr; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format, "--stdin-par", "arr", "--stdin-format", "newline-delimited", + "--batch", "adaptive", "--batch-max-delay", "0", "--batch-limit", "3"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def ignore_excess_parameters_json(self, query_type): param_data = '{\n' \ ' "a": 12,\n' \ ' "b": 34' \ @@ -579,62 +721,168 @@ class TestExecuteQueryWithParamsFromStdin(BaseTestTableService): self.close_stdin() return self.canonical_result(output) - def test_data_query_simple_json(self): - return self.simple_json("data") + def ignore_excess_parameters_csv_tsv(self, query_type, format): + param_data = 'a{0}b\n' \ + '12{0}34\n' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $a AS Uint64; " \ + "SELECT $a AS a; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def columns_bad_header(self, query_type, format): + param_data = 'x{0}y\n' \ + '1{0}1\n' \ + '2{0}2\n' \ + '3{0}3\n' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $a AS Uint64; " \ + "DECLARE $b AS Uint64; " \ + "SELECT $a AS a, $b AS b; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format, "--stdin-format", "newline-delimited", + "--columns", "a{0}b".format(self.get_delim(format)), "--skip-rows", "1"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def columns_no_header(self, query_type, format): + param_data = '1{0}1\n' \ + '2{0}2\n' \ + '3{0}3\n' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $a AS Uint64; " \ + "DECLARE $b AS Uint64; " \ + "SELECT $a AS a, $b AS b; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format, "--stdin-format", "newline-delimited", + "--columns", "a{0}b".format(self.get_delim(format))], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def skip_rows(self, query_type, format): + param_data = 'a{0}b\n' \ + 'x{0}x\n' \ + 'x{0}x\n' \ + 'x{0}x\n' \ + '1{0}1\n' \ + '2{0}2\n' \ + '3{0}3\n' + param_data = param_data.format(self.get_delim(format)) + query = "DECLARE $a AS Uint64; " \ + "DECLARE $b AS Uint64; " \ + "SELECT $a AS a, $b AS b; " + self.write_data(param_data) + output = self.execute_ydb_cli_command( + ["table", "query", "execute", "-t", query_type, "-q", query, "--stdin-format", format, "--stdin-format", "newline-delimited", + "--skip-rows", "3"], + self.get_stdin() + ) + self.close_stdin() + return self.canonical_result(output) + + def test_simple_json(self, query_type): + return self.simple_json(query_type) + + def test_simple_csv(self, query_type): + return self.simple_csv_tsv(query_type, "csv") + + def test_simple_tsv(self, query_type): + return self.simple_csv_tsv(query_type, "tsv") + + def test_stdin_par_raw(self, query_type): + return self.stdin_par_raw(query_type) + + def test_stdin_par_json(self, query_type): + return self.stdin_par_json(query_type) + + def test_stdin_par_csv(self, query_type): + return self.stdin_par_csv_tsv(query_type, "csv") + + def test_stdin_par_tsv(self, query_type): + return self.stdin_par_csv_tsv(query_type, "tsv") + + def test_mix_json_and_binary(self, query_type): + return self.mix_json_and_binary(query_type) + + def test_different_sources_json(self, query_type): + return self.different_sources_json(query_type) + + def test_different_sources_csv(self, query_type): + return self.different_sources_csv_tsv(query_type, "csv") + + def test_different_sources_tsv(self, query_type): + return self.different_sources_csv_tsv(query_type, "tsv") + + def test_framing_newline_delimited_json(self, query_type): + return self.framing_newline_delimited_json(query_type) + + def test_framing_newline_delimited_csv(self, query_type): + return self.framing_newline_delimited_csv_tsv(query_type, "csv") - def test_data_query_text_data(self): - return self.text_data("data") + def test_framing_newline_delimited_tsv(self, query_type): + return self.framing_newline_delimited_csv_tsv(query_type, "tsv") - def test_data_query_unnamed_json(self): - return self.unnamed_json("data") + def test_framing_newline_delimited_raw(self, query_type): + return self.framing_newline_delimited_raw(query_type) - def test_data_query_mix_json_and_binary(self): - return self.mix_json_and_binary("data") + def test_batching_full_raw(self, query_type): + return self.batching_full_raw(query_type) - def test_data_query_different_sources(self): - return self.different_sources("data") + def test_batching_full_json(self, query_type): + return self.batching_full_json(query_type) - def test_data_query_framing_newline_delimited(self): - return self.framing_newline_delimited("data") + def test_batching_full_csv(self, query_type): + return self.batching_full_csv_tsv(query_type, "csv") - def test_data_query_text_data_framing(self): - return self.text_data_framing("data") + def test_batching_full_tsv(self, query_type): + return self.batching_full_csv_tsv(query_type, "tsv") - def test_data_query_batching_full(self): - return self.batching_full("data") + def test_batching_adaptive_raw(self, query_type): + return self.batching_adaptive_raw(query_type) - def test_data_query_batching_adaptive(self): - return self.batching_adaptive("data") + def test_batching_adaptive_json(self, query_type): + return self.batching_adaptive_json(query_type) - def test_data_ignore_excess_parameters(self): - return self.ignore_excess_parameters("data") + def test_batching_adaptive_csv(self, query_type): + return self.batching_adaptive_csv_tsv(query_type, "csv") - def test_scan_query_simple_json(self): - return self.simple_json("scan") + def test_batching_adaptive_tsv(self, query_type): + return self.batching_adaptive_csv_tsv(query_type, "tsv") - def test_scan_query_text_data(self): - return self.text_data("scan") + def test_ignore_excess_parameters_json(self, query_type): + return self.ignore_excess_parameters_json(query_type) - def test_scan_query_unnamed_json(self): - return self.unnamed_json("scan") + def test_ignore_excess_parameters_csv(self, query_type): + return self.ignore_excess_parameters_csv_tsv(query_type, "csv") - def test_scan_query_mix_json_and_binary(self): - return self.mix_json_and_binary("scan") + def test_ignore_excess_parameters_tsv(self, query_type): + return self.ignore_excess_parameters_csv_tsv(query_type, "tsv") - def test_scan_query_different_sources(self): - return self.different_sources("scan") + def test_columns_bad_header_csv(self, query_type): + return self.columns_bad_header(query_type, "csv") - def test_scan_query_framing_newline_delimited(self): - return self.framing_newline_delimited("scan") + def test_columns_bad_header_tsv(self, query_type): + return self.columns_bad_header(query_type, "tsv") - def test_scan_query_text_data_framing(self): - return self.text_data_framing("scan") + def test_columns_no_header_csv(self, query_type): + return self.columns_no_header(query_type, "csv") - def test_scan_query_batching_full(self): - return self.batching_full("scan") + def test_columns_no_header_tsv(self, query_type): + return self.columns_no_header(query_type, "tsv") - def test_scan_query_batching_adaptive(self): - return self.batching_adaptive("scan") + def test_skip_rows_csv(self, query_type): + return self.skip_rows(query_type, "csv") - def test_scan_ignore_excess_parameters(self): - return self.ignore_excess_parameters("scan") + def test_skip_rows_tsv(self, query_type): + return self.skip_rows(query_type, "tsv") |