aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBulat Gayazov <brgayazov@yandex-team.ru>2023-08-16 23:34:38 +0300
committerbrgayazov <bulat@ydb.tech>2023-08-17 00:13:26 +0300
commit979c077893fc74f97bb08744e449987949aa9b4c (patch)
tree7c16b219d9a26b6937a4832409388cf6d97787fa
parent32404be331a9de127c532ee5c436306cea8492f9 (diff)
downloadydb-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
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_scripting.cpp4
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_scripting.h2
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_table.cpp6
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_table.h2
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_yql.cpp6
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_yql.h2
-rw-r--r--ydb/public/lib/ydb_cli/common/CMakeLists.darwin-x86_64.txt3
-rw-r--r--ydb/public/lib/ydb_cli/common/CMakeLists.linux-aarch64.txt3
-rw-r--r--ydb/public/lib/ydb_cli/common/CMakeLists.linux-x86_64.txt3
-rw-r--r--ydb/public/lib/ydb_cli/common/CMakeLists.windows-x86_64.txt3
-rw-r--r--ydb/public/lib/ydb_cli/common/csv_parser.cpp318
-rw-r--r--ydb/public/lib/ydb_cli/common/csv_parser.h28
-rw-r--r--ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp163
-rw-r--r--ydb/public/lib/ydb_cli/common/format.cpp6
-rw-r--r--ydb/public/lib/ydb_cli/common/parameter_stream.cpp41
-rw-r--r--ydb/public/lib/ydb_cli/common/parameter_stream.h35
-rw-r--r--ydb/public/lib/ydb_cli/common/parameters.cpp394
-rw-r--r--ydb/public/lib/ydb_cli/common/parameters.h36
-rw-r--r--ydb/public/lib/ydb_cli/common/ut/CMakeLists.darwin-x86_64.txt1
-rw-r--r--ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-aarch64.txt1
-rw-r--r--ydb/public/lib/ydb_cli/common/ut/CMakeLists.linux-x86_64.txt1
-rw-r--r--ydb/public/lib/ydb_cli/common/ut/CMakeLists.windows-x86_64.txt1
-rw-r--r--ydb/public/lib/ydb_cli/common/ut/ya.make1
-rw-r--r--ydb/public/lib/ydb_cli/common/ya.make3
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/result.json486
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_csv_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_adaptive/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_adaptive/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_json_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_adaptive/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_raw_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_adaptive_tsv_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_csv_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_json_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_raw_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_batching_full/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_batching_full_tsv_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_csv_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_bad_header_tsv_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_csv_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_columns_no_header_tsv_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_csv_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_json_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_different_sources/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_different_sources_tsv_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_csv_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_framing_newline_delimited/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_framing_newline_delimited/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_json_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_framing_newline_delimited/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data_framing/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_raw_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data_framing/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_framing_newline_delimited_tsv_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_csv_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_ignore_excess_parameters/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_ignore_excess_parameters/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_json_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_ignore_excess_parameters/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_ignore_excess_parameters/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_ignore_excess_parameters_tsv_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_ignore_excess_parameters/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_mix_json_and_binary_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_mix_json_and_binary/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_csv_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_json_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_simple_json/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_simple_tsv_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_csv_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_scripting_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_skip_rows_tsv_stream_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_csv_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_unnamed_json/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_json_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_unnamed_json/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw_scripting_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stream_text_data/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_raw_stream_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_text_data/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_scripting_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestExecuteScriptWithParamsFromStdin.test_stdin_par_tsv_stream_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help/result.output6
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_scripting.TestScriptingServiceHelp.test_help_ex/result.output6
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_ignore_excess_parameters_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_list/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_list_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_list/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_multiple_files/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_multiple_files_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_multiple_files/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_script_from_file/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_script_from_file_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_script_from_file/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_struct/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_struct_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_struct/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint32/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint32_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint32/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_data_query_uint64_and_string/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_uint64_and_string_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromJson.test_scan_query_uint64_and_string/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_csv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_json_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_raw_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_adaptive_tsv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_csv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_json_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_batching_full/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_raw_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_batching_full/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_batching_full_tsv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_csv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_bad_header_tsv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_csv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_columns_no_header_tsv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_csv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_different_sources/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_json_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_different_sources/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_different_sources_tsv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_csv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_json_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data_framing/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_raw_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data_framing/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_framing_newline_delimited_tsv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_csv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_json_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_ignore_excess_parameters_tsv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_mix_json_and_binary/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_mix_json_and_binary_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_mix_json_and_binary/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_csv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_simple_json/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_json_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_simple_json/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_simple_tsv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_csv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_data_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_skip_rows_tsv_scan_/result.output15
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_csv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_unnamed_json/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_json_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_unnamed_json/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw_data_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_data_query_text_data/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_raw_scan_/result.output (renamed from ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_scan_query_text_data/result.output)0
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_data_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/canondata/test_ydb_table.TestExecuteQueryWithParamsFromStdin.test_stdin_par_tsv_scan_/result.output5
-rw-r--r--ydb/tests/functional/ydb_cli/test_ydb_scripting.py395
-rw-r--r--ydb/tests/functional/ydb_cli/test_ydb_table.py414
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, &params, &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, &paramBuilder, &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> &params, const std::map<TString, TType>& paramTypes,
- EBinaryStringEncoding encoding, TParamsBuilder &paramBuilder, const TString& source) {
+void TCommandWithParameters::ApplyJsonParams(const std::map<TString, TString> &params, TParamsBuilder &paramBuilder) {
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")